非线性规划中的信赖域方法与Levenberg-Marquardt算法
接下来,我将为您循序渐进地讲解这个运筹学词条。为了确保您能听懂,我会从最基础的概念入手,逐步深入,并将重点放在“方法”与“算法”如何解决核心问题上。
第一步:从基础问题出发——非线性最小二乘问题
我们首先需要明确一个具体、常见且重要的问题场景,它是我们今天所讲方法的经典应用对象。
- 问题定义:考虑一个非线性方程组 \(r(x) = 0\),其中 \(r: \mathbb{R}^n \to \mathbb{R}^m\) 是一个非线性向量值函数,通常 \(m \ge n\)。在现实中,这个方程组可能无解(比如在数据拟合中,模型无法完美匹配所有数据点)。因此,我们转而求解一个优化问题:寻找参数 \(x\),使得残差平方和最小化。这个优化问题写作:
\[ \min_{x \in \mathbb{R}^n} f(x) = \frac{1}{2} \| r(x) \|^2 = \frac{1}{2} \sum_{i=1}^{m} [r_i(x)]^2 \]
- 为什么重要:这类问题在工程和科学中无处不在,例如曲线拟合、计算机视觉中的光束法平差、化学中的参数估计等。求解它的核心挑战在于函数 \(f(x)\) 是非线性的、非凸的。
第二步:核心思路的引入——局部近似与迭代
既然无法直接找到全局最优解,我们采用迭代法:从一个初始猜测 \(x_k\) 出发,希望找到一个“步进” \(p\),使得下一个点 \(x_{k+1} = x_k + p\) 能降低目标函数 \(f(x)\) 的值。
- 牛顿法的理想:如果我们有 \(f(x)\) 的精确二阶信息,可以采用牛顿法。其步进 \(p_k^N\) 通过求解牛顿方程得到:
\[ \nabla^2 f(x_k) p_k^N = -\nabla f(x_k) \]
- 现实困难:
- 计算量大:计算完整的Hessian矩阵 \(\nabla^2 f(x_k)\) 可能非常昂贵。
- 非正定性:在远离解或目标函数非凸时,Hessian矩阵可能不是正定的,导致牛顿方向 \(p_k^N\) 可能不是下降方向,算法会失败。
第三步:两种精妙策略的融合——信赖域框架
为了解决牛顿法的缺陷,我们引入一个强大的全局化策略:信赖域方法。
- 核心思想:我们不盲目相信在点 \(x_k\) 处建立的局部模型(比如二次模型)在整个空间都准确。我们只在当前点的一个小邻域,即一个“信赖域”内,认为这个模型是 \(f(x)\) 的可靠近似。这个域通常是一个球:\(\| p \| \le \Delta_k\),其中 \(\Delta_k > 0\) 是信赖域半径。
- 子问题:在每一次迭代,我们求解一个受约束的近似优化问题(信赖域子问题):
\[ \min_{p \in \mathbb{R}^n} m_k(p) = f(x_k) + \nabla f(x_k)^T p + \frac{1}{2} p^T B_k p \quad \text{s.t.} \quad \| p \| \le \Delta_k \]
其中 \(B_k\) 是Hessian矩阵 \(\nabla^2 f(x_k)\) 或其某个近似(例如对称正定矩阵)。
- 自适应调整:计算实际下降量 \(f(x_k) - f(x_k+p_k)\) 与模型预测下降量 \(m_k(0) - m_k(p_k)\) 的比值。根据这个比值,我们决定是否接受这一步(即更新 \(x_{k+1}\)),并动态地增大或缩小信赖域半径 \(\Delta_k\)。这保证了算法的全局收敛性。
第四步:针对特殊结构的优化——Levenberg-Marquardt 算法的诞生
现在我们聚焦于第一步中提到的特殊问题 \(\min \frac{1}{2} \| r(x) \|^2\)。它的梯度和Hessian具有非常特殊的形式:
- 梯度:\(\nabla f(x) = J(x)^T r(x)\),其中 \(J(x)\) 是残差函数 \(r(x)\) 的 \(m \times n\) 雅可比矩阵。
- Hessian:\(\nabla^2 f(x) = J(x)^T J(x) + \sum_{i=1}^m r_i(x) \nabla^2 r_i(x)\)。
- 关键简化(高斯-牛顿近似):当残差 \(r_i(x)\) 很小,或者函数接近线性时,我们忽略Hessian中的二阶项 \(\sum r_i \nabla^2 r_i\),用 \(B_k = J_k^T J_k\) 来近似Hessian。这个近似矩阵 \(J_k^T J_k\) 总是半正定的,计算也比完整Hessian便宜得多。
- Levenberg-Marquardt 的洞察:高斯-牛顿方向 \((J_k^T J_k) p = -J_k^T r_k\) 在 \(J_k^T J_k\) 奇异或接近奇异时不稳定。Levenberg (1944) 和 Marquardt (1963) 提出,在 \(J_k^T J_k\) 上加上一个正的对角扰动 \(\lambda I\)(其中 \(\lambda \ge 0\) 是阻尼参数),从而求解:
\[ (J_k^T J_k + \lambda I) p = -J_k^T r_k \]
这个修改保证了系数矩阵是正定的,因此方程总有唯一解,且当 \(\lambda\) 很大时,步进方向 \(p\) 趋近于最速下降方向(稳定性好);当 \(\lambda\) 很小时,趋近于高斯-牛顿方向(收敛快)。
第五步:最终的融合与统一——作为信赖域方法的Levenberg-Marquardt
这是最精彩的部分:我们可以从两个等价的视角来理解LM算法。
- 视角一(阻尼最小二乘):如上所述,通过调整阻尼参数 \(\lambda\) 来控制方向和步长。
- 视角二(信赖域解释):可以证明,求解LM方程 \((J_k^T J_k + \lambda I) p = -J_k^T r_k\) 等价于求解一个带椭球约束的信赖域子问题:
\[ \min_{p} \| J_k p + r_k \|^2 \quad \text{s.t.} \quad \| p \| \le \Delta_k \]
这里,阻尼参数 \(\lambda\) 和信赖域半径 \(\Delta_k\) 存在一一对应关系。\(\lambda\) 实际上是这个子问题的拉格朗日乘子!
- 算法流程:结合两种视角,一个现代的、鲁棒的Levenberg-Marquardt算法通常按信赖域框架实现:
- 给定当前点 \(x_k\) 和半径 \(\Delta_k\),计算雅可比矩阵 \(J_k\) 和残差 \(r_k\)。
- 求解LM方程(信赖域子问题),得到一个试探步 \(p_k\)。
- 评估实际下降与预测下降的比值,根据比值决定是否接受这一步,并按照信赖域规则更新半径 \(\Delta_k\)(这等价于隐式地、自适应地更新阻尼参数 \(\lambda\))。
4. 迭代直至收敛。
总结
您可以将Levenberg-Marquardt算法理解为一个为非线性最小二乘这个特定问题量身定做的、精巧的信赖域方法。它利用问题的特殊结构(雅可比矩阵),通过引入一个可调参数(阻尼/信赖域半径),巧妙地平衡了收敛速度(利用二阶曲率信息)和算法鲁棒性(保证迭代稳定下降),成为科学计算和工程优化中一个极其经典和强大的工具。