深度学习之 Vanishing Gradient Problem:深度网络中梯度消失问题的解释说明

深度学习之 Vanishing Gradient Problem:深度网络中梯度消失问题的解释说明

  本文是《深入浅出神经网络与深度学习》第五章 深度神经网络为何很难训练 的简易读书笔记,记录了深度神经网络中的梯度消失及产生原因说明。

一、基本概念

  在深度神经网络中,梯度在隐藏层间反向传播时趋于变小,即前面隐藏层中的神经元学习速度要慢于后面隐藏层的现象,称梯度消失(Vanishing Gradient Problem)。与之相对,若前面的隐藏层中的梯度变得非常大时,称为梯度爆炸(Exploding Gradient Problem)。

二、简单解释

  为何会出现梯度消失的问题?
  我们通过一个每层只有一个神经元,包含三层隐藏层的神经网络来解释。网络的结构图如下:
在这里插入图片描述  其中, w 1 , w 2 , . . . w_1,w_2,... w1,w2,... 是权重, b 1 , b 2 , . . . b_1,b_2,... b1,b2,... 是偏置, C C C 是代价函数,第 j j j个神经元的输出 a j = σ ( z j ) a_j=\sigma(z_j) aj=σ(zj) ,神经元的带权输入 z j = w j ∗ a j − 1 + b j z_j=w_j*a_{j-1}+b_j zj=wjaj1+bj σ \sigma σ 是常用的 s i g m o i d sigmoid sigmoid 激活函数。
  基于上述网络,首先来计算梯度 ∂ C ∂ b 1 \frac{\partial C}{\partial b_1} b1C,经由链式法则 ∂ C ∂ b 1 = ∂ C ∂ a 4 ∂ a 4 ∂ a 3 ∂ a 3 ∂ a 2 ∂ a 2 ∂ a 1 ∂ a 1 ∂ b 1 \frac{\partial C}{\partial b_1}=\frac{\partial C}{\partial a_4}\frac{\partial a_4}{\partial a_3}\frac{\partial a_3}{\partial a_2}\frac{\partial a_2}{\partial a_1}\frac{\partial a_1}{\partial b_1} b1C=a4Ca3a4a2a3a1a2b1a1,得到梯度 ∂ C ∂ b 1 \frac{\partial C}{\partial b_1} b1C的表达式如下:
∂ C ∂ b 1 = σ ′ ( z 1 ) w 2 σ ′ ( z 2 ) w 3 σ ′ ( z 3 ) w 4 σ ′ ( z 4 ) ∂ C ∂ a 4 ⏟ ∂ C ∂ b 2 \frac{\partial C}{\partial b_1} = \sigma^{'}(z_1)w_2 \underbrace{\sigma^{'}(z_2)w_3 \sigma^{'}(z_3)w_4\sigma^{'}(z_4) { \frac{\partial C}{\partial a_4}}}_{\frac{\partial C}{\partial b_2}} b1C=σ(z1)w2b2C σ(z2)w3σ(z3)w4σ(z4)a4C

  同理可得,
∂ C ∂ b 2 = σ ′ ( z 2 ) w 3 σ ′ ( z 3 ) w 4 σ ′ ( z 4 ) ∂ C ∂ a 4 ⏟ ∂ C ∂ b 3 \frac{\partial C}{\partial b_2} = \sigma^{'}(z_2)w_3 \underbrace{\sigma^{'}(z_3)w_4\sigma^{'}(z_4) { \frac{\partial C}{\partial a_4}}}_{\frac{\partial C}{\partial b_3}} b2C=σ(z2)w3b3C σ(z3)w4σ(z4)a4C

∂ C ∂ b 3 = σ ′ ( z 3 ) w 4 σ ′ ( z 4 ) ∂ C ∂ a 4 ⏟ ∂ C ∂ b 4 \frac{\partial C}{\partial b_3} = \sigma^{'}(z_3)w_4 \underbrace{\sigma^{'}(z_4) { \frac{\partial C}{\partial a_4}}}_{\frac{\partial C}{\partial b_4}} b3C=σ(z3)w4b4C σ(z4)a4C

∂ C ∂ b 4 = σ ′ ( z 4 ) ∂ C ∂ a 4 \frac{\partial C}{\partial b_4} = \sigma^{'}(z_4) { \frac{\partial C}{\partial a_4}} b4C=σ(z4)a4C

  通过比较 ∂ C ∂ b 1 \frac{\partial C}{\partial b_1} b1C ∂ C ∂ b 2 \frac{\partial C}{\partial b_2} b2C ∂ C ∂ b 3 \frac{\partial C}{\partial b_3} b3C ∂ C ∂ b 4 \frac{\partial C}{\partial b_4} b4C 的表达式,可知除了拥有共同项 ∂ C ∂ a 4 \frac{\partial C}{\partial a_4} a4C外,前面隐藏层的梯度较后面隐藏层含有更多的 w w w σ ′ ( z ) \sigma^{'}(z) σ(z) 项。
  使用标准方法初始化网络权重时,会使得权重符合一个均值为 0 0 0,标准差为 1 1 1 的高斯分布,因此这些权重通常会满足 ∣ w j ∣ < 1 |w_j|<1 wj<1
  另一项 σ ′ ( z ) \sigma^{'}(z) σ(z),即 s i g m o i d sigmoid sigmoid 函数的导数,其函数图如下:
在这里插入图片描述
易知其取值为 ( 0 , 1 4 ] (0,\frac{1}{4}] 041],且在 z = 0 z=0 z=0 处, σ ′ ( 0 ) = 1 4 \sigma^{'}(0)=\frac{1}{4} σ(0)=41 取得最大值。
  由前述可知 w σ ′ ( z ) < 1 4 w\sigma^{'}(z) < \frac{1}{4} wσ(z)<41,或者说 w σ ′ ( z ) < 1 w\sigma^{'}(z) < 1 wσ(z)<1,所有会有 ∂ C ∂ b 1 < ∂ C ∂ b 2 < ∂ C ∂ b 3 < ∂ C ∂ b 4 \frac{\partial C}{\partial b_1} < \frac{\partial C}{\partial b_2} < \frac{\partial C}{\partial b_3} < \frac{\partial C}{\partial b_4} b1C<b2C<b3C<b4C,也即前面隐藏层的梯度要小于后面隐藏层的梯度。
  这就是梯度消失的原因。

三、参考资料

[1] 《深入浅出神经网络与深度学习》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值