跳转至

牛顿法

最速下降法只用一阶导数,最坏情形只有线性收敛。牛顿法同时使用一阶与二阶导数:每步用二次函数贴合目标函数,直接跳到二次模型的极小点。代价是每步更贵、且只在极小点附近可靠——本页的主线就是"快"与"脆"这两面,以及为补"脆"而生的两个修正(阻尼步长、Levenberg–Marquardt)。

核心结论速览

结论 内容
牛顿迭代公式 \(\boldsymbol{x}^{(k+1)} = \boldsymbol{x}^{(k)} - \boldsymbol{F}(\boldsymbol{x}^{(k)})^{-1} \boldsymbol{g}^{(k)}\),\(\boldsymbol{g}^{(k)} = \nabla f(\boldsymbol{x}^{(k)})\)
二次型目标 任意初始点一步收敛(阶数 \(\infty\))
局部收敛性 \(f \in \mathcal{C}^3\)、\(\nabla f(\boldsymbol{x}^*) = \boldsymbol{0}\)、\(\boldsymbol{F}(\boldsymbol{x}^*)\) 可逆 \(\Rightarrow\) 初始点足够近时至少二阶收敛
下降方向 \(\boldsymbol{F}(\boldsymbol{x}^{(k)}) \succ 0\) 且 \(\boldsymbol{g}^{(k)} \ne \boldsymbol{0}\) 时,牛顿方向是下降方向 → 加一维搜索得阻尼牛顿法
黑塞不正定的补救 Levenberg–Marquardt 修正:\(\big( \boldsymbol{F}(\boldsymbol{x}^{(k)}) + \mu_k \boldsymbol{I} \big)^{-1}\),\(\mu_k\) 足够大即正定
非线性最小二乘 \(\boldsymbol{F} = 2(\boldsymbol{J}^\top \boldsymbol{J} + \boldsymbol{S})\);忽略 \(\boldsymbol{S}\) → 高斯–牛顿法;再加 \(\mu_k \boldsymbol{I}\) → L–M 方法

思想:用二次模型代替目标函数

设 \(f \in \mathcal{C}^2\)。在当前点 \(\boldsymbol{x}^{(k)}\) 处作二阶泰勒展开、丢掉高阶项,得到与 \(f\) 在该点一、二阶导数完全相同的二次型近似:

\[ f(\boldsymbol{x}) \approx q(\boldsymbol{x}) \triangleq f(\boldsymbol{x}^{(k)}) + (\boldsymbol{x} - \boldsymbol{x}^{(k)})^\top \boldsymbol{g}^{(k)} + \frac{1}{2} (\boldsymbol{x} - \boldsymbol{x}^{(k)})^\top \boldsymbol{F}(\boldsymbol{x}^{(k)}) (\boldsymbol{x} - \boldsymbol{x}^{(k)}) \]

对 \(q\) 用内点 FONC:\(\nabla q(\boldsymbol{x}) = \boldsymbol{g}^{(k)} + \boldsymbol{F}(\boldsymbol{x}^{(k)})(\boldsymbol{x} - \boldsymbol{x}^{(k)}) = \boldsymbol{0}\)。当 \(\boldsymbol{F}(\boldsymbol{x}^{(k)}) \succ 0\) 时 \(q\) 的极小点即为下一个迭代点:

\[ \boxed{\ \boldsymbol{x}^{(k+1)} = \boldsymbol{x}^{(k)} - \boldsymbol{F}(\boldsymbol{x}^{(k)})^{-1}\, \boldsymbol{g}^{(k)}\ } \]

这是一维牛顿法 \(x^{(k+1)} = x^{(k)} - f'(x^{(k)}) / f''(x^{(k)})\) 的多维版本:除法变成乘黑塞矩阵的逆。

实现注记:实际计算不求逆矩阵,而是分两步——先解 \(n\) 维线性方程组 \(\boldsymbol{F}(\boldsymbol{x}^{(k)})\, \boldsymbol{d}^{(k)} = -\boldsymbol{g}^{(k)}\) 得牛顿方向 \(\boldsymbol{d}^{(k)}\),再更新 \(\boldsymbol{x}^{(k+1)} = \boldsymbol{x}^{(k)} + \boldsymbol{d}^{(k)}\)。每步的主要代价就是这个方程组(一般 \(O(n^3)\))。

求根版本:牛顿法同样适用于解多元方程 \(\boldsymbol{g}(\boldsymbol{x}) = \boldsymbol{0}\)(\(\boldsymbol{g}: \mathbb{R}^n \to \mathbb{R}^n\)),此时公式中的 \(\boldsymbol{F}(\boldsymbol{x})\) 换成 \(\boldsymbol{g}\) 的雅可比矩阵 \(\big[ \partial g_i / \partial x_j \big]\)。

例:牛顿法求解 Powell 函数

用牛顿法极小化 Powell 函数(经典测试函数):

\[ f(\boldsymbol{x}) = (x_1 + 10 x_2)^2 + 5 (x_3 - x_4)^2 + (x_2 - 2 x_3)^4 + 10 (x_1 - x_4)^4 \]

初始点 \(\boldsymbol{x}^{(0)} = (3, -1, 0, 1)^\top\)。

解答

求出梯度与黑塞矩阵(略),每步解 \(\boldsymbol{F} \boldsymbol{d} = -\boldsymbol{g}\) 后更新:

\(k\) \(\boldsymbol{x}^{(k)}\) \(f(\boldsymbol{x}^{(k)})\)
0 \((3, -1, 0, 1)^\top\) \(215\)
1 \((1.5873, -0.1587, 0.2540, 0.2540)^\top\) \(31.8\)
2 \((1.0582, -0.1058, 0.1694, 0.1694)^\top\) \(6.28\)
3 \((0.7037, -0.0704, 0.1121, 0.1111)^\top\) \(1.24\)

函数值快速下降,迭代点稳步逼近极小点 \(\boldsymbol{0}\)(该函数在原点处黑塞矩阵奇异,是有名的"难缠"测试题,牛顿法依然表现良好)。

收敛性分析

二次型目标:一步命中

对 \(f(\boldsymbol{x}) = \frac{1}{2} \boldsymbol{x}^\top \boldsymbol{Q} \boldsymbol{x} - \boldsymbol{x}^\top \boldsymbol{b}\)(\(\boldsymbol{Q} = \boldsymbol{Q}^\top \succ 0\)),有 \(\boldsymbol{g}(\boldsymbol{x}) = \boldsymbol{Q}\boldsymbol{x} - \boldsymbol{b}\)、\(\boldsymbol{F} \equiv \boldsymbol{Q}\),于是

\[ \boldsymbol{x}^{(1)} = \boldsymbol{x}^{(0)} - \boldsymbol{Q}^{-1} (\boldsymbol{Q} \boldsymbol{x}^{(0)} - \boldsymbol{b}) = \boldsymbol{Q}^{-1} \boldsymbol{b} = \boldsymbol{x}^* \]

任意初始点一步收敛——二次模型就是目标函数本身,跳一次就到底。这与最速下降法在条件数大时的锯齿形成鲜明对比。

一般目标:局部二阶收敛

定理(牛顿法的局部二阶收敛)

设 \(f \in \mathcal{C}^3\),\(\boldsymbol{x}^*\) 满足 \(\nabla f(\boldsymbol{x}^*) = \boldsymbol{0}\) 且 \(\boldsymbol{F}(\boldsymbol{x}^*)\) 可逆。则对所有与 \(\boldsymbol{x}^*\) 足够接近的初始点 \(\boldsymbol{x}^{(0)}\),牛顿法有定义且收敛到 \(\boldsymbol{x}^*\),收敛阶数至少为 2。

证明

对 \(\nabla f\) 在 \(\boldsymbol{x}^{(0)}\) 处泰勒展开(\(f \in \mathcal{C}^3\) 故余项 \(O(\lVert \cdot \rVert^2)\)):在 \(\boldsymbol{x}^*\) 的 \(\varepsilon\)-邻域内存在 \(c_1, c_2 > 0\) 使

\[ \lVert \nabla f(\boldsymbol{x}^*) - \nabla f(\boldsymbol{x}^{(0)}) - \boldsymbol{F}(\boldsymbol{x}^{(0)})(\boldsymbol{x}^* - \boldsymbol{x}^{(0)}) \rVert \le c_1 \lVert \boldsymbol{x}^* - \boldsymbol{x}^{(0)} \rVert^2, \qquad \lVert \boldsymbol{F}(\boldsymbol{x}^{(0)})^{-1} \rVert \le c_2 \]

(后者由 \(\boldsymbol{F}(\boldsymbol{x}^*)\) 可逆与矩阵逆的连续性保证)。利用 \(\nabla f(\boldsymbol{x}^*) = \boldsymbol{0}\) 改写第一式,再从牛顿迭代式两端减 \(\boldsymbol{x}^*\) 取范数:

\[ \lVert \boldsymbol{x}^{(1)} - \boldsymbol{x}^* \rVert = \big\lVert \boldsymbol{F}(\boldsymbol{x}^{(0)})^{-1} \big[ \boldsymbol{F}(\boldsymbol{x}^{(0)})(\boldsymbol{x}^{(0)} - \boldsymbol{x}^*) - \nabla f(\boldsymbol{x}^{(0)}) \big] \big\rVert \le c_1 c_2 \lVert \boldsymbol{x}^{(0)} - \boldsymbol{x}^* \rVert^2 \]

取 \(\lVert \boldsymbol{x}^{(0)} - \boldsymbol{x}^* \rVert \le \alpha / (c_1 c_2)\)(\(\alpha \in (0,1)\)),则 \(\lVert \boldsymbol{x}^{(1)} - \boldsymbol{x}^* \rVert \le \alpha \lVert \boldsymbol{x}^{(0)} - \boldsymbol{x}^* \rVert\),误差每步至少缩到 \(\alpha\) 倍,归纳得 \(\boldsymbol{x}^{(k)} \to \boldsymbol{x}^*\);同时 \(\lVert \boldsymbol{x}^{(k+1)} - \boldsymbol{x}^* \rVert \le c_1 c_2 \lVert \boldsymbol{x}^{(k)} - \boldsymbol{x}^* \rVert^2 = O\big( \lVert \boldsymbol{x}^{(k)} - \boldsymbol{x}^* \rVert^2 \big)\),收敛阶至少为 2。\(\blacksquare\)

二阶收敛的直观感受:误差的有效数字每步翻倍——这是牛顿法"快"的一面。

易错点:牛顿法找的是驻点,不挑极小极大

定理中没有要求 \(\boldsymbol{x}^*\) 是极小点——只要 \(\nabla f(\boldsymbol{x}^*) = \boldsymbol{0}\) 且黑塞可逆,从合适的初始点出发牛顿法照样收敛过去,哪怕 \(\boldsymbol{x}^*\) 是局部极大点或鞍点。牛顿法本质是在解方程 \(\nabla f = \boldsymbol{0}\),对解的"身份"一视同仁,收敛后仍需用二阶条件验明正身。

"脆"的一面(远离极小点时):

  • 可能不收敛,甚至中途黑塞矩阵奇异、方法直接失效;
  • \(\boldsymbol{F}(\boldsymbol{x}^{(k)})\) 不正定时,牛顿方向未必是下降方向(二次模型开口不对,跳向鞍点/极大点一侧);
  • 即使 \(\boldsymbol{F}(\boldsymbol{x}^{(k)}) \succ 0\),整步跳跃也可能跳过头,出现 \(f(\boldsymbol{x}^{(k+1)}) \ge f(\boldsymbol{x}^{(k)})\)。

下面两节的修正分别解决"跳过头"和"方向不对"。

下降性与阻尼牛顿法

定理(牛顿方向是下降方向)

若 \(\boldsymbol{F}(\boldsymbol{x}^{(k)}) \succ 0\) 且 \(\boldsymbol{g}^{(k)} \ne \boldsymbol{0}\),则牛顿方向 \(\boldsymbol{d}^{(k)} = -\boldsymbol{F}(\boldsymbol{x}^{(k)})^{-1} \boldsymbol{g}^{(k)}\) 是下降方向:存在 \(\bar{\alpha} > 0\) 使得对所有 \(\alpha \in (0, \bar{\alpha})\),\(f(\boldsymbol{x}^{(k)} + \alpha \boldsymbol{d}^{(k)}) < f(\boldsymbol{x}^{(k)})\)。

证明

令 \(\phi(\alpha) = f(\boldsymbol{x}^{(k)} + \alpha \boldsymbol{d}^{(k)})\),链式法则:

\[ \phi'(0) = \nabla f(\boldsymbol{x}^{(k)})^\top \boldsymbol{d}^{(k)} = -\boldsymbol{g}^{(k)\top} \boldsymbol{F}(\boldsymbol{x}^{(k)})^{-1} \boldsymbol{g}^{(k)} < 0 \]

(正定矩阵的逆仍正定)。初始斜率为负,故小步长内函数值必下降。\(\blacksquare\)

于是把"整步跳"改成"沿牛顿方向做一维搜索",得到阻尼牛顿法(修正牛顿法):

\[ \boldsymbol{x}^{(k+1)} = \boldsymbol{x}^{(k)} - \alpha_k \boldsymbol{F}(\boldsymbol{x}^{(k)})^{-1} \boldsymbol{g}^{(k)}, \qquad \alpha_k = \operatorname*{argmin}_{\alpha \ge 0} f\big( \boldsymbol{x}^{(k)} - \alpha \boldsymbol{F}(\boldsymbol{x}^{(k)})^{-1} \boldsymbol{g}^{(k)} \big) \]

只要 \(\boldsymbol{g}^{(k)} \ne \boldsymbol{0}\)(且黑塞正定),阻尼牛顿法保证 \(f(\boldsymbol{x}^{(k+1)}) < f(\boldsymbol{x}^{(k)})\)。它解决了"跳过头",但黑塞不正定的问题仍在——交给下一节。

Levenberg–Marquardt 修正

思路非常干净:把黑塞矩阵沿对角线抬高。设对称矩阵 \(\boldsymbol{F}\) 的特征值为 \(\lambda_1, \dots, \lambda_n\)(实数、可正可负),则 \(\boldsymbol{G} = \boldsymbol{F} + \mu \boldsymbol{I}\)(\(\mu \ge 0\))与 \(\boldsymbol{F}\) 有相同的特征向量,特征值整体平移为

\[ \lambda_1 + \mu,\ \lambda_2 + \mu,\ \dots,\ \lambda_n + \mu \]

只要 \(\mu\) 足够大(超过 \(-\lambda_{\min}\)),\(\boldsymbol{G}\) 必正定。由此得 Levenberg–Marquardt(L–M)修正:

\[ \boldsymbol{x}^{(k+1)} = \boldsymbol{x}^{(k)} - \big( \boldsymbol{F}(\boldsymbol{x}^{(k)}) + \mu_k \boldsymbol{I} \big)^{-1} \boldsymbol{g}^{(k)}, \qquad \mu_k \ge 0 \]

修正后的方向必为下降方向;再配上一维搜索步长 \(\alpha_k\) 即可严格保证下降特性。

L–M 是牛顿法与梯度法之间的连续插值

  • \(\mu_k \to 0\):退化为纯牛顿法(快但脆);
  • \(\mu_k \to \infty\):\((\boldsymbol{F} + \mu_k \boldsymbol{I})^{-1} \approx \frac{1}{\mu_k} \boldsymbol{I}\),表现为小步长梯度法(稳但慢)。

实践策略:\(\mu_k\) 从小取起、逐渐增大,直到该步出现下降(\(f(\boldsymbol{x}^{(k+1)}) < f(\boldsymbol{x}^{(k)})\))为止——状态好时当牛顿法用,状态差时自动退守梯度法。

牛顿法在非线性最小二乘中的应用

一类极常见的问题:给定函数 \(r_i: \mathbb{R}^n \to \mathbb{R}\)(\(i = 1, \dots, m\)),求

\[ \min_{\boldsymbol{x}} \sum_{i=1}^{m} r_i(\boldsymbol{x})^2 \]

称为非线性最小二乘问题,\(r_i\) 通常是"第 \(i\) 个数据点的拟合残差"。

例:正弦曲线拟合

在时刻 \(t_1, \dots, t_m\) 测得数据 \(y_1, \dots, y_m\),想用正弦函数 \(y = A \sin(\omega t + \phi)\) 拟合。以 \(\boldsymbol{x} = (A, \omega, \phi)^\top\) 为决策变量,最小化误差平方和

\[ \sum_{i=1}^{m} \big( y_i - A \sin(\omega t_i + \phi) \big)^2 \]

即取残差 \(r_i(\boldsymbol{x}) = y_i - A \sin(\omega t_i + \phi)\) 的非线性最小二乘问题。

记 \(\boldsymbol{r} = (r_1, \dots, r_m)^\top\),目标 \(f(\boldsymbol{x}) = \boldsymbol{r}(\boldsymbol{x})^\top \boldsymbol{r}(\boldsymbol{x})\),\(\boldsymbol{J}(\boldsymbol{x}) = D\boldsymbol{r}(\boldsymbol{x})\) 为残差的 \(m \times n\) 雅可比矩阵。求导得

\[ \nabla f(\boldsymbol{x}) = 2 \boldsymbol{J}(\boldsymbol{x})^\top \boldsymbol{r}(\boldsymbol{x}), \qquad \boldsymbol{F}(\boldsymbol{x}) = 2 \big( \boldsymbol{J}(\boldsymbol{x})^\top \boldsymbol{J}(\boldsymbol{x}) + \boldsymbol{S}(\boldsymbol{x}) \big) \]

其中 \(\boldsymbol{S}(\boldsymbol{x})\) 的 \((j, k)\) 元为 \(\sum_{i=1}^m \frac{\partial^2 r_i}{\partial x_k \partial x_j}(\boldsymbol{x})\, r_i(\boldsymbol{x})\),包含残差的二阶导数。代入牛顿迭代式(系数 2 恰好约掉):

\[ \boldsymbol{x}^{(k+1)} = \boldsymbol{x}^{(k)} - \big( \boldsymbol{J}^\top \boldsymbol{J} + \boldsymbol{S} \big)^{-1} \boldsymbol{J}^\top \boldsymbol{r} \qquad (\text{各矩阵均在 } \boldsymbol{x}^{(k)} \text{ 处取值}) \]

高斯–牛顿法

\(\boldsymbol{S}\) 的元素带着残差因子 \(r_i\),拟合良好时都很小,实践中常直接忽略,得到高斯–牛顿法:

\[ \boldsymbol{x}^{(k+1)} = \boldsymbol{x}^{(k)} - \big( \boldsymbol{J}^\top \boldsymbol{J} \big)^{-1} \boldsymbol{J}^\top \boldsymbol{r} \]

最大好处:完全不需要计算二阶导数,只用残差的雅可比矩阵。

例:正弦拟合的雅可比矩阵与结果

续上例(\(m = 21\) 个数据点),\(\boldsymbol{J}(\boldsymbol{x})\) 是 \(21 \times 3\) 矩阵,第 \(i\) 行为

\[ \big[ -\sin(\omega t_i + \phi),\quad -A t_i \cos(\omega t_i + \phi),\quad -A \cos(\omega t_i + \phi) \big] \]

给定数据后迭代求解,得最佳拟合参数 \(A = 2.01\),\(\omega = 0.992\),\(\phi = 0.541\)。

高斯–牛顿法的隐患是 \(\boldsymbol{J}^\top \boldsymbol{J}\) 可能不正定(或病态),解决办法仍是 L–M 修正:

\[ \boldsymbol{x}^{(k+1)} = \boldsymbol{x}^{(k)} - \big( \boldsymbol{J}^\top \boldsymbol{J} + \mu_k \boldsymbol{I} \big)^{-1} \boldsymbol{J}^\top \boldsymbol{r} \]

事实上 Levenberg–Marquardt 修正最初就是为非线性最小二乘问题提出的,上式常直接称为 Levenberg–Marquardt 方法;\(\mu_k \boldsymbol{I}\) 也可以理解为对被忽略的 \(\boldsymbol{S}(\boldsymbol{x})\) 的一种粗略近似——这是同一公式的两种解读。

速查表

梯度方法 vs 牛顿家族:

方法 每步信息与代价 收敛性 适用场景
最速下降法 梯度;便宜 全局收敛,线性(受条件数制约) 远离极小点的"开荒"阶段
纯牛顿法 梯度 + 黑塞 + 解 \(n\) 维方程组 局部至少二阶;远处可能发散/不降 已接近极小点的"冲刺"阶段
阻尼牛顿法 牛顿 + 一维搜索 \(\boldsymbol{F} \succ 0\) 时保证下降 修"跳过头"
L–M 修正 \((\boldsymbol{F} + \mu_k \boldsymbol{I})^{-1}\) 方向必下降;在牛顿与梯度法间插值 修"黑塞不正定"
高斯–牛顿 / L–M 方法 只需残差雅可比 \(\boldsymbol{J}\) 近似牛顿 非线性最小二乘(曲线拟合)

关键公式:

公式 内容
牛顿迭代 \(\boldsymbol{x}^{(k+1)} = \boldsymbol{x}^{(k)} - \boldsymbol{F}^{-1} \boldsymbol{g}\)(实现上解 \(\boldsymbol{F}\boldsymbol{d} = -\boldsymbol{g}\))
局部二阶收敛 \(\lVert \boldsymbol{x}^{(k+1)} - \boldsymbol{x}^* \rVert \le c_1 c_2 \lVert \boldsymbol{x}^{(k)} - \boldsymbol{x}^* \rVert^2\)
最小二乘梯度 \(\nabla f = 2 \boldsymbol{J}^\top \boldsymbol{r}\)
最小二乘黑塞 \(\boldsymbol{F} = 2(\boldsymbol{J}^\top \boldsymbol{J} + \boldsymbol{S})\),高斯–牛顿即丢掉 \(\boldsymbol{S}\)

易错点:

  • 牛顿法收敛的对象是驻点:可能是极小点、极大点或鞍点,收敛后必须用二阶条件复核;
  • 二次型目标一步收敛的前提是 \(\boldsymbol{Q} \succ 0\);一般函数只有局部二阶收敛,初始点远时一切免谈;
  • \(\boldsymbol{F} \succ 0\) 只保证牛顿方向下降,整步仍可能令函数值上升——下降保证来自阻尼(一维搜索);
  • L–M 中 \(\mu\) 的作用记两头:\(\mu \to 0\) 是牛顿法,\(\mu \to \infty\) 是小步长梯度法;
  • 高斯–牛顿法"不用二阶导数"的代价是丢掉 \(\boldsymbol{S}\),残差大或强非线性时近似变差、可能不收敛,此时靠 L–M 的 \(\mu_k \boldsymbol{I}\) 兜底。