训练大模型时调的每个 learning rate、写的每行 Adam 配置,都站在一条三百年流水线的末端。本篇沿一条问题链回溯:「找最好」如何从天文学家处理误差的权宜之计,长成一门支撑深度学习的科学。
从数据反推参数:最小二乘之争
十八世纪末的天文学面对一个全新处境:望远镜的观测精度第一次逼出了理论的极限——行星轨道的要素,要从几十个带噪声的读数里反推出来。此前两千年,数学几乎只做「由因推果」;「由果求因」,拉普拉斯后来称之为概率的逆问题,没有现成工具。1801 年谷神星 (Ceres) 被追踪 41 天后消失在日光里,24 岁的高斯 (Gauss) 凭轨道计算预测出它再现的天区,同年 12 月望远镜在预测天区内重新捕获这颗星。这件成名战背后,是他声称 1795 年起就在使用的最小二乘法 (least squares)。
优先权并不单纯:勒让德 (Legendre) 1805 年抢先发表方法,高斯 1809 年才刊出自己的版本、却带来更深的概率论证——当误差独立且服从正态分布时,最小二乘解恰为极大似然估计。各执一词的公案,与 微积分发明权之争 的前尘如出一辙。真正的遗产有三层:「从数据反推参数」第一次有了系统方法,regression 的全部故事由此开始;其正规方程 是线性方程组,把接力棒递给 线性代数史 从行列式到向量空间 那条线;高斯把「误差」当作随机变量立法,概率论从此走出赌桌进入观测科学——这是 概率论思想史 从赌桌到公理化 上关键的一跃。
但最小二乘只回答了「目标是什么」:误差平方和。一般的函数如何求最小,1805 年还没有算法。
「沿下坡走」成为算法:柯西 1847
第一个通用算法来自一位意外的作者。1847 年,柯西 (Cauchy) 为求解天文计算中的大型非线性方程组,提出梯度下降 (gradient descent):从任意点出发,沿负梯度方向走一小步,反复迭代
「沿下坡走」从此成为可写出、可分析、可重复执行的数学对象(算法本体见 梯度下降)。耐人寻味的是作者身份:正是这位柯西,在纯数学里为极限立下 ε-δ 的规矩、开启 分析的严格化。但优化这条线的主发动机从来不是数学内部的自我清算,而是工程需求的倒逼——伏笔留到尾声回收。
最速下降的代价随即暴露:在病态 (ill-conditioned) 目标上,相邻两步的梯度近乎正交,轨迹拉成无穷锯齿。想知道坡往哪边弯,需要二阶信息。
二阶信息的代价:牛顿法谱系
现成的答案来自牛顿的求根切线法:把它搬来解 ,即得优化形态的牛顿法,用 Hessian 校正方向、在极小点附近享受二次收敛。代价同样清楚: 有 个元素,存储与求解随维度失控。拟牛顿法 (quasi-Newton) 是折中的艺术——DFP (1959/1963) 与 BFGS (1970) 不计算 Hessian,而用历次梯度差构造 的低秩近似,至今仍是中小规模「精算」的巅峰。
但整个谱系默认问题无约束。现实中的「找最好」几乎总戴着镣铐——预算、容量、守恒律。描述镣铐,需要新的语言。
约束的语言:从拉格朗日到 KKT
第一个关键词由拉格朗日 (Lagrange) 在 1788 年《分析力学》给出:乘子法。构造 ,等式约束下的极值化为无约束的驻点问题——这套手法直接继承 欧拉与十八世纪分析 中 Euler–Lagrange 方程的变分传统,让整部力学不着一图。
不等式约束的推广迟到一个半世纪,推力来自二战:Kantorovich 1939 年为苏联生产计划、Dantzig 1947 年为美国空军后勤建立线性规划 (linear programming);Dantzig 的单纯形法 (simplex method) 沿多面体顶点搜索,冯·诺依曼 (von Neumann) 一夜之间指出线性规划与其对偶及博弈论的等价,对偶理论 (duality) 从此成为优化最深的结构。1951 年 Kuhn 与 Tucker 把这套语言推广到非线性不等式约束(事后发现 Karush 1939 年已得等价结果),KKT 条件把带约束的最优性写成一组可检验的代数关系:
- 平稳性:
- 原始可行:
- 对偶可行:
- 互补松弛:
互补松弛最有力:约束与乘子如跷跷板,不起作用的约束其乘子为零。找最优,从此变成解一组方程与不等式。但 KKT 何时是充分条件?答案划出整个领域最重要的分界线。
凸性即可解性:Rockafellar 的分界线
答案只有两个字:凸性。Rockafellar 1970 年的《Convex Analysis》把散落各处的凸性技巧熔铸成一门学科。在凸优化里,KKT 条件由必要升为充分,三重赠礼随之而来:局部最优即全局最优;Slater 条件下强对偶成立、对偶间隙为零,对偶问题成为算法引擎(对偶上升、ADMM 皆源于此);理论上可解与实践上可算在此重合。分界线之外是非凸世界——普遍 NP-hard,几乎每件工具都失效。
2000 年代的机器学习恰好活在分界线的凸侧:SVM、Lasso、逻辑回归全是凸问题,凸优化成为那个时代 ML 的默认语言。神经网络站在另一侧:损失非凸、参数以亿计,凸分析的赠礼一件都用不上。而工业仍要训练——出路不在理论侧,在一条 1951 年埋下的伏线上。
随机的胜利:SGD 赢了精算
1951 年,就在 KKT 条件发表的同年,Robbins 与 Monro 提出随机近似 (stochastic approximation):当函数值只能带噪声观测时,如何迭代求根。两条线同年各自落地,六十年后在 GPU 上汇合。SGD 把它用于梯度:每个 mini-batch 给出无偏而带噪的梯度估计——用噪声换吞吐。
在经典优化的审美里这是妥协,在深度学习里它却赢了精算,缘由有三:
- 规模:亿级参数面前,全量梯度已是奢侈, 的 Hessian 更无从谈起——牛顿法谱系在此终结
- 非凸景观:高维损失面的主敌是鞍点 (saddle point) 而非坏极小(Dauphin et al. 2014);鞍点近旁梯度近乎为零,精确的全量梯度会无限期滞留,mini-batch 的噪声恰好把参数推离鞍点
- 隐式正则 (implicit regularization):SGD 偏好 flat minima,大 batch 精算出的解常落进 sharp minima、泛化更差(Keskar et al. 2017)
此后的演进是对这三重现实的层层修补:momentum(Polyak 1964)以重球惯性穿越病态谷底;Nesterov 加速(1983)给出一阶方法的理论最优收敛率;Adam(2014)用逐坐标自适应步长驯服梯度量级的悬殊。谱系的每一环,都长在柯西那个更新式的骨架上。
尾声:工程倒逼 rigor 的三百年
回望这条线,它与 数学三次危机 全无纠葛——优化从未经历基础的地动山摇。它的 rigor 是被需求一寸寸拽出来的:天文的误差、后勤的表格、统计的估计、GPU 的吞吐,方向恰好与 分析的严格化 相反——不是数学清算自身,而是工程把数学往前推。今天调 learning rate、写 cosine warmup 的每个动作,都是这条三百年流水线上的最新工位。