激活函数sigmoid/tanh/relu区别

本文介绍了在训练神经网络中常用的三种激活函数——sigmoid、tanh和relu,详细解析了它们的数学公式及其取值范围。sigmoid和tanh属于饱和激活函数,而relu是非饱和激活函数,因其能避免梯度消失问题而更受青睐。

激活函数sigmoid/tanh/relu区别

解释

训练网络做非线性变换时,经常会使用到 sigmoid/tanh/relu 激活函数,来增加网络的表达能力,公式为:

sigmoid: y = 1 ( 1 + e − x ) \frac{1}{(1 + e^{-x})} (1+ex)1
y 取值 (0, 1)

tanh: y = ( e x − e − x ) ( e x + e − x ) \frac{(e^{x} - e^{-x})}{(e^x + e^{-x})} (ex+ex)(exex)
y 取值 (-1, 1)

relu: y = max(0, x)
y 取值 [0, +inf)

例子

import numpy as np
import matplotlib.pyplot as plt


def sigmoid(x):
    return 1 / (1 + np.exp(-x))


def tanh(x):
    return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))


def relu(x):
    return np.maximum(0, x)


def main():
    x = np.arange(-5, 5, 0.1)
    p1 = plt.subplot(311)
    y = sigmoid(x)
    p1.plot(x, y)
    p1.set_title('sigmoid')
    p1.axhline(0.5, ls='--', color='r')
    p1.axvline(ls='--', color='r')

    p2 = plt.subplot(312)
    y = tanh(x)
    p2.plot(x, y)
    p2.set_title('tanh')
    p2.axhline(ls='--', color='r')
    p2.axvline(ls='--', color='r')

    p3 = plt.subplot(313)
    y = relu(x)
    p3.plot(x, y)
    p3.set_title('relu')
    p3.axvline(ls='--', color='r')

    plt.subplots_adjust(hspace=1)
    plt.show()
}


if __name__ == '__main__':
    main()

在这里插入图片描述
其中 sigmoid 和 tanh 是饱和激活函数,relu 是非饱和激活函数,更常用,可以有效预防梯度消失和梯度爆炸。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值