动手学深度学习之梯度爆炸和消失

DL相比于过去的人工神经网络,特点在于深,但深层的神经网络往往会遭遇数值稳定性问题,如某参数值为0.2或5,30层后变成 0. 2 30 0.2^{30} 0.230 5 30 5^{30} 530。一个非常小,接近于0,这就是梯度消失;一个非常大,超过计算机能表示的范围,这就是梯度爆炸。

梯度爆炸、消失

以MLP为例,计算第 l l l层输出:
H ( l ) = X W ( 1 ) W ( 2 ) … W ( l ) \boldsymbol{H}^{(l)}=\boldsymbol{X} \boldsymbol{W}^{(1)} \boldsymbol{W}^{(2)} \ldots \boldsymbol{W}^{(l)} H(l)=XW(1)W(2)W(l)
当经过很多层的累积效果后,就会出现数值不稳定的情况,这边是梯度爆炸(explosion)和消失(vanishing)。记得,之前学过梯度爆炸可以用梯度裁剪(clipping)的方式解决,梯度消失在RNN中出现比较多,gru和lstm等RNN模型有解决的方法。

随机初始化参数的原因

还是以MLP为例,统一参数为相同值的结果就是当隐层的每个神经元的激活函数相同时,其反向传播梯度是一样的,这样所有单元参数更新时还是一样的值。这相当于一个神经元的作用。因此需要随机初始化权重参数。
pytorch默认初始化:nn.init()
Xavier初始化
U ( − 6 a + b , 6 a + b ) U(-\sqrt{\frac{6}{a+b}}, \sqrt{\frac{6}{a+b}}) U(a+b6 ,a+b6 )
这些参数初始化方法好像都有些道道,我还不懂。。。

其他环境影响

协方差偏移是指测试时输入与原来训练集的特征有差异,比如训练用的是真实世界的猫,测试用的是卡通猫;
标签偏移是指测试集出现了训练集中没有的类;
概念偏移是指同一个东西不同的叫法,好比可乐,中国人叫可乐,外国人叫drink。

有些话说

一些问题:

  1. 梯度爆炸和消失是什么?如何避免?
  2. 神经元激活函数都一样的情况下,参数初始化一样会发生什么事情?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值