非线性规划中的割线法进阶题
题目描述
考虑一个无约束非线性优化问题:
\[\min_{x \in \mathbb{R}^n} f(x), \]
其中 \(f: \mathbb{R}^n \to \mathbb{R}\) 是一个二阶连续可微函数,但Hessian矩阵 \(\nabla^2 f(x)\) 的计算成本很高,无法直接用于每次迭代。我们希望通过割线法(Secant Method)来近似Hessian矩阵,并构造一个拟牛顿法框架,以高效求解该优化问题。请设计一个基于割线法的拟牛顿算法,并逐步解释其原理、迭代格式和收敛性保证。
解题步骤
1. 背景知识:牛顿法与拟牛顿法
在牛顿法中,迭代格式为:
\[x_{k+1} = x_k - [\nabla^2 f(x_k)]^{-1} \nabla f(x_k), \]
但计算Hessian矩阵及其逆矩阵的计算量很大,尤其当 \(n\) 很大时。拟牛顿法的核心思想是:用一个近似矩阵 \(B_k\) 代替 \(\nabla^2 f(x_k)\),并通过迭代逐步修正 \(B_k\),使其满足割线方程(Secant Equation)。
2. 割线方程与拟牛顿条件
假设我们已经有两个迭代点 \(x_k\) 和 \(x_{k+1}\),对应的梯度为 \(g_k = \nabla f(x_k)\) 和 \(g_{k+1} = \nabla f(x_{k+1})\)。根据Taylor展开:
\[g_{k+1} - g_k \approx \nabla^2 f(x_k) (x_{k+1} - x_k). \]
定义差量:
\[s_k = x_{k+1} - x_k, \quad y_k = g_{k+1} - g_k. \]
我们希望近似矩阵 \(B_{k+1}\) 满足:
\[B_{k+1} s_k = y_k \quad \text{(割线方程)}. \]
这称为拟牛顿条件,确保 \(B_{k+1}\) 在方向 \(s_k\) 上与真实Hessian矩阵一致。
3. 割线法的矩阵更新公式(Broyden族)
拟牛顿法有多种更新公式,最常用的是BFGS(Broyden–Fletcher–Goldfarb–Shanno)公式,其逆矩阵 \(H_k = B_k^{-1}\) 的更新为:
\[H_{k+1} = \left( I - \frac{s_k y_k^T}{y_k^T s_k} \right) H_k \left( I - \frac{y_k s_k^T}{y_k^T s_k} \right) + \frac{s_k s_k^T}{y_k^T s_k}. \]
该公式通过秩二修正保持矩阵的正定性(当 \(y_k^T s_k > 0\) 时),并满足割线方程 \(H_{k+1} y_k = s_k\)。
4. 基于割线法的拟牛顿算法流程
我们以BFGS方法为例,展示算法步骤:
输入:初始点 \(x_0\),初始正定矩阵 \(H_0\)(通常取单位矩阵 \(I\)),梯度精度 \(\epsilon > 0\)。
输出:近似最优解 \(x^*\)。
- 初始化:设 \(k = 0\),计算梯度 \(g_0 = \nabla f(x_0)\)。
- 循环迭代直到 \(\|g_k\| < \epsilon\):
a. 计算搜索方向:\(d_k = -H_k g_k\)。
b. 线搜索:通过Wolfe条件(或Armijo条件)确定步长 \(\alpha_k > 0\),使得:
\[ f(x_k + \alpha_k d_k) \le f(x_k) + c_1 \alpha_k g_k^T d_k, \quad g_{k+1}^T d_k \ge c_2 g_k^T d_k, \]
其中 $ 0 < c_1 < c_2 < 1 $。
c. 更新迭代点:\(x_{k+1} = x_k + \alpha_k d_k\)。
d. 计算梯度差:\(g_{k+1} = \nabla f(x_{k+1})\),令 \(s_k = x_{k+1} - x_k\),\(y_k = g_{k+1} - g_k\)。
e. 检查曲率条件:若 \(y_k^T s_k > 0\),则更新 \(H_{k+1}\) 为:
\[ H_{k+1} = \left( I - \frac{s_k y_k^T}{y_k^T s_k} \right) H_k \left( I - \frac{y_k s_k^T}{y_k^T s_k} \right) + \frac{s_k s_k^T}{y_k^T s_k}. \]
否则,重置 $ H_{k+1} = I $(跳过更新)。
f. \(k \leftarrow k + 1\)。
3. 返回 \(x_k\)。
5. 关键细节与收敛性
- 曲率条件:\(y_k^T s_k > 0\) 是正定性的保证,可通过精确线搜索或Wolfe条件自动满足。
- 正定性保持:若 \(H_0\) 正定且 \(y_k^T s_k > 0\),BFGS更新保持 \(H_k\) 正定,从而保证下降方向 \(d_k\)。
- 收敛性:在目标函数 \(f\) 凸且 Lipschitz 光滑的条件下,BFGS算法具有超线性收敛速度。对于非凸问题,在适当条件下也能收敛到稳定点。
6. 示例:二维Rosenbrock函数优化
考虑 \(f(x) = 100 (x_2 - x_1^2)^2 + (1 - x_1)^2\),起点 \(x_0 = (-1.2, 1)^T\)。
- 初始梯度 \(g_0 = (-215.6, 88)^T\)。
- 取 \(H_0 = I\),计算 \(d_0 = -g_0\),执行线搜索得 \(\alpha_0\)。
- 迭代中,BFGS通过 \(s_k\) 和 \(y_k\) 逐步修正 \(H_k\),最终快速收敛至极小点 \((1, 1)^T\)。
总结
割线法通过梯度差信息构造Hessian近似,避免了直接计算二阶导数。BFGS作为其典型代表,通过秩二更新保持正定性,结合线搜索可高效求解大规模无约束优化问题。进阶应用中,还可结合有限内存版本(L-BFGS)处理高维数据。