数值方法(如何真正求解)
上级:optimization
闭式解 ∇=0 很少能直接求出;你需要迭代:xₖ₊₁ = xₖ + step。以下是几大类方法。
一阶方法(使用梯度)
- 梯度下降
x ← x − η∇f(= 梯度流 ODE 上的前向欧拉法,dynamics-to-a-fixed-point); - 次梯度法(非光滑)、近端梯度法(光滑项+简单非光滑项)、镜像下降(非欧几里得几何);
- 加速方法:重球法(Polyak)、Nesterov 加速(= 一个带阻尼的二阶 ODE);对凸问题能达到最优的
O(1/k²)收敛率; - 坐标下降(每次只更新一个分块)。
二阶方法(使用曲率)
- 牛顿法
x ← x − (∇²f)⁻¹∇f(二次收敛,但 Hessian 计算代价高); - 拟牛顿法(BFGS / L-BFGS —— 从梯度中构造曲率信息);
- 高斯-牛顿法 / Levenberg–Marquardt 法(最小二乘问题)。
约束求解器
- 投影梯度法(每一步都投影回可行集);
- 内点法 / 障碍法(远离边界;凸锥规划问题的主力方法);
- 增广拉格朗日法、ADMM(算子分裂 —— 分解 + 一致性步骤;即先分解再重组);
- 有效集法、SQP(序列二次规划)。
全局化——优化过程的"闸门"
每一步提议的更新都必须被接受:
- 线搜索(Armijo / Wolfe 充分下降条件);
- 信赖域法(当模型预测的下降量在实际中兑现、比值
ρ良好时接受;否则收缩后重试)。 → 这个接受/拒绝的检验,正是 stages-gates-as-hard-optimization 中的闸门。
统一的视角
其中大多数方法都是收缩映射的不动点迭代 / 通往平衡点的离散化流(dynamics-to-a-fixed-point);算子分裂/单调算子理论(例如 ADMM、近端方法)把许多方法统一在同一个不动点框架之下。