“目标不宜太简单。”“每一步,找到一个大致正确的方向,然后迈出一步。”这是李沐 2021 年那篇《用随机梯度下降来优化人生》里的话。文章把 SGD 的概念一条条对到人生上,一共 11 条。
我把这 11 条做成了一张可以动手的地形图:深色的地方损失低,你选起点、调步长和噪声,亲眼看 SGD 会走成什么样。
要点整理自李沐文章的转载与摘要(腾讯频道转载、掘金摘要),没有读到原文全文。下面“SGD”一栏的算法解释是我补的,不是李沐的原话。
地形图实验
点地形图上任意位置,换一个起点。已经画出的是同一起点跑 5 次的结果:起点、目标函数都一样,路径却各不相同。
十一条,各对应算法里的什么
要有目标
无论长短,是自己定的还是借来的,没有方向就谈不上优化。
先有 损失函数,才有梯度。地图上颜色越深的地方,损失越低。
目标要大
可以从小目标开始,但目标太简单,一眼就看到了头。
只有一个碗的 凸函数 没有悬念;有很多坑的地形,才值得走。
坚持走
找一个大致可行的方向,迈一步,然后继续。
θ ← θ − η·g。不必算出完美方向,估计的梯度就够用。
痛苦的卷
改变会痛,但不改变就没有进步;太舒服可能是在原地。
梯度接近零,就停了。把起点放在一个坑底再跑:不加噪声,它永远不动。
可以躺平
步子应该时大时小,适当休息,才能走得久。
太大会在坑边来回跳,太小几乎走不动。周期性调大调小,也是常见的训练做法。
四处看看
方向来自对世界的认识。多探索,允许试错。
“随机”二字来自每次只看一小批数据,梯度带噪声,也因此有机会 跳出小坑。
快也是慢
前期进展太快,后期可能乏力。徘徊一阵不是坏事。
早早落进最近的坑,就再也出不来。前期步长大、乱走一会儿,后期才有精细搜索的余地。
赢在起点
起点影响很大。与其攀比,不如看清自己的起点和运气。
在图上换几个起点:离好坑近的,几步就到;离得远的,可能先掉进别的坑。
很远也能到达
起点再差,只要一直朝下坡走,结果会相近;偏了就重新调整。
只要梯度方向大致对、步长合适,从不同起点都能到 差不多低 的地方。
独一无二
目标可以相似,但每个人看到的世界不同,走出的路径也不同。
同一起点跑多次,每条轨迹的 损失值相近,参数却各不相同。点“再跑 5 次”对比。
简单最好
目标复杂,反而是简单的办法最有效:盯住眼前,小步快跑。
SGD 没有二阶信息、没有规划,却是训练大模型最常用的底子。
类比不到的地方
人生没有一个公认的损失函数,也算不出梯度,只能在每次“走一步”之后凭感受估计。所以第 01 条最难:在优化之前,先要决定什么叫“更低”。
另外,算法里的噪声是零均值的,人生里的运气不是。第 08 条说的起点,在算法里可以重新初始化,在人生里不行。
读者怎么说
先看读者反馈,再直接在当前页面继续讨论。不用绑定社交账号,填个昵称、抓一只娃娃就能留言。
快捷身份
留下你的想法
选一个预设身份,或者直接填昵称;写完点发布,抓到指定的娃娃就能提交。若显示“需要配置 Waline”,说明站点还缺少可写评论后端。
当前未选择预设身份