11.6.1 基础
动量法之所以叫动量法的原因:实际上是在维护一个动量,从而让每一次改变(由于惯性)不改变太多,减少震荡
有效样本权重那里,翻译有错误。原文说的是在(随机)梯度下降中将
动量法其实用的是一个叫做指数加权平均的技术
指数加权平均就是给定一个如下的序列
对于
到
的平均值
原因:利用公式
但是这里会存在一个问题,当
另一个理解动量法的视角见下
动量梯度下降就要用到前面的加权平均法了
如上图,普通的梯度下降法可能会震荡,导致接近最优值的速度很慢;可是如果我们进行平均了,
就可以像上图红线一样快速接近最优值了
一般来说
如果有多层的话,更新公式见下
注意:
- 速度用零初始化。因此,算法需要几次迭代来“积累”速度并开始采取更大的步骤。
- 如果
,那么这就变成了没有动量的标准的梯度下降。
如何选择
- 动量
越大,更新越平滑,因为我们更多地考虑过去的梯度。但如果 太大,它也可能使更新过于平滑。 的常见值范围从 到 .如果你不想调整这个值, 通常是一个合理的默认值。- 为你的模型调整最优的
可能需要尝试几个值,以查看哪个值在减少成本函数 的值方面效果最好。
你应该记住的要点:
- 动量考虑过去的梯度以平滑梯度下降的步骤。它可以应用于批量梯度下降、小批量梯度下降或随机梯度下降。
- 你必须调整动量超参数
和学习率 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 放弃测试