数值稳定性(梯度消失,梯度爆炸)

文章讨论了神经网络训练中遇到的梯度爆炸和梯度消失问题,以及它们对模型的影响。为提升数值稳定性,提出了合理的权重初始化(如Xavier初始化)和选择适当的激活函数(如避免梯度饱和的函数)等解决方案。
摘要由CSDN通过智能技术生成

       本文中心:数值稳定性的两个常见问题——梯度爆炸,梯度消失。

       在神经网络中,求解损失关于参数的梯度的时候,如下图,链式法则会造成连续的矩阵乘法:

这样的矩阵乘法会带来的问题是:梯度爆炸(1.5**100),梯度消失(0.8**100)。

        梯度爆炸的问题:1值超出值域,特别是对于float16尤为严重 2对学习率敏感,可能需要在训练过程不断调整学习率,一开始学习率可以大一些,后面学习率小一点

        梯度消失的问题:1梯度值变成0,对float16尤为严重 2 一旦梯度消失,不管如何调整学习率都无法更新权重,训练无进展 3可能造成顶层训练好,底层(更深层)由于梯度的消失而训练不好。这样就无法让神经网络更深。

        问题产生了就要去解决,下面讲讲如何解决梯度消失和梯度爆炸,提升数值稳定性。

        我们想让训练更加稳定,即让梯度值在合理的范围。具体做法有三种,如下:

 这里介绍的是合理的权重初始和激活函数。

        想要实现合理的权重初始和激活函数,一个想法是将每层的输出和梯度看作随机变量,让各层输出的均值和方差保持一致,让各层梯度的均值和方差也一样。于是便得到如下两个结论:

        1 合理的权重初始化方法:Xavier初始,这样第t层权重初始化时,不管是用正态分布还是均匀分布进行初始化,其方差都可以事先计算。如下图,

\gamma _{t} 是第t层权重的方差,n_{t} 是第t层输出维度,即第t层有几个神经元。

        2 合适的激活函数应当至少在零点附近接近 \sigma \left ( x \right ) = x 。如下图,这里要注意的是sigmoid激活函数可以通过乘4减2进行调整, 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值