激活函数

1.sigmoid激活函数

sigmoid函数公式定义:

s(x)=11+ex s ( x ) = 1 1 + e − x

其对x的倒数用自身表示为:
S(x)=ex(1+ex)2=s(x)(1s(x)) S ′ ( x ) = e − x ( 1 + e − x ) 2 = s ( x ) ∗ ( 1 − s ( x ) )

sigmoid函数图像:
sigmoid函数图像
(1).sigmoid函数将实数映射到[0,1]上,导数取值范围是[0,0.25]
(2).sigmoid函数适用于前向传播
(3).sigmoid作为激活函数存在的问题:
- 梯度饱和:当函数激活值接近0或1时,函数的剃度接近0.反向传播计算梯度时,每层残差接近0,计算出的剃度接近0.于是在参数微调过程中,会引起参数弥散问题,传到前几层的梯度会非常接近0,参数基本不会再更新,不利于深层网络的训练。
- 函数输出不是以0为中心。我们更偏向于激活函数输入0,输出也是0。
以上问题的存在导致参数收敛速度慢,严重影响函训练效率。
- 幂运算比较耗时。

2.tanh激活函数(双曲正切函数)

tanh函数定义:

tanh(x)=sinh(x)cosh(x)=exexex+ex t a n h ( x ) = s i n h ( x ) c o s h ( x ) = e x − e − x e x + e − x

tanh函数对x的倒数:
tanh(x)=1tanh2(x) t a n h ′ ( x ) = 1 − t a n h 2 ( x )

tanh函数图像:


(1).tanh函数将实数映射到[-1,1]上,导数取值范围是[0,1]
(2).取值范围满足零中心化,当输入为零时,tanh函数输出也为零,满足我们对激活函数的要求。
(3).tanh激活函数存在的问题:
- 梯度饱和。
- 幂运算比较耗时。

3.Relu激活函数(Rectified Linear Units)

Relu函数定义:

f(x)=max(0,x) f ( x ) = m a x ( 0 , x )

Relu函数对x的导数:
f(x)={0,1,x<=0x>0 f ′ ( x ) = { 0 , x<=0 1 , x>0

Relu函数图像:

(1).Relu计算复杂度低,不需要进行指数运算。
(2).收敛速度比sigmoid和tanh快,梯度不饱和,因此在反向传播中,减轻梯度弥散问题,神经网络前几层的参数可以很快更新,适用于后向传播。
(3).Relu作为激活函数存在的问题:
- Relu的输出不是“零中心”。
- Relu单元比较脆弱。当一个很大的梯度流过ReLU神经元的时候,可能会导致梯度更新到一种特别的状态,在这种状态下神经元将无法被其他任何数据点再次激活。如果这种情况发生,那么从此流过这个神经元的梯度将都变成0。通过合理设置学习率(学习率不要设置的太高),这种情况的发生概率会降低。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值