大家好,又见面了,我是你们的朋友全栈君。
梯度消失现象:在某些神经网络中,从后向前看,前面层梯度越来越小,后面的层比前面的层学习速率高。
梯度消失原因:
sigmoid函数导数图像
导数最大为0.25<1 权重初始值通常使用一个高斯分布所以|w|<1,所以 wjσ′(zj)<0.25 ,根据链式法则计算梯度越来越小。由于层数的增加,多个项相乘,势必就会导致不稳定的情况。 sigmoid激活函数的缺点: 1.计算量大,反向传播求梯度误差时,求导涉及除法2.反向传播容易出现梯度消失 解决方法: RELU函数 代替sigmoid函数 Alex在2012年提出的一种新的激活函数。该函数的提出很大程度的解决了BP算法在优化深层神经网络时的梯度耗散问题
优点: ∙ x>0 时,梯度恒为1,无梯度耗散问题,收敛快; ∙ 增大了网络的稀疏性。当x<0 时,该层的输出为0,训练完成后为0的神经元越多,稀疏性越大,提取出来的特征就约具有代表性,泛化能力越强。即得到同样的效果,真正起作用的神经元越少,网络的泛化性能越好 ∙ 运算量很小,训练时间少; 缺点: 如果后层的某一个梯度特别大,导致W更新以后变得特别大,导致该层的输入<0,输出为0,这时该层就会‘die’,没有更新。当学习率比较大时可能会有40%的神经元都会在训练开始就‘die’,因此需要对学习率进行一个好的设置。 由优缺点可知max(0,x) 函数为一个双刃剑,既可以形成网络的稀疏性,也可能造成有很多永远处于‘die’的神经元,需要tradeoff
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149027.html原文链接:https://javaforall.cn