好的,我将为你讲解一个运筹学中的重要词条,它在前面的列表中尚未出现过。
非线性规划中的信赖域方法(Trust Region Methods in Nonlinear Programming)
1. 核心思想与直观理解
首先,让我们理解什么是“信赖域”。想象你在一个复杂的地形中(代表你的目标函数),你的当前位置在一个山坡上。你想走到最低点(最小值点)。
- 基本困境:你手头只有一张简化地图(例如,用二次函数逼近你当前位置周围的复杂地形)。这张简化地图在你当前位置附近是准确的,但离远了就不可信了。你既想迈一大步快速下降,又怕走得太远,迈出“信赖域”后,实际地形和地图完全不符,结果反而更糟。
- 信赖域的解决思路:在当前位置画一个圈(或一个球),这个范围就是你的“信赖域”。你只相信简化地图在这个圈内是有效的。你的任务是:在这个信赖域内,寻找使用简化地图能得到的最好下降点。找到之后,移动到那个点。到了新位置,再根据新位置的实际情况,重新评估并调整信赖域的大小(比如,如果简化地图预测得很准,就扩大信赖域,尝试更大胆的步子;如果预测得很差,就缩小信赖域,采取更保守的策略)。
2. 数学模型与算法框架
现在,我们将这个直观想法数学化。我们考虑无约束优化问题:\(\min_{x \in \mathbb{R}^n} f(x)\),其中 \(f\) 是光滑但可能非凸的函数。
在每次迭代 \(k\),我们位于点 \(x_k\),并拥有:
- 模型函数 \(m_k(p)\):在 \(x_k\) 附近对 \(f(x_k + p)\) 的局部近似模型,通常是二次模型:
\(m_k(p) = f_k + g_k^T p + \frac{1}{2} p^T B_k p\)
其中 \(p\) 是试探步,\(f_k = f(x_k)\),\(g_k = \nabla f(x_k)\) 是梯度,\(B_k\) 是 Hessian 矩阵或其近似(如BFGS更新的拟牛顿矩阵)。 - 信赖域半径 \(\Delta_k > 0\):定义了当前迭代的试探步 \(p\) 必须满足 \(\|p\| \le \Delta_k\)。\(\|\cdot\|\) 通常取欧几里得范数。
于是,每次迭代的核心是求解一个信赖域子问题:
\[\min_{p \in \mathbb{R}^n} m_k(p) = f_k + g_k^T p + \frac{1}{2} p^T B_k p \quad \text{s.t.} \quad \|p\| \le \Delta_k \]
这个子问题是一个带球约束的二次规划,比原问题简单得多,且有高效的数值解法。
3. 算法步骤详解
一个完整的信赖域方法迭代步骤如下:
-
步骤1:构建模型与求解子问题。在给定 \(x_k, \Delta_k, g_k, B_k\) 后,精确或近似地求解上述信赖域子问题,得到试探步 \(p_k\)。
-
步骤2:评估实际下降与预测下降。计算试探步的实际效果:
- 实际下降量:\(\text{ared}_k = f(x_k) - f(x_k + p_k)\)
- 预测下降量:\(\text{pred}_k = m_k(0) - m_k(p_k) = -g_k^T p_k - \frac{1}{2} p_k^T B_k p_k\)
- 比值:\(\rho_k = \frac{\text{ared}_k}{\text{pred}_k}\)
这个比值 \(\rho_k\) 是衡量模型好坏的关键指标。如果 \(\rho_k\) 接近1,说明模型预测得非常准确;如果 \(\rho_k\) 是负的或很小的正数,说明模型预测得很差。
- 步骤3:决定是否接受新点并更新信赖域半径。
- 接受新点:如果 \(\rho_k > \eta_1\)(例如 \(\eta_1 = 0.01\),一个很小的正数),说明即使模型不完美,也至少产生了下降,则接受这一步:\(x_{k+1} = x_k + p_k\)。否则,拒绝这一步,留在原地:\(x_{k+1} = x_k\)。
- 更新信赖域半径 \(\Delta_{k+1}\):
- 如果 \(\rho_k\) 非常大(如 \(\rho_k > \eta_2\),通常 \(\eta_2 = 0.75\)),说明模型在更大的范围内也值得信赖,可以大胆扩大半径:\(\Delta_{k+1} = \gamma_2 \Delta_k\)(\(\gamma_2 > 1\), 如 2)。
- 如果 \(\rho_k\) 在中等区间(\(\eta_1 \le \rho_k \le \eta_2\)),说明模型质量尚可,保持半径不变:\(\Delta_{k+1} = \Delta_k\)。
- 如果 \(\rho_k\) 很小(\(\rho_k < \eta_1\)),说明模型在当前的 \(\Delta_k\) 内都不可信,必须收缩半径以获得更好的模型匹配:\(\Delta_{k+1} = \gamma_1 \Delta_k\)(\(0 < \gamma_1 < 1\), 如 0.5)。
- 步骤4:更新模型。移动到新点 \(x_{k+1}\) 后,计算新的梯度 \(g_{k+1}\),并更新 \(B_{k+1}\)(如果用拟牛顿法)。然后回到步骤1,开始下一轮迭代。
4. 与线搜索方法的比较
这是理解信赖域方法独特价值的关键。
- 线搜索:先确定方向(如最速下降方向、牛顿方向),然后沿着这条射线寻找一个合适的步长,使目标函数“充分下降”。方向是首要的,步长是次要的调整。
- 信赖域:先确定一个探索范围(信赖域),然后在这个球型区域内寻找一个最优的位移向量 \(p\)。它同时决定了方向和步长。在信赖域边界内,如果牛顿步长在域内,它就是 \(p_k\);如果牛顿步长跑出域外,算法会找到一个指向边界、且模型值最小的点,这个方向通常是梯度方向和牛顿方向的折中。这使得它在处理病态 Hessian 矩阵(如非正定)时比线搜索-牛顿法更稳健。
5. 关键技术与收敛性
- 子问题求解:精确求解子问题计算量大,常用近似但高效的算法,如柯西点法(最速下降方向与信赖域边界的交点)结合共轭梯度法(在子空间内迭代,遇到边界则停止)。
- 全局收敛性:在一定的温和条件下(如模型函数 \(m_k\) 至少一阶精确,\(B_k\) 有界),信赖域方法能保证迭代点列的任何极限点都是稳定点(梯度为零的点)。
- 局部收敛速率:如果算法最终接受完整的牛顿步(即 \(p_k\) 是牛顿步且在域内),并且 Hessian 近似 \(B_k\) 收敛到真实 Hessian,那么算法将具有牛顿法的局部二次收敛速率。
总结:信赖域方法是一种将全局收敛的稳健性与局部快速收敛性巧妙结合的优化框架。其核心在于利用局部模型在一个动态调整的区域内寻找最佳位移,通过比较“预测”与“实际”的下降比来管理对模型的信任程度,从而在复杂地形中实现稳定、高效的寻优。它是解决中大规模、非凸非线性规划问题的主流算法之一。