梯度算法的工程化使用
同一个下降方向,步子不同,可能得到快速收敛、来回震荡,也可能直接发散。实际使用梯度算法时,算法名只占很小一部分;步长规则、变量尺度、停止条件和约束处理,才决定结果是否可信。

三种步长策略
固定步长使用预先选定的 α,实现简单但需要知道曲率尺度。精确线搜索沿给定方向求
αk=argα≥0minf(xk+αdk).
对二次函数和方向 dk=−gk,令一维函数导数为零可得
αk=gkTQg
回溯线搜索从较大的候选步长开始,不断乘以 β∈(0,1),直到满足 Armijo 充分下降:
f(xk+αdk)≤f(x
其中 dk 是下降方向、σ∈(0,1)。右侧允许的下降量与一阶预测成比例,过大的步长会被缩小。

条件数与锯齿
正定 Hessian 的条件数 κ=λmax/λmin 衡量等高线的狭长程度。κ 大时,负梯度几乎横穿狭长谷底,下一步又从另一侧折回,导致锯齿和慢收敛。合适的线搜索能避免发散,却不能消除几何上的病态。

预条件化用变量变换或矩阵 P 改善尺度,使新坐标中的曲率更均衡。它没有改变原问题的含义,只改变算法看到的几何。若 P 选得不好,计算代价或数值误差也可能上升。

有约束时投影回可行域
若变量必须满足简单集合 C,投影梯度更新为
xk+1=ΠC(xk−
其中 ΠC(z) 是离 z 最近的可行点。对盒约束 li≤x,投影就是逐坐标截断;对概率向量单纯形,投影需要保持非负且总和为 1。投影不是把不可行解“修饰一下”,它改变了实际搜索方向,停止时应结合 KKT 残差判断。

诊断一份迭代日志
至少同时看目标值、梯度范数、步长和约束违反量。目标下降但约束违反越来越大,说明实现把投影/可行性遗漏了;梯度范数不降且步长不断缩小,可能是尺度、非凸性或错误梯度;目标值上下交替增长,优先检查步长和方向符号。

练习
- 为什么 Armijo 条件右侧要含 gkTdk?
gkTdk<0 表示方向是一阶下降方向。右侧用它给出随步长缩放的一阶下降基准,实际下降不够时就拒绝该步。
- 条件数很大时,精确线搜索是否一定让梯度法一步到解?
不一定。精确线搜索只在当前方向上选最优步长,狭长谷底的梯度方向仍可能横向摆动;条件数大通常意味着整体收敛变慢。
- 盒约束投影如何处理候选值 zi<li?
取 ΠC(z)i=li。它把该坐标截回可行区间;若 z 则截到 ,区间内则保持原值。