数值稳定之合理的权重初始值和激活函数让训练更加稳定

数值稳定之合理的权重初始值和激活函数让训练更加稳定,第1张

数值稳定之合理的权重初始值和激活函数让训练更加稳定

目标:让梯度值在合理的范围内。例如【1e-6,1e3】。应对梯度消失和梯度爆炸。

一 解决方法: 1.将乘法变加法

      (1)resnet (2)lstm

2.归一化

     (1)梯度归一化 (2)梯度裁剪

3.合理的初始权重和激活函数

        让每层的方差是常数:(正向传播和反向传播均要求)

        1.将每层的输出和梯度都看做随机变量

        2.让他们的均值和方差都保持一致

        以上做法可以解决度消失和梯度爆炸问题。

二 为什么要权重初始化:

        1.在训练开始的时候更容易有数值不稳定

        2.使用N(0,0.01)可能对小网络有用,但是不能保证深度学习神经网络。

三 Xavier初始化方法

        首先计算前向传播输出的均值和方差

        1.计算正向均值

        2.计算正向方差

        3.计算反向均值和方差

        要求是输出方差等于输入的方差。

        上图就是Xavier初始化方法的思想。

 四 假设线性的激活函数

        加上激活函数,计算前向和反向的输出的均值和方差,要求他们的均值和方差都保持一致。

 

 那么要想使激活函数均值和方差都保持一致,激活函数为y=x理论上最好。

         可以看出,上式从数学上完美地解释了sigmoid为何存在缺陷。是因为其输出的方差与输入的方差不相等,使得深度网络每次迭代计算值不在合理范围内,导致深度网络多次计算迭代后梯度消失,爆炸。根据此原理可对sigmod做出改进,上下看来真是数学之美。

五 结论:         合理的权重初始值和激活函数的选取可以提升数值的稳定性。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5700895.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存