Learning
VOL. VI · NO. 38 · Mathematics · 01 JAN 1970

梯度下降与迭代优化:蒙眼下山的艺术

数学 · 01 JAN 1970 · 11 min read · 2,573 words
· · ·

芒格思维模型课 · 第38讲

梯度下降与迭代优化:蒙眼下山的艺术

想象你被蒙住双眼放在山上,目标是下到谷底。你能感受到脚下的坡度,但看不到远处。梯度下降就是「最陡下坡方向走一小步」——这是机器学习的核心算法,也是「迭代逼近最优」的元思维模型。


核心概念

定义:迭代优化算法通过反复更新参数逐步逼近最优解。核心思想:不一次找答案,而是「每一步都比上一步好一点」。梯度下降利用目标函数的梯度(最陡上升方向)的反向作为更新方向。

梯度下降(Gradient Descent)

$$x_{t+1} = x_t - \eta \nabla f(x_t)$$

  • $\eta$:学习率(步长)
  • $\nabla f$:梯度(最陡上升方向)
  • 负号:往走(最小化 $f$)

直觉:站在 $x_t$,感受脚下坡度 $\nabla f$,往下坡方向走一小步 $\eta$。

牛顿法(Newton’s Method)

$$x_{t+1} = x_t - [\nabla^2 f(x_t)]^{-1} \nabla f(x_t)$$

  • $\nabla^2 f$:海森矩阵(二阶导数)
  • 曲率信息调整步长和方向

直觉:梯度下降只看坡度;牛顿法看坡度曲率,能更精准地一步到位。但海森矩阵求逆昂贵,且可能非正定。

随机梯度下降(SGD)

每次只用一个或一小批样本估计梯度:

$$x_{t+1} = x_t - \eta \nabla f_i(x_t) \quad (i \text{ 随机选取})$$

  • 优势:每步便宜,能处理海量数据
  • 代价:梯度估计有噪声,轨迹震荡

动量法与自适应学习率

  • 动量(Momentum):累积历史梯度方向,抑制震荡 $$v_t = \gamma v_{t-1} + \eta \nabla f(x_t), \quad x_{t+1} = x_t - v_t$$
  • Adam:自适应调整每个参数的学习率,结合动量和梯度二阶矩

数学直觉

直觉一:为什么负梯度是最陡下降方向?

梯度 $\nabla f$ 是函数上升最快的方向。负梯度 $-\nabla f$ 自然是下降最快的方向。

严格论证:方向 $d$ 上的方向导数 $\nabla f \cdot d$,由柯西不等式,$|\nabla f \cdot d| \leq |\nabla f| \cdot |d|$,等号当 $d \parallel \nabla f$。所以最大下降方向是 $d = -\nabla f / |\nabla f|$。

直觉二:学习率的两难

  • 学习率太大:可能跨过谷底,震荡发散
  • 学习率太小:收敛缓慢,可能卡在局部最优

现代解法

  • 学习率衰减:开始大步探索,后期小步精修
  • 自适应(Adam, RMSprop):根据梯度历史调整各维度步长
  • Warmup:从极小学习率线性增长,避免初期不稳定

直觉三:噪声是 SGD 的特色

SGD 的随机性不是缺陷,而是特性

  • 正作用:噪声帮助跳出局部最优、锐谷,找到更平坦的极小值(泛化更好)
  • 负作用:收敛慢,最后阶段在最优附近震荡
  • 现代实践:开始用大 batch + 大学习率探索,后期减小学习率精修

洞察:深度学习的「神奇效果」部分来自 SGD 噪声的隐式正则化——它倾向于找「平坦极小值」,泛化更好。

直觉四:条件数与病态问题

条件数 $\kappa = \lambda_{\max} / \lambda_{\min}$(海森矩阵的最大最小特征值之比):

  • $\kappa$ 小(接近 1):各方向曲率相近,梯度下降高效
  • $\kappa$ 大:各方向曲率差异大,梯度下降震荡——「狭长山谷」问题

牛顿法的优势:通过乘 $[\nabla^2 f]^{-1}$ 把椭圆等高线「变圆」,条件数变为 1。

实务:预处理共轭梯度、BFGS 拟牛顿法、自然梯度法都是不同方式的「条件数修复」。


跨学科应用

商业:A/B 测试的迭代优化

产品优化本质是 SGD:

  • 每次实验 = 一次梯度估计(用户反馈 = 梯度信号)
  • 部署改进 = 参数更新
  • 学习率 = 改动幅度(太大风险高,太小迭代慢)

洞察:「快速迭代」「小步快跑」= 小学习率 SGD。但若市场条件变化快(非平稳),需要更大学习率适应——这是「敏捷」与「稳健」的权衡。

投资:参数调优与回测陷阱

量化策略的参数优化:

  • 在历史数据上 $\min \text{Loss}(\theta)$
  • 梯度下降或网格搜索找最优参数

陷阱

  • 过拟合:在训练集上找到「最优」,实盘失效——损失函数的「尖锐极小值」
  • 缓解:正则化、交叉验证、SGD 噪声找「平坦极小值」

洞察:投资策略的「鲁棒性」对应优化中的「平坦极小值」——对参数微扰不敏感的策略更可能在未来有效。

决策:迭代逼近的智慧

复杂决策无法一次性求解,应迭代逼近

  1. 第一性原理初值:从最简模型出发,得到 $x_0$
  2. 小步试探:$x_{t+1} = x_t - \eta \nabla f$,每步根据反馈调整
  3. 动量累积:方向一致时加速,方向变化时减速
  4. 学习率衰减:早期大改,后期微调

芒格式洞察:「持续学习」「反馈修正」就是梯度下降的人生版。但要注意:

  • 学习率过大 = 反应过度,被噪声驱使
  • 学习率过小 = 固执己见,错过趋势
  • 动量 = 经验累积,但要警惕「过时经验」的惯性

机器学习的训练哲学

  • Loss surface:高维非凸,但局部最优往往足够好
  • Batch size:小 batch 噪声大但泛化好,大 batch 平稳但易过拟合
  • Learning rate schedule:cosine decay、warmup、cyclic LR 都是「学习率的艺术」

深度学习的奇迹:在超高维(亿级参数)的非凸优化中,SGD 居然能找到泛化极好的解。这背后的数学仍未完全理解,但经验上有效


课后测验

题目 1(单选)

关于 SGD 与全梯度下降(Batch GD)的对比,下列说法最准确的是:

A. Batch GD 总是比 SGD 收敛快 B. SGD 每步计算更便宜,但梯度有噪声 C. SGD 不能收敛到最优解 D. Batch GD 不存在局部最优陷阱

查看答案与解析

答案:B

  • A 错:在大数据集上,Batch GD 每步昂贵,整体时间可能比 SGD 长
  • B 对:SGD 每步只用一个/小批样本,便宜但梯度估计有方差
  • C 错:随着学习率衰减,SGD 可以收敛到最优(凸情况下有理论保证)
  • D 错:Batch GD 也会陷入局部最优,且缺乏 SGD 的噪声跳出机制

核心洞察:SGD 的噪声是 feature 不是 bug——它带来更好的泛化和逃离局部最优的能力。

题目 2(案例分析)

某深度学习模型在训练集上 loss 持续下降,但验证集 loss 在第 50 epoch 后开始上升。

问题:从优化理论角度解释这一现象。至少提出三种基于梯度下降思路的缓解方法,并说明各自的代价。

查看答案与解析

现象解释:典型过拟合。模型在训练集上找到了「尖锐极小值」,对训练数据记忆过细,泛化能力差。验证集 loss 上升意味着优化轨迹进入了泛化差的区域。

缓解方法

  1. 早停(Early Stopping)

    • 在验证集 loss 开始上升时停止训练
    • 代价:可能没充分挖掘训练集信息;需要验证集监控
  2. 降低学习率 + 增大 batch size

    • 后期小学习率 + 大 batch 让轨迹更平稳,找到平坦极小值
    • 代价:计算成本上升,可能陷入局部最优
  3. 正则化(L2 / Dropout)

    • 修改损失函数 $f + \lambda |w|^2$,约束参数大小
    • 代价:欠拟合风险,需调 $\lambda$
  4. 数据增强

    • 增加训练数据多样性,让模型学到不变特征
    • 代价:训练时间增加,可能引入伪标签
  5. SGD 噪声调优

    • 用更小 batch、添加梯度噪声,倾向于平坦极小值
    • 代价:训练震荡,收敛慢

洞察:所有方法本质都是「在优化精度和泛化能力之间找平衡」——这是机器学习与统计学的核心张力。

题目 3(反事实)

假设梯度下降算法从未被发明(人类只能用解析法或网格搜索求解优化问题),现代哪些领域会根本性改变?至少列举两个并说明。

查看答案与解析

会根本改变的领域

  1. 没有深度学习:神经网络的参数空间达亿级,解析解不可能,网格搜索指数爆炸。失去梯度下降,CNN、Transformer、大语言模型都不存在——计算机视觉、NLP、推荐系统都退回规则时代。

  2. 没有大规模科学计算:有限元仿真、流体力学、天气预报的参数优化依赖梯度下降变种。失去它,工程仿真能力倒退数十年。

  3. 没有现代量化金融:投资组合优化、参数校准、衍生品定价的数值方法依赖迭代优化。失去它,复杂衍生品定价、风险模型校准不可行。

  4. 没有自动控制系统:机器人控制、自动驾驶、过程优化的模型预测控制(MPC)依赖在线优化。失去它,现代控制理论倒退到 PID 时代。

替代方案的局限

  • 解析法:只对极少数问题可行(线性、凸且光滑)
  • 网格搜索:维度灾难,$O(c^d)$ 不可行
  • 进化算法:对低维有效,但高维深度学习不可承受

核心洞察:梯度下降是「让计算机自己学习」的数学基石。失去它,人工智能从「学习」退化为「编程」。


本课要点

  1. 梯度下降 = 最陡下坡方向:负梯度是下降最快的方向
  2. 学习率两难:太大震荡,太小缓慢,需动态调整
  3. SGD 噪声是特性:帮助跳出局部最优,提升泛化
  4. 条件数 = 病态度量:海森矩阵特征值比决定收敛速度
  5. 应用三连:A/B 测试迭代、策略参数调优、人生迭代修正

延伸阅读

  • Goodfellow, Bengio, Courville, 《Deep Learning》第 4, 8 章 — 优化算法深度讲解
  • Boyd & Vandenberghe, 《Convex Optimization》第 9 章 — 凸优化的数值方法
  • Ruder, 《An Overview of Gradient Descent Optimization Algorithms》 — 综述

下一步

下一课:信息论 — 熵、互信息、KL 散度:用比特度量不确定性。