首页 > 编程知识 正文

relu完全解决了梯度消失问题,梯度消失解决方法

时间:2023-05-04 00:59:43 阅读:9362 作者:3369

坡度消失,坡度爆炸是什么? 目前,优化神经网络的方法都是基于反向传播的思想,损耗函数计算的误差通过梯度反向传播的方式指导深度网络权重的更新优化。 这有几个原因。 首先,深层网络由许多非线性层层叠而成,每个非线性层都可以视为来自非线性激活函数的非线性函数f(x ) f(x )。 因此,整个深层网络可以视为复合的非线性多元函数:

f(x )=fn )…F3(F2 ) F1 ) x ) W1B )……(f ) x )=fn )….F3 ) F2 ) F1 ) x ) W1B )……

我们的最终目的是希望这个多变量函数能很好地进行输入和输出的映射。

梯度消失和梯度爆炸实际上是一种情况。 例如,下图以三个隐藏层的单神经网络为例。

上图将各层网络激活后的输出设为fi(x ) fi(x )。 其中i i表示I ' role=' presentation ' style=' position : relative; ' ii层,x x是I ' role=' presentation ' style=' position 3360 relative;' ii层的输入,也就是第i1i层的输出,f f是激活函数,fi1=f(fi#x2217; wi 1 bi 1) role=' presentation ' style=' position : relative;' 缩写为fi1=f(fiwi1bi1) fi1=f(fiwi1bi1)、fi1=f (fiwi1) fi1=f (fiwi1) )。 BP算法基于梯度下降策略,按目标负梯度方向调整参数,参数更新为wwwww,给出学习率,得到w=lossww=LOS

∂ w 。如果要更新第二隐藏层的权值信息,根据链式求导法则,更新梯度信息: Δw1=∂Loss∂w2=∂Loss∂f4∂f4∂f3∂f3∂f2∂f2∂w2 Δ w 1 = ∂ L o s s ∂ w 2 = ∂ L o s s ∂ f 4 ∂ f 4 ∂ f 3 ∂ f 3 ∂ f 2 ∂ f 2 ∂ w 2 ,很容易看出来 ∂f4∂f3=w4f′(f3w4) ∂ f 4 ∂ f 3 = w 4 f ′ ( f 3 w 4 ) ,即对激活函数求导后与权重相乘, ∂f2∂w2=f1f′(f1w2) ∂ f 2 ∂ w 2 = f 1 f ′ ( f 1 w 2 ) ,即第二隐层的输入与激活函数求导后相乘。如果激活函数求导后与权重相乘的积大于1,那么层数增多的时候,最终的求出的梯度更新信息将以指数形式增加,即发生梯度爆炸,如果此部分小于1,那么随着层数增多,求出的梯度更新信息将会以指数形式衰减,即发生了梯度消失。下面以 sigmoid 激活函数为例来具体分析:

sigmoid 函数的导数曲线如下图所示:

可以看到,sigmoid 导数的最大值为0.25,通常 abs(w)<1 a b s ( w ) < 1 ,则上述分析中的激活函数的导数与权重的积小于0.25,前面的层比后面的层梯度变化更小,故变化更慢,从而引起了梯度消失问题。当权值过大,前面层比后面层梯度变化更快,则引起梯度爆炸问题。

sigmoid 时,消失和爆炸哪个更易发生?

因为 sigmoid 导数最大为1/4,故只有当 abs(w)>4 a b s ( w ) > 4 时才可能出现梯度爆炸,而最普遍发生的是梯度消失问题。

如何解决梯度消失和梯度爆炸?

常用的用于解决梯度消失和梯度爆炸的方法如下所示:

使用 ReLU、LReLU、ELU、maxout 等激活函数
sigmoid函数的梯度随着x的增大或减小和消失,而ReLU不会。使用批规范化
通过规范化操作将输出信号 x x 规范化到均值为0,方差为1保证网络的稳定性.从上述分析分可以看到,反向传播式子中有w" role="presentation" style="position: relative;">ww的存在,所以 w w 的大小影响了梯度的消失和爆炸,Batch Normalization 就是通过对每一层的输出规范为均值和方差一致的方法,消除了w" role="presentation" style="position: relative;">ww带来的放大缩小的影响,进而解决梯度消失和爆炸的问题。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。