11.6.1 基础

动量法之所以叫动量法的原因:实际上是在维护一个动量,从而让每一次改变(由于惯性)不改变太多,减少震荡
image
有效样本权重那里,翻译有错误。原文说的是在(随机)梯度下降中将η变为η1β,而不是在动量法中。这样子做相当于在(随机)梯度下降中模拟了一个近似的动量法。但是有效样本权重真正的意思见下

动量法其实用的是一个叫做指数加权平均的技术
指数加权平均就是给定一个如下的序列
image
对于vi,其计算的是

θi11β

θi

的平均值
原因:利用公式limx0+(1x)1x=e1,写出vi的通项公式之后就可以知道,我们只用考虑i前面11β项就好了,其余的项基本可以忽略
但是这里会存在一个问题,当i比较小的时候,可能无法进行正确估计,比如当β=0.98的时候,可以计算一下v2,不能正确估计θ1θ2的平均值(两者的系数都太小了),这个时候要进行修正,即vi=vi1βi(当t比较大的时候,这个修正显然就无效了)

另一个理解动量法的视角见下
动量梯度下降就要用到前面的加权平均法了
image
如上图,普通的梯度下降法可能会震荡,导致接近最优值的速度很慢;可是如果我们进行平均了,y方向的正负向量就抵消了,x方向的正向量相加
image
就可以像上图红线一样快速接近最优值了
image
一般来说β=0.9;一般不会进行偏差修正,因为仅仅迭代十次之后就已经不怎么存在偏差了,所以几乎没有人会做偏差修正

如果有多层的话,更新公式见下

(3){vdW[l]=βvdW[l]+(1β)dW[l]W[l]=W[l]αvdW[l]

(4){vdb[l]=βvdb[l]+(1β)db[l]b[l]=b[l]αvdb[l]

注意:

  • 速度用零初始化。因此,算法需要几次迭代来“积累”速度并开始采取更大的步骤。
  • 如果β=0,那么这就变成了没有动量的标准的梯度下降。

如何选择β

  • 动量β越大,更新越平滑,因为我们更多地考虑过去的梯度。但如果β太大,它也可能使更新过于平滑。
  • β的常见值范围从0.80.999.如果你不想调整这个值,β=0.9通常是一个合理的默认值。
  • 为你的模型调整最优的β可能需要尝试几个值,以查看哪个值在减少成本函数J的值方面效果最好。

你应该记住的要点:

  • 动量考虑过去的梯度以平滑梯度下降的步骤。它可以应用于批量梯度下降、小批量梯度下降或随机梯度下降。
  • 你必须调整动量超参数β和学习率α
posted @   最爱丁珰  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2024-02-17 NKOJ 2040
2024-02-17 NKOJ2640
2024-02-17 XOR和路径
2024-02-17 hdu4336
2024-02-17 hdu4135
2024-02-17 魔法珠
2024-02-17 放弃测试
点击右上角即可分享
微信分享提示