“目标不宜太简单。”“每一步,找到一个大致正确的方向,然后迈出一步。”这是李沐 2021 年那篇《用随机梯度下降来优化人生》里的话。文章把 SGD 的概念一条条对到人生上,一共 11 条。

我把这 11 条做成了一张可以动手的地形图:深色的地方损失低,你选起点、调步长和噪声,亲眼看 SGD 会走成什么样。

要点整理自李沐文章的转载与摘要(腾讯频道转载、掘金摘要),没有读到原文全文。下面“SGD”一栏的算法解释是我补的,不是李沐的原话。

地形图实验

● 起点━ 路径◆ 终点等高线越密,坡越陡

点地形图上任意位置,换一个起点。已经画出的是同一起点跑 5 次的结果:起点、目标函数都一样,路径却各不相同。

十一条,各对应算法里的什么

人生SGD
01

要有目标

无论长短,是自己定的还是借来的,没有方向就谈不上优化。

目标函数

先有 损失函数,才有梯度。地图上颜色越深的地方,损失越低。

02

目标要大

可以从小目标开始,但目标太简单,一眼就看到了头。

非凸

只有一个碗的 凸函数 没有悬念;有很多坑的地形,才值得走。

03

坚持走

找一个大致可行的方向,迈一步,然后继续。

更新规则

θ ← θ − η·g。不必算出完美方向,估计的梯度就够用。

04

痛苦的卷

改变会痛,但不改变就没有进步;太舒服可能是在原地。

离开平地

梯度接近零,就停了。把起点放在一个坑底再跑:不加噪声,它永远不动。

05

可以躺平

步子应该时大时小,适当休息,才能走得久。

学习率

太大会在坑边来回跳,太小几乎走不动。周期性调大调小,也是常见的训练做法。

06

四处看看

方向来自对世界的认识。多探索,允许试错。

随机

“随机”二字来自每次只看一小批数据,梯度带噪声,也因此有机会 跳出小坑。

07

快也是慢

前期进展太快,后期可能乏力。徘徊一阵不是坏事。

过早收敛

早早落进最近的坑,就再也出不来。前期步长大、乱走一会儿,后期才有精细搜索的余地。

08

赢在起点

起点影响很大。与其攀比,不如看清自己的起点和运气。

初始化

在图上换几个起点:离好坑近的,几步就到;离得远的,可能先掉进别的坑。

09

很远也能到达

起点再差,只要一直朝下坡走,结果会相近;偏了就重新调整。

收敛

只要梯度方向大致对、步长合适,从不同起点都能到 差不多低 的地方。

10

独一无二

目标可以相似,但每个人看到的世界不同,走出的路径也不同。

多次运行

同一起点跑多次,每条轨迹的 损失值相近,参数却各不相同。点“再跑 5 次”对比。

11

简单最好

目标复杂,反而是简单的办法最有效:盯住眼前,小步快跑。

朴素的赢家

SGD 没有二阶信息、没有规划,却是训练大模型最常用的底子。

类比不到的地方

人生没有一个公认的损失函数,也算不出梯度,只能在每次“走一步”之后凭感受估计。所以第 01 条最难:在优化之前,先要决定什么叫“更低”。

另外,算法里的噪声是零均值的,人生里的运气不是。第 08 条说的起点,在算法里可以重新初始化,在人生里不行。