⬇️ 优化是机器学习的核心引擎:如何系统地找到损失函数的最小值?
优化问题的一般形式
minθ∈Rnf(θ)
可能带约束:gi(θ)≤0,hj(θ)=0
梯度下降
基本更新规则
θt+1=θt−η∇f(θt)
其中 η>0 为学习率(步长)。
沿函数值减小最快的方向(负梯度方向)移动,如同在山坡上找最低点。
收敛条件
- f 凸且可微
- 学习率足够小:η<L2(L 为梯度的 Lipschitz 常数)
梯度下降的变体
批量梯度下降(Batch GD)
每步用全部训练数据计算梯度,精确但慢。
随机梯度下降(SGD)
每步随机用一个样本,快但噪声大:
θt+1=θt−η∇fi(θt)
小批量梯度下降(Mini-batch GD)
每步用 B 个样本(B = 32, 64, 128...),兼顾速度与稳定性。
自适应学习率算法
Momentum
vt+1=βvt+∇f(θt),θt+1=θt−ηvt+1
积累历史梯度方向,加速穿越平坦区域,减少震荡。
RMSProp
st+1=ρst+(1−ρ)(∇f)2,θt+1=θt−st+1+εη∇f
对不同参数自适应调整步长。
Adam(最常用)
结合 Momentum + RMSProp:
mt+1=β1mt+(1−β1)∇f
vt+1=β2vt+(1−β2)(∇f)2
θt+1=θt−ηv^t+1+εm^t+1
默认超参数:β1=0.9,β2=0.999,ε=10−8
凸优化理论
凸函数
f(λx+(1−λ)y)≤λf(x)+(1−λ)f(y),λ∈[0,1]
性质:局部最优 = 全局最优。
判断凸性
- f′′(x)≥0(一维)
- Hessian 矩阵半正定(多维)
强凸函数
f(y)≥f(x)+∇f(x)T(y−x)+2μ∣y−x∣2
收敛速率从 O(1/t) 提升到 O(e−μt/L)(线性收敛)。
约束优化:Lagrange 乘数法
minf(x),s.t. g(x)=0
KKT 条件:
∇f=λ∇g,g(x)=0
直觉:最优点处目标函数的等值线与约束曲线相切。
学习率调度策略
| 策略 | 公式 | 适用场景 |
|---|
| 固定学习率 | ηt=η0 | 简单任务 |
| 指数衰减 | ηt=η0⋅γt | 一般训练 |
| 余弦退火 | ηt=ηmin+21(ηmax−ηmin)(1+cosTtπ) | 深度学习 |
| Warmup | 先线性增加再衰减 | Transformer |
Manim 可视化思路
- 梯度下降路径:等高线图上的下降轨迹,对比 GD/SGD/Adam
- 鞍点陷阱:展示梯度为 0 但不是极值的点
- 学习率影响:步长过大发散,步长过小收敛慢
- Momentum 动画:普通 GD 震荡 vs Momentum 平滑收敛的对比