对ReLU激活函数神经元死亡现象的理解

Relu激活函数导致 [ 神经元死亡 ] 的原因

神经网络接受异于常值范围的输入时,在反向传播过程中会产生大的梯度。这种大的梯度,会因梯度消失而永久关闭诸如 ReLU 的激活函数。

relu函数和sigmoid函数相比,虽然能够避免反向传播过程中的梯度消失、屏蔽负值、防止梯度饱和;

但是relu也有自身的缺陷,当学习率过大时会出现某些神经元永久死亡的现象,导致网络后期无法正常更新

原因分析:

ReLU 的全称是 Rectified Linear Unit,其函数图像如下图所示

异常输入杀死神经元

relu神经元死亡的一种角度解释_第1张图片

 

上图是一个典型的神经元。

 

 由于 ReLU 在 x>0x>0 时,导数恒为 1。因此在反向传播的过程中,不会因为导数连乘,而使得梯度特别小,以至于参数无法更新。在这个意义上,ReLU 确实避免了梯度消失问题。

下式是神经网络权重更新的公式,迭代就是不断重复做如图的公式:

其中,

:= 表示更新参数,J(ω)为代价函数(成本函数);

α表示学习率(learning rate),用来控制步长(step),即向下走一步的长度就是函数J(ω)对 求导(derivative),在代码中我们会使用dw表示这个结果。

当学习率过大时,会导致α*这一项很大,当 它大于ω时,更新后的ω’就会变为负值;

当权重参数变为负值时,输入网络的正值会和权重相乘后也会变为负值,负值通过ReLu后就会输出0;如果在后期有机会被更新为正值也不会出现大问题,但是当relu函数输出值为0时,relu的导数也为0,因此会导致后边Δω一直为0,进而导致ω一直不会被更新,因此会导致这个神经元永久性死亡(一直输出0)

如此看来,尽管 ReLU 解决了因激活函数导数的绝对值小于 1,在反向传播连乘的过程中迅速变小消失至 0 的问题,但由于它在输入为负的区段导数恒为零,而使得它对异常值特别敏感。这种异常值可能会使 ReLU 永久关闭,而杀死神经元。

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值