ReLU为什么比Sigmoid效果好,有何不同?

非线性激活函数

• Sigmoid

• ReLU (Rectified Linear Unit)

ReLU: f(x)=max(0,x)显然,输入信号<0时,输出都是0;输入信号>0 的情况下,输出等于输入。

 

ReLU激活函数

ReLU 的优点:

• 分段线性函数。相比于sigmoid/tanh,ReLU 只需要一个阈值就可以得到激活值,而不用去算一大堆复杂的运算。

• 无饱和问题,明显减轻梯度消失问题

• 深度网络能够进行优化的关键

• 加快训练速度

相辅相成的,因为克服了梯度消失问题,所以训练才会快。

ReLU 的缺点:

  • 训练的时候很“脆弱”,很容易就“die”了。例如当一个非常大的梯度流过一个Relu神经元时,更新参数后,这个神经元再也不会对任何数据有激活现象了。实际操作中,如果你的learning rate 很大,那么很有可能你网络中的40%的神经元都“dead”了。 当然,如果你设置了一个合适的较小的learning rate,这个问题发生的情况其实也不会太频繁。


 

ReLU为什么比Sigmoid效果好,有何不同?

主要是因为它们gradient特性不同。sigmoidtanhgradient在饱和区域非常平缓,接近于0,很容易造成vanishing gradient的问题,减缓收敛速度。vanishing gradient在网络层数多的时候尤其明显,是加深网络结构的主要障碍之一。

相反,Relugradient大多数情况下是常数,有助于解决深层网络的收敛问题。Relu的另一个优势是在生物上的合理性,它是单边的,相比sigmoidtanh,更符合生物神经元的特征。

ReLU更容易学习优化。因为其分段线性性质,导致其前传,后传,求导都是分段线性。而传统的sigmoid函数,由于两端饱和,在传播过程中容易丢弃信息

而提出sigmoidtanh,主要是因为它们全程可导。还有表达区间问题,sigmoidtanh区间是01,或着-11,在表达上,尤其是输出层的表达上有优势。

此外:为什么引入Relu呢?

第一,采用sigmoid等函数,算激活函数时(指数运算),计算量大,反向传播求误差梯度时,求导涉及除法,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。

第二,对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失,参见 @Haofeng Li 答案的第三点),从而无法完成深层网络的训练。

第三,Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生(以及一些人的生物解释balabala)。

 

参考:

1. ReLU为什么比Sigmoid效果好?

2. Relu及其延伸

 

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值