P24 · 优化
Optimization for Deep Learning(上)
1这节解决什么问题
同样是梯度下降,为什么有人加「惯性」、有人让每个参数走不同的步子?这些优化器到底在修什么?
2一句话讲清
优化器的演化是在「快」和「稳」之间取舍:惯性让方向更稳,按参数调步子让每个参数走不同距离,Adam 把两者合起来,但不总是更好。
3通俗解释
- 惯性(动量):不只看当前这一步的方向,还把前几步的方向加权平均。走到平的地方、脚下没坡度时,惯性还在,能冲过去。
- 按参数调步子:一直变化剧烈的参数,步子收小;一直变化很微弱的参数,步子放大。累积太多会让步子只减不增,所以改成「最近的滑动平均」,需要时还能回升。
- Adam 把这两件事合起来,还做了一步「起步修正」:两个平均值都从零开始,前几步会被零拉小,不修正的话一开始的步子会严重失真。
- 问题在于 Adam 常常训得快,但最后在新数据上的表现差一些,也可能不稳。后来的补丁分两路:一路压住后期被放大的步子,一路把最开始几步的步子压小(叫预热)。
4一个例子
帮助理解的类比(讲义原意的改写)
讲义用「记忆太长的平均数」解释 Adam 的一个毛病,可以这样理解:你用一个很长的平均来估计「最近大家出拳有多重」,前面很多次都是轻拳,忽然来了一记重拳,这记重拳在平均里只占很小一份,几乎推不动结果;反过来,长期大量没信息的小变化,却能一点点把结果带偏。这就是「记得太久」的代价——真正有信息的大信号被稀释了。
5常见误区
- 以为 Adam 一定比带惯性的梯度下降好。讲义的四条对比是:Adam 快,但可能不稳、可能在新数据上差一些;带惯性的更慢、更稳。
- 以为起步修正可以省。前几步的平均被零拉小,不修正会让一开始的步子明显偏小。
- 以为存在万能优化器。讲义的结论是没有,要按任务实测。
6和相邻几节的关系
P22、P23 给梯度下降的几何直观;P25 接着讲惯性的进阶、权重衰减与选型;P16 里「没训好」那一格靠这里的方法解决。
730 秒回顾
惯性稳方向,按参数调步子定距离,Adam 合两者再加起步修正;Adam 快但可能不稳、新数据上差一些;补丁分压步子与预热两路;没有万能优化器。
8小自测
先自己答,再点开对答案。
1. 为什么「记得太久」的平均会让偶尔出现的大信号吃亏?
因为它是很长一段历史的平均,单次的大变化只占很小一份,被大量小变化稀释;真正的信号推不动结果,噪声反而慢慢累积。
2. Adam 为什么需要起步修正?
两个平均都从零开始,前几步的估计被零拉低,算出来的步子会明显偏小;修正就是把这段偏差补回来。
9来源
来源与说明(点开可查)
基于对应官方讲义整理并做复习补充,不是视频逐字稿;本页不标注视频时间点。
对应讲义页码:ML2020 Optimization.pdf 第 1–44 页(该 PDF 无印刷页码,按物理页计)