当目标函数维度极高或 $\nabla f(x)=0$ 为难以解析求解的非线性方程组时,下降法 (Descent Algorithm) 成为无约束优化的核心工作马。 本页带你从“下降方向内积判据”推导,透彻掌握精确线搜索的“相邻垂直正交性”、狭谷之字形震荡、以及现代优化工程标配的 Armijo 回溯与 Wolfe 近似准则!
从初始点到收敛极小点的规范状态转移逻辑
对于无约束优化问题 $\min_{x \in \mathbb{R}^n} f(x)$,下降算法通过迭代产生一个序列 $\{x^{(k)}\}_{k=0}^\infty$,使得目标函数值严格单调递减: $f(x^{(k+1)}) < f(x^{(k)})$。若 $\lim_{k\to\infty} x^{(k)} = x^*$,则称算法收敛。
必须保证沿该方向函数值能够下降。构造方法包括:梯度下降法(一阶)、共轭梯度法(一阶历史共轭)、牛顿法(二阶 Hessian)、拟牛顿法(BFGS/DFP 近似二阶)。
在射线 $x^{(k)} + \alpha d^{(k)}$ 上移动多远?取值策略包括:固定步长、衰减学习率、精确线搜索(压榨到一维极小)、近似线搜索(Armijo/Wolfe 快速充分下降)。
理论停机条件是一阶必要条件 $\nabla f(x^*) = 0$。数值计算中采用:梯度模长低于阈值 $\|\nabla f\| < \varepsilon$、目标改善量低于阈值 $|f_{k+1}-f_k| < \varepsilon$、相对改善量或达到最大迭代步数。
证明: 由多维函数的一阶泰勒公式(Taylor Expansion),在 $x$ 处沿方向 $d$ 前进 $\alpha > 0$:
$$f(x + \alpha d) = f(x) + \alpha \nabla f(x)^T d + o(\alpha)$$两边减去 $f(x)$ 并同除以 $\alpha > 0$:
$$\frac{f(x + \alpha d) - f(x)}{\alpha} = \nabla f(x)^T d + \frac{o(\alpha)}{\alpha}$$由于 $\nabla f(x)^T d = c < 0$ 是一个确定的负常数,而当 $\alpha \to 0^+$ 时,高阶无穷小项满足 $\lim_{\alpha \to 0^+} \frac{o(\alpha)}{\alpha} = 0$。
取极限定义中的 $\epsilon = \frac{|c|}{2} > 0$,必存在 $\delta > 0$,使得当 $0 < \alpha < \delta$ 时: $$\left| \frac{o(\alpha)}{\alpha} \right| < \frac{|c|}{2} \implies \frac{f(x + \alpha d) - f(x)}{\alpha} \le c + \frac{|c|}{2} = \frac{c}{2} < 0$$
因此,对任意 $\alpha \in (0, \delta)$,均有: $$f(x + \alpha d) < f(x)$$ 结论: 只要内积 $\nabla f(x)^T d < 0$,就必然存在一个非空的步长区间 $(0, \delta)$,使得目标函数值严格下降!
拖动罗盘上的白色箭头 $d$ 改变搜索方向,观察与梯度向量 $\nabla f(x)$(红色固定朝上)的夹角 $\theta$ 与点积 $\nabla f^T d = \|\nabla f\| \|d\| \cos\theta$。感受“内积为负 $\iff$ 夹角为钝角 ($90^\circ < \theta \le 180^\circ$)”的直观几何意义!
步长大小决定了算法是稳健收敛、极慢爬行,还是震荡发散
| 步长策略 | 数学定义与更新规则 | 优点 | 典型缺点与风险 | 工业应用场景 |
|---|---|---|---|---|
| 固定步长 (Constant) | $\alpha_k = \alpha > 0$ 恒定不变 | 实现极简,无需每步额外计算,无搜索开销 |
若 $\alpha$ 过小,收敛如蜗牛; 若 $\alpha > 2/L$(超出 Lipschitz 倒数),会在谷底两侧剧烈震荡甚至发散暴走 |
凸性极佳、Lipschitz 常数已知的理论模型 |
| 衰减步长 (Decay) | $\alpha_k = \alpha_0 \gamma^{k-1}$ 或 $\frac{\alpha_0}{\sqrt{k}}$ | 前期步长大跑得快,后期步长自适应收紧平息震荡 | 需要经验精调超参数 $\alpha_0, \gamma$,衰减过快可能在到达极小前停滞 | 机器学习、深度学习 SGD 优化器(带噪声目标函数) |
| 精确线搜索 (Exact) | $\alpha_k = \arg\min_{\alpha \ge 0} f(x^{(k)} + \alpha d^{(k)})$ | 每一步在该方向上将目标值压榨到理论极小,步长最理想 |
每一步都要解一个一维非线性优化,计算成本昂贵; 在非凸高维问题中极不划算 |
二次型理论分析、共轭梯度法 (CG) 解析推导 |
| 近似线搜索 (Inexact) | 满足 Armijo、Wolfe 等不等式准则即可 | 计算代价极低,只需几次简单回溯即可获得充分下降保障 | 需设定缩减率 $p$ 和衰减因子 $\beta$ | 现代工业界与科学计算标准算法(如 L-BFGS, scipy.optimize) |
点击下方按钮切换步长策略,直观观察从 $x_0 = 4.0$ 出发寻找最小值 $x^* = 0$ 的轨迹。
最速下降法(精确步长)相邻搜索方向严格正交与 Zig-zag 锯齿震荡
证明: 构造一元实函数 $\phi(\alpha) = f(x^{(k)} + \alpha d^{(k)})$。
由多维复合函数求导链式法则,$\phi(\alpha)$ 对标量 $\alpha$ 的一阶导数为:
$$\phi'(\alpha) = \frac{d}{d\alpha} f(x^{(k)} + \alpha d^{(k)}) = \nabla f(x^{(k)} + \alpha d^{(k)})^T d^{(k)}$$由于 $\alpha_k > 0$ 是一元可微函数 $\phi(\alpha)$ 在 $[0, +\infty)$ 内部取得的局部极小值点,根据一阶必要条件 (FONC):
$$\phi'(\alpha_k) = 0$$将 $\alpha_k$ 代入导数表达式,即得:
$$\nabla f(x^{(k)} + \alpha_k d^{(k)})^T d^{(k)} = \nabla f(x^{(k+1)})^T d^{(k)} = 0$$证毕!
当搜索方向采用负梯度方向(最速梯度下降)时: $$d^{(k)} = -\nabla f(x^{(k)}), \quad d^{(k+1)} = -\nabla f(x^{(k+1)})$$ 将此代入精确步长正交定理 $\nabla f(x^{(k+1)})^T d^{(k)} = 0$,立得: $$-(d^{(k+1)})^T d^{(k)} = 0 \iff (d^{(k+1)})^T d^{(k)} = 0$$ 深刻结论:最速下降法(精确步长)相邻两次迭代的搜索方向互成 $90^\circ$ 垂直!
对于二次型目标函数 $f(x) = \frac{1}{2} x^T Q x$,等高线为同心椭圆。其 Hessian 矩阵 $Q$ 的条件数 (Condition Number) 定义为最大特征值与最小特征值之比: $$\kappa(Q) = \frac{\lambda_{\max}}{\lambda_{\min}} \ge 1$$
等高线为正圆,在任意点处,负梯度方向 $-\nabla f(x)$ 都恰好直接指向圆心(全局极小值点 $x^*$)。 根据精确线搜索定理,仅需 1 步迭代即可直接精准到达极小点! 完全没有多余锯齿。
等高线长轴扁平、短轴极陡。梯度方向近乎垂直于狭谷陡壁指向对侧,而不是顺着谷底走向中心! 因为相邻方向严格 $90^\circ$ 垂直,导致迭代轨迹在峡谷两侧来回反弹、极难沿着长轴前行,形成典型的 “Zig-zag 锯齿震荡”,收敛速度呈指数级变慢!
拖动滑动条调节椭圆条件数 $\kappa$ 或切换到经典的 Rosenbrock 香蕉函数。点击画布任意处可重设起点!注意观察拐角处绘制的黄色直角符号 ($\llcorner$),直观感受相邻两步的严格垂直正交性。
为什么工程中放弃精确线搜索?如何用低代价换取充足下降保证?
在实际应用中,精确求解 $\min_{\alpha \ge 0} \phi(\alpha)$ 太过耗时。我们退而求其次:只要步长 $\alpha$ 能让目标函数产生“足够大”的下降量,就可以接受。
下图展示沿搜索方向的一维曲线 $\phi(\alpha) = f(x + \alpha d)$。白色虚线为一阶切线,蓝色虚线为 Armijo 割线,绿色高亮为充分下降步长区间 $[0, \alpha_{\max}]$。点击“单步回溯折半”,亲眼见证步长点从红色危险区(过大爬升)一步步收紧至绿色可接受区间!
Armijo 条件只能防止步长过大。但极为微小的步长(如 $\alpha = 10^{-10}$)在数学上总是能轻而易举满足 Armijo 条件!如果算法采纳极小步长,虽然步步都在下降,但每步位移几乎为 0,可能在尚未到达极小点前就提前停滞发散。
为了防止步长过小,要求新点处的方向导数斜率比初始点显著平缓: $$\nabla f(x^{(k)} + \alpha d^{(k)})^T d^{(k)} \ge \sigma \nabla f(x^{(k)})^T d^{(k)}$$ 其中 $\sigma \in (\beta, 1)$。注意两边内积均为负数,乘以 $\sigma < 1$ 意味着斜率绝对值缩小,保证沿射线走到了足够平缓的谷底区域!
| 条件名称 | 数学表达式 | 物理约束机制 | 工业经典参数推荐 |
|---|---|---|---|
| Armijo 充分下降条件 | $f(x+\alpha d) \le f(x) + \beta \alpha \nabla f^T d$ | 提供步长上界,防止跨过谷底剧烈上爬 | $\beta \in [10^{-4}, 0.1]$ |
| 曲率条件 (Curvature) | $\nabla f(x+\alpha d)^T d \ge \sigma \nabla f^T d$ | 提供步长下界,防止微小步长导致算法停滞 | 牛顿/拟牛顿法 $\sigma = 0.9$;共轭梯度法 $\sigma = 0.1$ |
| Wolfe 条件 | Armijo 条件 + 曲率条件 (同时满足) | 既防过大、又防过小,步长处于完美“黄金区间” | $0 < \beta < \sigma < 1$ |
| 强 Wolfe 条件 (Strong Wolfe) | Armijo 条件 + $|\nabla f(x+\alpha d)^T d| \le -\sigma \nabla f^T d$ | 更严格:不仅斜率变平,而且限制反向上爬的陡峭度 | 拟牛顿法 (BFGS) 理论保证正定性更新的必备准则 |
如何科学判定收敛?面对多坑洼多局部最优,如何跳出陷阱找到全局最优?
如果仅使用目标改善量 $|f_{k+1}-f_k| < \varepsilon$ 作为停机条件,当算法进入高原区、极缓坡面或马鞍面附近时,每一步由于梯度本身很小导致函数值改善极微,极容易误判为已经收敛到极值点而提前退出!
下降法是典型的局部搜索算法,最终收敛到哪个坑,完全取决于初始点 $x^{(0)}$ 落在哪个吸引盆地中。 下方展示著名的 Himmelblau 多峰测试函数: $$f(x, y) = (x^2 + y - 11)^2 + (x + y^2 - 7)^2$$ 它拥有 4 个完全相等的全局极小值点(函数值均为 0)。点击“并发 12 个随机起点”,观察各个点如何分别滑入不同的盆地,并最终选出最优解!
课件例题与考试必考题型:一维精确步长公式 $\alpha_k = \frac{g_k^T g_k}{g_k^T Q g_k}$ 闭式推导与验证
对于正定二次型目标函数: $$f(x) = \frac{1}{2} x^T Q x - b^T x$$ 其在 $x^{(k)}$ 处的梯度为 $g_k = \nabla f(x^{(k)}) = Q x^{(k)} - b$。取最速下降方向 $d^{(k)} = -g_k$。 沿射线的函数展开为: $$\phi(\alpha) = f(x^{(k)} - \alpha g_k) = f(x^{(k)}) - \alpha g_k^T g_k + \frac{1}{2} \alpha^2 g_k^T Q g_k$$ 令导数 $\phi'(\alpha) = - g_k^T g_k + \alpha g_k^T Q g_k = 0$,立得精确步长闭式解: $$\alpha_k = \frac{g_k^T g_k}{g_k^T Q g_k}$$