跟李沐学AI-动手学深度学习-数值稳定性+模型初始化和激活函数

目录

数值稳定性

神经网络的梯度

数值稳定性的常见两个问题

例子: MLP

梯度爆炸

 梯度爆炸的问题

梯度消失

梯度消失的问题

总结

让训练更加稳定

让每层的方差是一个常数

 权重初始化

例子:MLP

 正向方差

 反向均值和方差

Xavier初始

 假设线性的激活函数

反向

 检查常用激活函数

 总结


数值稳定性

神经网络的梯度

考虑如下有d层的神经网络

计算损失l关于参数Wt的梯度

数值稳定性的常见两个问题

梯度消失梯度爆炸

例子: MLP

加入如下MLP(为了简单省略了偏移)

 

 

梯度爆炸

 使用ReLU作为激活函数。

 梯度爆炸的问题

  •  值超出值域(infinity)

   对于16位浮点数尤为严重(数值区间6e-5 - 6e4)。

  • 对学习率敏感

   如果学习率太大 -> 大参数值 -> 更大的梯度。

   如果学习率太小 -> 训练无进展。

  我们可能需要在训练过程不断调整学习率。

梯度消失

使用sigmoid作为激活函数

  的元素值是d-t个小数值的乘积。

梯度消失的问题

  •  梯度值变成0。

        对16位浮点数尤为严重。

  • 训练没有进展。

        不管如何选择学习率。

  • 对于底部层尤为严重。

       仅仅顶部层训练的较好。

       无法让神经网络更深。

总结

  • 当数值过大或者过小时会导致数值问题。
  • 常发生在深度模型中,因为其会对n个数累乘。

让训练更加稳定

  • 目标:让梯度值在合理的范围内。

        例如:[1e-6,1e3]

  • 将乘法变成加法

         例如:ResNet,LSTM。

  • 归一化。

         例如:梯度归一化,梯度裁剪。

  • 合理的权重初始和激活函数。

让每层的方差是一个常数

  • 将每层的输出和梯度都看作随机变量。
  • 让他们的均值和方差都保持一致。

 ,a,b都是常数。

 权重初始化

  •  在合理值区间里随机初始参数。
  • 训练开始的时候更容易有数值不稳定。

         远离最优解的地方损失函数表面可能很复杂。 

         最优解附近表面会比较平。

  • 使用N(0,0.01)来初始可能对小网络没问题,但不能保证深度神经网络。

例子:MLP

,i,i.d代表独立同分布。

 正向方差

 反向均值和方差

  

Xavier初始

 假设线性的激活函数

反向

 

 检查常用激活函数

  • 使用泰勒展开

  • 调整sigmoid:

 总结

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值