01 骨架流程与判定准则 🧭 下降方向罗盘探针 02 步长策略四维对比 03 核心定理:梯度与搜索方向正交 🔬 Zig-zag 锯齿震荡沙盒 04 近似线搜索与 Armijo 割线 📉 1D 回溯单步图解 📑 曲率与 Wolfe 条件 05 四大停机准则 🌐 多峰地形与随机多起点 ⚡ 二次型精确步长计算器
🎯 课件重点深入覆盖 📐 $\nabla f(x_{k+1})^T d_k = 0$ 严格正交 ⚡ 病态条件数 Zig-zag 锯齿模拟 💡 Armijo 割线与 Wolfe 条件 🧮 考题解析步长一键推导

无约束规划:下降法全景教学

当目标函数维度极高或 $\nabla f(x)=0$ 为难以解析求解的非线性方程组时,下降法 (Descent Algorithm) 成为无约束优化的核心工作马。 本页带你从“下降方向内积判据”推导,透彻掌握精确线搜索的“相邻垂直正交性”、狭谷之字形震荡、以及现代优化工程标配的 Armijo 回溯与 Wolfe 近似准则!

🔄

01 下降算法核心骨架与三大要素

从初始点到收敛极小点的规范状态转移逻辑

对于无约束优化问题 $\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^*$,则称算法收敛。

Step 0
选定初始点
Step 1
确定下降方向
Step 2
计算步长因子
Step 3
状态点更新
Step 4
检验停机准则

设计下降算法的三大灵魂要素

🧭 要素一:选择下降方向 $d^{(k)}$

必须保证沿该方向函数值能够下降。构造方法包括:梯度下降法(一阶)、共轭梯度法(一阶历史共轭)、牛顿法(二阶 Hessian)、拟牛顿法(BFGS/DFP 近似二阶)。

📏 要素二:计算步长因子 $\alpha_k$

在射线 $x^{(k)} + \alpha d^{(k)}$ 上移动多远?取值策略包括:固定步长、衰减学习率、精确线搜索(压榨到一维极小)、近似线搜索(Armijo/Wolfe 快速充分下降)。

🛑 要素三:定义停机规则

理论停机条件是一阶必要条件 $\nabla f(x^*) = 0$。数值计算中采用:梯度模长低于阈值 $\|\nabla f\| < \varepsilon$、目标改善量低于阈值 $|f_{k+1}-f_k| < \varepsilon$、相对改善量或达到最大迭代步数。

下降方向的充要判定准则与严格一阶泰勒推导

【下降方向定义】 设 $f: \mathbb{R}^n \to \mathbb{R}$ 一阶连续可微,若方向 $d \in \mathbb{R}^n$ 满足: $$\nabla f(x)^T d < 0$$ 则称 $d$ 为 $f$ 在点 $x$ 处的一个下降方向 (Descent Direction)。
📜 展开查看:基于一阶泰勒公式的 $\delta$-语言严格数学证明 ▼

证明: 由多维函数的一阶泰勒公式(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$)”的直观几何意义!

在圆盘内拖动鼠标/手指,旋转搜索方向向量 $d$
探针实时数据监测
梯度向量 $\nabla f(x)$ 方向: 固定向正上 (90°)
搜索方向 $d$ 角度: 270.0°
夹角 $\theta = \angle(\nabla f, d)$: 180.0°
内积 $\nabla f(x)^T d$: -1.0000
判定性质: 最速下降方向 (Negative Gradient)
当前夹角为 $180^\circ$(即反向),$\cos 180^\circ = -1$ 取得负最大值,此时 $d = -\nabla f(x)$ 为最速下降方向 (Steepest Descent Direction)!
📊

02 步长因子 $\alpha_k$ 四大策略对比

步长大小决定了算法是稳健收敛、极慢爬行,还是震荡发散

步长策略 数学定义与更新规则 优点 典型缺点与风险 工业应用场景
固定步长 (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)

🕹️ 步长行为对比探针:在 $f(x) = x^2$ 上的收敛行为

点击下方按钮切换步长策略,直观观察从 $x_0 = 4.0$ 出发寻找最小值 $x^* = 0$ 的轨迹。

当前策略:固定合适步长 状态:已完成
点击上方按钮进行模拟演练...
📐

03 精确线搜索核心定理:梯度与搜索方向正交性

最速下降法(精确步长)相邻搜索方向严格正交与 Zig-zag 锯齿震荡

【核心定理:精确步长正交定理】

设 $f: \mathbb{R}^n \to \mathbb{R}$ 一阶连续可微,若 $d^{(k)}$ 是第 $k$ 步的下降方向,精确步长满足: $$\alpha_k = \arg\min_{\alpha \ge 0} f(x^{(k)} + \alpha d^{(k)})$$ 则在新迭代点 $x^{(k+1)} = x^{(k)} + \alpha_k d^{(k)}$ 处,目标函数的梯度与当前搜索方向严格正交: $$\nabla f(x^{(k+1)})^T d^{(k)} = 0$$
📜 查看极简严格证明(FONC 导数链式法则) ▼

证明: 构造一元实函数 $\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$$

证毕!

几何直观: 在射线上移动时,当且仅当射线与点 $x^{(k+1)}$ 处的等高线切线平行时,沿该射线的函数值才停止下降(达到极小)。而梯度向量 $\nabla f(x^{(k+1)})$ 恒与等高线切线垂直,因此梯度必与搜索射线 $d^{(k)}$ 严格正交!

💡 核心反思:最速下降法中相邻步方向垂直

当搜索方向采用负梯度方向(最速梯度下降)时: $$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$ 垂直!

为什么会出现“之字形”(Zig-zag) 锯齿震荡?

对于二次型目标函数 $f(x) = \frac{1}{2} x^T Q x$,等高线为同心椭圆。其 Hessian 矩阵 $Q$ 的条件数 (Condition Number) 定义为最大特征值与最小特征值之比: $$\kappa(Q) = \frac{\lambda_{\max}}{\lambda_{\min}} \ge 1$$

当 $\kappa = 1$(圆形等高线,条件数极佳)

等高线为正圆,在任意点处,负梯度方向 $-\nabla f(x)$ 都恰好直接指向圆心(全局极小值点 $x^*$)。 根据精确线搜索定理,仅需 1 步迭代即可直接精准到达极小点! 完全没有多余锯齿。

当 $\kappa \gg 1$(狭长扁平椭圆,病态条件数)

等高线长轴扁平、短轴极陡。梯度方向近乎垂直于狭谷陡壁指向对侧,而不是顺着谷底走向中心! 因为相邻方向严格 $90^\circ$ 垂直,导致迭代轨迹在峡谷两侧来回反弹、极难沿着长轴前行,形成典型的 “Zig-zag 锯齿震荡”,收敛速度呈指数级变慢!

理论收敛界限: 最速下降法的目标函数收敛速度严格受条件数制约: $$\frac{f(x^{(k+1)}) - f(x^*)}{f(x^{(k)}) - f(x^*)} \le \left( \frac{\kappa - 1}{\kappa + 1} \right)^2$$ 若 $\kappa = 100$,则 $\left(\frac{99}{101}\right)^2 \approx 0.961$,每一步函数值只缩减不到 4%,需要成百上千步才能逼近极小点!

🔬 交互式 2D 动态轨迹模拟器:Zig-zag 锯齿震荡实验台

拖动滑动条调节椭圆条件数 $\kappa$ 或切换到经典的 Rosenbrock 香蕉函数。点击画布任意处可重设起点!注意观察拐角处绘制的黄色直角符号 ($\llcorner$),直观感受相邻两步的严格垂直正交性。

🖱️/👆 点击或滑动设置起点 · 触摸终点单步步进
椭圆长短轴比率 / 条件数 $\kappa$ 10.0
κ=1 (正圆, 1步收敛) κ=40 (极度扁平, 剧烈震荡)
主轴旋转角度 $\theta$ 30°
迭代步数 $k$: 0
当前坐标 $(x, y)$: (0.00, 0.00)
函数值 $f(x, y)$: 0.0000
梯度模长 $\|\nabla f\|$: 0.0000
相邻内积 $d^{(k+1)} \cdot d^{(k)}$: -- (未产生)
📈

04 近似线搜索准则与 Armijo 回溯

为什么工程中放弃精确线搜索?如何用低代价换取充足下降保证?

Armijo 充分下降条件 (Armijo Condition)

在实际应用中,精确求解 $\min_{\alpha \ge 0} \phi(\alpha)$ 太过耗时。我们退而求其次:只要步长 $\alpha$ 能让目标函数产生“足够大”的下降量,就可以接受。

【Armijo 充分下降判定公式】
选择步长 $\alpha > 0$,使得: $$f(x^{(k)} + \alpha d^{(k)}) \le f(x^{(k)}) + \alpha \beta \nabla f(x^{(k)})^T d^{(k)}$$ 其中 $\beta \in (0, 1)$ 为常数参数(工程通常取 $\beta = 10^{-4}$)。
  • $\beta = 0$ 的极端情况: 只要 $f(x^{(k+1)}) < f(x^{(k)})$ 有任何一丁点下降就接受(可能导致步长极慢停滞)。
  • $\beta = 1$ 的极端情况: 要求下降量超过一阶泰勒线性近似。由于函数是凸的或有曲率,这通常不可能满足。
  • 实际意义: 割线斜率为 $\beta \nabla f(x)^T d$(比原切线斜率平缓)。要求实际曲线位于该割线下方,有效防止步长过大导致超调或爬升!

回溯线搜索算法 (Backtracking Line Search)

算法执行步骤

  1. 给定初始步长 $\alpha = \alpha_{\text{init}}$(通常取 $1.0$),缩减因子 $p \in (0, 1)$(如 $p = 0.5$),充分下降参数 $\beta \in (0, 1)$(如 $\beta = 10^{-4}$);
  2. 检验 Armijo 条件: $$f(x + \alpha d) \le f(x) + \alpha \beta \nabla f(x)^T d$$
  3. 若满足条件,则接受当前 $\alpha$,输出并退出线搜索;
  4. 若不满足,则步长折半缩减:$\alpha \leftarrow p \cdot \alpha$,返回第 2 步继续检验。
💡 核心哲学:“从大到小,不断折半,直到跌入安全区”。平均仅需 1~3 次函数评估!

📉 交互式一维射线图解:切线、割线与回溯折半动态演练

下图展示沿搜索方向的一维曲线 $\phi(\alpha) = f(x + \alpha d)$。白色虚线为一阶切线,蓝色虚线为 Armijo 割线,绿色高亮为充分下降步长区间 $[0, \alpha_{\max}]$。点击“单步回溯折半”,亲眼见证步长点从红色危险区(过大爬升)一步步收紧至绿色可接受区间!

🖱️/👆 点击或滑动水平调节步长 α
充分下降系数 $\beta$ 0.20
注:教学为便于肉眼观察取 0.2,实际工程常取 1e-4
缩减因子 $p$ 0.50
当前候选步长 $\alpha$: 1.0000
真实函数值 $\phi(\alpha)$: 0.0000
Armijo 上界 $l_\beta(\alpha)$: 0.0000
判定结果: 不满足 (步长过大)

📑 进阶准则:曲率条件 (Curvature) 与 Wolfe 条件全景卡片

为什么单有 Armijo 充分下降条件还不够?

Armijo 条件只能防止步长过大。但极为微小的步长(如 $\alpha = 10^{-10}$)在数学上总是能轻而易举满足 Armijo 条件!如果算法采纳极小步长,虽然步步都在下降,但每步位移几乎为 0,可能在尚未到达极小点前就提前停滞发散。

曲率条件 (Curvature Condition) 的防短机制

为了防止步长过小,要求新点处的方向导数斜率比初始点显著平缓: $$\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) 理论保证正定性更新的必备准则
🛑

05 停机规则体系与多局部最优随机启动

如何科学判定收敛?面对多坑洼多局部最优,如何跳出陷阱找到全局最优?

工业界常用的四大停机准则

  • 一阶最优性梯度模准则: $\|\nabla f(x^{(k)})\| < \varepsilon$
    最坚实可靠的准则。直接逼近 FONC $\nabla f(x^*) = 0$。
  • 目标函数绝对改善量: $|f(x^{(k+1)}) - f(x^{(k)})| < \varepsilon_f$
    当函数值不再有实质减少时停机。
  • 目标函数相对改善量: $\frac{|f(x^{(k+1)}) - f(x^{(k)})|}{\max\{1, |f(x^{(k)})|\}} < \varepsilon_r$
    消除函数值绝对量纲尺度的影响。
  • 最大步数保底: $k \ge k_{\max}$
    防止程序陷入无限死循环的系统硬边界。

⚠️ 必须警惕的陷阱:平坦鞍点假死

如果仅使用目标改善量 $|f_{k+1}-f_k| < \varepsilon$ 作为停机条件,当算法进入高原区、极缓坡面或马鞍面附近时,每一步由于梯度本身很小导致函数值改善极微,极容易误判为已经收敛到极值点而提前退出!

工程最佳实践: 永远将梯度范数准则 $\|\nabla f\| < \varepsilon$ 作为主判据,搭配相对改善量与步数上限进行多重联合判定!

🌐 多局部最优与随机多起点策略 (Random Multi-start)

下降法是典型的局部搜索算法,最终收敛到哪个坑,完全取决于初始点 $x^{(0)}$ 落在哪个吸引盆地中。 下方展示著名的 Himmelblau 多峰测试函数: $$f(x, y) = (x^2 + y - 11)^2 + (x + y^2 - 7)^2$$ 它拥有 4 个完全相等的全局极小值点(函数值均为 0)。点击“并发 12 个随机起点”,观察各个点如何分别滑入不同的盆地,并最终选出最优解!

🖱️/👆 触控点击画布任意位置释放单点下降粒子

4 大理论全局极小值参考点:

  • 🔹 点 A: $(3.000, 2.000), f = 0$
  • 🔹 点 B: $(-2.805, 3.131), f = 0$
  • 🔹 点 C: $(-3.779, -3.283), f = 0$
  • 🔹 点 D: $(3.584, -1.848), f = 0$
多起点探索统计表:
点击“随机 12 起点并发”查看收敛分布...
🧮

06 作业与做题工具箱:二次型精确步长解析求解器

课件例题与考试必考题型:一维精确步长公式 $\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}$$

一键加载经典考题参数:
点击上方“执行单步规范推导计算”,系统将自动生成考试标准步骤手写体推导与正交性校验!