1.10 梯度消失与梯度爆炸-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授


←上一篇↓↑下一篇→
1.9 归一化输入回到目录1.11 神经网络的权重初始化

梯度消失与梯度爆炸 (Vanishing/Expanding Gradients)

训练神经网络,尤其是深度神经所面临的一个问题就是梯度消失或梯度爆炸,也就是你训练神经网络的时候,导数或坡度有时会变得非常大,或者非常小,甚至于以指数方式变小,这加大了训练的难度。

这节课,你将会了解梯度消失或梯度爆炸的真正含义,以及如何更明智地选择随机初始化权重,从而避免这个问题。 假设你正在训练这样一个极深的神经网络,为了节约幻灯片上的空间,我画的神经网络每层只有两个隐藏单元,但它可能含有更多,但这个神经网络会有参数 w [ 1 ] w^{[1]} w[1] w [ 2 ] w^{[2]} w[2] w [ 3 ] w^{[3]} w[3] 等等,直到 w [ l ] w^{[l]} w[l] ,为了简单起见,假设我们使用激活函数 g ( z ) = z g(z)=z g(z)=z ,也就是线性激活函数,我们忽略 b b b ,假设 b [ l ] b^{[l]} b[l] =0,如果那样的话,输出 y = w [ l ] w [ l − 1 ] w [ l − 2 ] ⋯ w [ 3 ] w [ 2 ] w [ 1 ] x y=w^{[l]}w^{[l-1]}w^{[l-2]}\cdots w^{[3]}w^{[2]}w^{[1]}x y=w[l]w[l1]w[l2]w[3]w[2]w[1]x ,如果你想考验我的数学水平, w [ 1 ] x = z [ 1 ] w^{[1]}x=z^{[1]} w[1]x=z[1] ,因为 b = 0 b=0 b=0 ,所以我想 z [ 1 ] = w [ 1 ] x z^{[1]}=w^{[1]}x z[1]=w[1]x a [ 1 ] = g ( z [ 1 ] ) a^{[1]}=g(z^{[1]}) a[1]=g(z[1]) ,因为我们使用了一个线性激活函数,它等于 z [ 1 ] z^{[1]} z[1] ,所以第一项 w [ 1 ] x = a [ 1 ] w^{[1]}x=a^{[1]} w[1]x=a[1] ,通过推理,你会得出 w [ 2 ] w [ 1 ] x = a [ 2 ] w^{[2]}w^{[1]}x=a^{[2]} w[2]w[1]x=a[2] ,因为 a [ 2 ] = g ( z [ 2 ] ) a^{[2]}=g(z^{[2]}) a[2]=g(z[2]) ,还等于 g ( w [ 2 ] a [ 1 ] ) g(w^{[2]}a^{[1]}) g(w[2]a[1]) ,可以用 w [ 1 ] x w^{[1]}x w[1]x 替换 a [ 1 ] a^{[1]} a[1] ,所以这一项就等于 a [ 2 ] a^{[2]} a[2] ,这个就是 a [ 3 ] ( w [ 3 ] w [ 2 ] w [ 1 ] x ) a^{[3]}(w^{[3]}w^{[2]}w^{[1]}x) a[3](w[3]w[2]w[1]x)

在这里插入图片描述

所有这些矩阵数据传递的协议将给出 y ^ \hat{y} y^ 而不是 y y y 的值。

假设每个权重矩阵 w [ l ] = [ 1.5 0 0 1.5 ] w^{[l]}=\left[\begin{matrix}1.5&0\\0&1.5\end{matrix}\right] w[l]=[1.5001.5] ,从技术上来讲,最后一项有不同维度,可能它就是余下的权重矩阵, y = w [ 1 ] [ 1.5 0 0 1.5 ] ( L − 1 ) x y=w^{[1]}\left[\begin{matrix}1.5&0\\0&1.5\end{matrix}\right]^{(L-1)}x y=w[1][1.5001.5](L1)x ,因为我们假设所有矩阵都等于它,它是1.5倍的单位矩阵,最后的计算结果就是 y ^ \hat{y} y^ ,也就是等于 1. 5 ( L − 1 ) x 1.5^{(L-1)}x 1.5(L1)x 。如果对于一个深度神经网络来说 L L L 值较大,那么 y ^ \hat{y} y^ 的值也会非常大,实际上它呈指数级增长的,它增长的比率是 1. 5 L 1.5^L 1.5L ,因此对于一个深度神经网络, y y y 的值将爆炸式增长。

相反的,如果权重是0.5, w [ l ] = [ 0.5 0 0 0.5 ] w^{[l]}=\left[\begin{matrix}0.5&0\\0&0.5\end{matrix}\right] w[l]=[0.5000.5] ,它比1小,这项也就变成了 0. 5 L 0.5^L 0.5L ,矩阵 y = w [ 1 ] [ 1.5 0 0 1.5 ] ( L − 1 ) x y=w^{[1]}\left[\begin{matrix}1.5&0\\0&1.5\end{matrix}\right]^{(L-1)}x y=w[1][1.5001.5](L1)x ,再次忽略 w [ L ] w^{[L]} w[L] ,因此每个矩阵都小于1,假设 x 1 x_1 x1 x 2 x_2 x2 都是1,激活函数将变成 1 2 \frac12 21 1 2 \frac12 21 1 4 \frac14 41 1 4 \frac14 41 1 8 \frac18 81 1 8 \frac18 81 等,直到最后一项变成 1 2 L \frac1{2^L} 2L1 ,所以作为自定义函数,激活函数的值将以指数级下降,它是与网络层数数量相关的函数,在深度网络中,激活函数以指数级递减。

我希望你得到的直观理解是,权重 w w w 只比1略大一点,或者说只是比单位矩阵大一点,深度神经网络的激活函数将爆炸式增长,如果 w w w 比1略小一点,可能是 [ 0.9 0 0 0.9 ] \left[\begin{matrix}0.9&0\\0&0.9\end{matrix}\right] [0.9000.9]

在这里插入图片描述

在深度神经网络中,激活函数将以指数级递减,虽然我只是讨论了激活函数以与 L L L 相关的指数级数增长或下降,它也适用于与层数 L L L 相关的导数或梯度函数,也是呈指数级增长或呈指数递减。

对于当前的神经网络,假设 L = 150 L=150 L=150 ,最近Microsoft对152层神经网络的研究取得了很大进展,在这样一个深度神经网络中,如果激活函数或梯度函数以与 L L L 相关的指数增长或递减,它们的值将会变得极大或极小,从而导致训练难度上升,尤其是梯度指数小于 L L L 时,梯度下降算法的步长会非常非常小,梯度下降算法将花费很长时间来学习。

总结一下,我们讲了深度神经网络是如何产生梯度消失或爆炸问题的,实际上,在很长一段时间内,它曾是训练深度神经网络的阻力,虽然有一个不能彻底解决此问题的解决方案,但是已在如何选择初始化权重问题上提供了很多帮助。

课程PPT

在这里插入图片描述
在这里插入图片描述


←上一篇↓↑下一篇→
1.9 归一化输入回到目录1.11 神经网络的权重初始化

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhao-Jichao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值