梯度消失,梯度爆炸_原因分析_简单例子助理解
梯度消失,梯度爆炸的根源其实是来在反向传播BP(back propagation).
反向传播的思想: 每层的输出是由两层间的权重决定的,两层之间产生的误差,按权重缩放后在网络中向前传播, 这就是反向传播。
从反向传播中得到一般化公式:
δn−1=ωn−1δn∗fn−1′
Δwn−2=ηδn−1xn−1
其中
δn为第
n层的误差项,
δn−1为第
n−1层的误差项,
ωn−2为第
n−2层到第
n-1层的权重,
fn−1′为第
n−1层输出的导数,也就是激活函数的导数,
xn−1为第
n−1层的输入,
η为学习率,
Δwn−2就是第
n−2层到第
n−1层权重更新步长了.
对于
n层神经网络,根据反向传播的公式,到第
n−i层的权重
wn−i−1更新规则为:
δn−i=(ωn−i⋅⋅⋅(ωn−2(ωn−1(ωnδn∗fn−1′)∗fn−2′)∗fn−3′)⋅⋅⋅∗fn−i′)
Δwn−i−1=ηδn−ixn−i
上述就是权重
wn−i更新规则,对于激活函数的倒数
fn−1′,
fn−2′,
fn−3′,..,
fn−i′,如果此部分大于1,那么层数增多的时候,最终的求出的权重
wn−i更新将以指数形式增加,即发生梯度爆炸,如果此部分小于1,那么随着层数增多,求出的权重
wn−i−1的更新步长
Δwn−i−1将会以指数形式衰减,即发生了梯度消失。
简单例子
用下面最简单的单线神经网络来说明,更见直观的理解梯度消失,梯度爆炸.
说明:
f表示激活函数,
fi就表示第
i层的输出,
δi表示输出的误差项.
那么根据上图,可以得到第二层的误差项
δ2为:
δ2=w2w3w4δ5f4′f3′f2′
第二层的权重更新步长为:
Δw2=ηδ2x2
从上面的例子我们可以直观的看出有连乘
f4′f3′f2′, 当神经网络的层数进一步增加的时候,连乘会进一步加长.所以当
fn′<1的时候,随着累乘的增加(远离输出端),误差项
δ会逐渐趋近0,这就是梯度消失.当
fn′>1的时候,随着累乘的增加(远离输出端),误差项
δ会逐渐趋近无穷,这就是梯度爆炸.