非线性规划中的自适应正则化拟牛顿法(Adaptive Regularized Quasi-Newton Method)基础题
题目描述
考虑如下的无约束非线性规划问题:
\[\min_{x \in \mathbb{R}^n} f(x) \]
其中目标函数 \(f: \mathbb{R}^n \to \mathbb{R}\) 是二阶连续可微的,但可能是非凸的,并且 Hessian 矩阵可能在某些点奇异或病态。这会导致经典的拟牛顿法(如 BFGS)在迭代中出现数值不稳定、更新矩阵不正定、收敛速度变慢甚至失败。
自适应正则化拟牛顿法 将正则化思想与拟牛顿法结合,在每一步迭代中构造一个正则化的二次模型,通过自适应地调整正则化参数来保证子问题的强凸性,从而获得稳定、快速的收敛性能。
本题要求你:
- 描述该方法的核心思想和算法框架。
- 逐步推导并解释算法中正则化参数的更新策略。
- 以二维 Rosenbrock 函数 \(f(x) = 100(x_2 - x_1^2)^2 + (1 - x_1)^2\) 为例,说明算法的迭代过程,初始点取 \(x_0 = (-1.2, 1)^T\),初始正则化参数 \(\delta_0 = 0.1\)。
解题过程
1. 核心思想
- 在经典的拟牛顿法中,每一步迭代用当前的 Hessian 近似矩阵 \(B_k\) 构建二次模型:
\[ m_k(p) = f(x_k) + \nabla f(x_k)^T p + \frac{1}{2} p^T B_k p \]
当 \(B_k\) 非正定时,子问题 \(\min_p m_k(p)\) 无唯一极小点,算法可能失效。
- 自适应正则化拟牛顿法的改进是:在二次模型中加入一个正则化项 \(\frac{\delta_k}{2} \|p\|^2\),得到修正后的模型:
\[ \tilde{m}_k(p) = f(x_k) + \nabla f(x_k)^T p + \frac{1}{2} p^T (B_k + \delta_k I) p \]
其中 \(\delta_k \ge 0\) 是正则化参数,\(I\) 是单位矩阵。通过选择合适的 \(\delta_k\),可以保证矩阵 \(B_k + \delta_k I\) 正定,从而使子问题有唯一解。
- 自适应策略:根据上一步迭代的实际下降与模型预测下降的比值,动态调整 \(\delta_k\),使其在 Hessian 近似较好时较小(接近经典拟牛顿),较差时自动增大正则化(接近梯度下降),从而兼顾收敛速度和鲁棒性。
2. 算法框架
步骤 1:初始化
- 输入初始点 \(x_0\),初始 Hessian 近似 \(B_0\)(通常取 \(B_0 = I\)),初始正则化参数 \(\delta_0 > 0\),常数 \(0 < \eta_1 \le \eta_2 < 1\)(用于判断迭代是否成功),\(0 < \gamma_1 < 1 < \gamma_2\)(用于调整 \(\delta_k\)),容许误差 \(\epsilon > 0\)。
- 令 \(k = 0\)。
步骤 2:检查终止条件
- 若 \(\|\nabla f(x_k)\| < \epsilon\),则停止,输出 \(x_k\) 为近似极小点。
步骤 3:计算搜索方向
- 解正则化二次子问题:
\[ p_k = -\big( B_k + \delta_k I \big)^{-1} \nabla f(x_k) \]
这可通过求解线性方程组 \((B_k + \delta_k I) p = -\nabla f(x_k)\) 得到。
步骤 4:计算实际下降与预测下降的比值
- 实际下降:
\[ \text{ared}_k = f(x_k) - f(x_k + p_k) \]
- 预测下降(根据正则化模型):
\[ \text{pred}_k = -\nabla f(x_k)^T p_k - \frac{1}{2} p_k^T (B_k + \delta_k I) p_k \]
- 比值:
\[ \rho_k = \frac{\text{ared}_k}{\text{pred}_k} \]
步骤 5:判断是否接受迭代并更新正则化参数
- 若 \(\rho_k \ge \eta_1\):
- 接受步长:\(x_{k+1} = x_k + p_k\)。
- 更新 Hessian 近似 \(B_{k+1}\) 使用拟牛顿公式(如 BFGS 更新)。
- 更新正则化参数:
\[ \delta_{k+1} = \begin{cases} \max(\gamma_1 \delta_k, \delta_{\min}) & \text{if } \rho_k \ge \eta_2 \text{ (迭代很好,减小正则化)} \\ \delta_k & \text{if } \eta_1 \le \rho_k < \eta_2 \text{ (保持)} \\ \end{cases} \]
- 若 \(\rho_k < \eta_1\):
- 拒绝步长:\(x_{k+1} = x_k\)。
- 不更新 \(B_k\)(即 \(B_{k+1} = B_k\))。
- 增大正则化参数:
\[ \delta_{k+1} = \gamma_2 \delta_k \]
步骤 6:继续迭代
- 令 \(k := k+1\),返回步骤 2。
3. 正则化参数更新策略的推导与解释
- 核心思路:比值 \(\rho_k\) 衡量二次模型对实际函数的近似精度。
- 若 \(\rho_k\) 接近 1,说明模型很好,可减小正则化,使算法更接近拟牛顿法,加快收敛。
- 若 \(\rho_k\) 很小甚至为负,说明模型很差(可能因 \(B_k\) 病态或非凸性太强),需增大正则化,使矩阵 \(B_k + \delta_k I\) 更接近 \(\delta_k I\),即搜索方向更接近最速下降方向,增强稳定性。
- 参数选择通常为:\(\eta_1 = 0.1\),\(\eta_2 = 0.75\),\(\gamma_1 = 0.5\),\(\gamma_2 = 2.0\),\(\delta_{\min} = 10^{-8}\)。
- 这种自适应调整使算法在初始阶段或曲率信息不可靠时倾向梯度下降,在接近最优解时恢复拟牛顿法的超线性收敛。
4. 以二维 Rosenbrock 函数为例说明迭代过程
已知:
\[f(x) = 100(x_2 - x_1^2)^2 + (1 - x_1)^2, \quad x_0 = (-1.2, 1)^T, \quad \delta_0 = 0.1 \]
梯度为:
\[\nabla f(x) = \begin{pmatrix} -400x_1(x_2 - x_1^2) - 2(1-x_1) \\ 200(x_2 - x_1^2) \end{pmatrix} \]
初始梯度:
\[\nabla f(x_0) = \begin{pmatrix} -400 \times (-1.2) \times (1 - 1.44) - 2(1 + 1.2) \\ 200(1 - 1.44) \end{pmatrix} = \begin{pmatrix} -480 \times (-0.44) - 4.4 \\ -88 \end{pmatrix} = \begin{pmatrix} 211.2 - 4.4 \\ -88 \end{pmatrix} = \begin{pmatrix} 206.8 \\ -88 \end{pmatrix} \]
取 \(B_0 = I\),\(\eta_1=0.1\),\(\eta_2=0.75\),\(\gamma_1=0.5\),\(\gamma_2=2.0\)。
第一次迭代(k=0):
- 解子问题:
\[ (B_0 + \delta_0 I) p_0 = - \nabla f(x_0) \quad \Rightarrow \quad (1.1 I) p_0 = -\begin{pmatrix} 206.8 \\ -88 \end{pmatrix} \]
\[ p_0 = -\frac{1}{1.1} \begin{pmatrix} 206.8 \\ -88 \end{pmatrix} = \begin{pmatrix} -188.0 \\ 80.0 \end{pmatrix} \]
- 新点:
\[ x_1 = x_0 + p_0 = (-1.2-188.0, 1+80.0) = (-189.2, 81.0) \]
- 计算函数值:
\[ f(x_0) = 100(1 - 1.44)^2 + (1+1.2)^2 = 100 \times 0.1936 + 4.84 = 24.2 \]
\[ f(x_1) = 100(81 - (-189.2)^2)^2 + (1+189.2)^2 \quad \text{(计算巨大,显然模型预测很差)} \]
- 计算比值:
\[ \text{pred}_0 = -\nabla f(x_0)^T p_0 - \frac{1}{2} p_0^T (B_0 + \delta_0 I) p_0 \]
这里可算得实际下降为负(函数值增加),故 \(\rho_0\) 很小(甚至为负)。
5. 由于 \(\rho_0 < 0.1\),拒绝步长:\(x_1 = x_0\),不更新 \(B_1\)(仍为 \(I\)),正则化参数增大为 \(\delta_1 = 2 \times 0.1 = 0.2\)。
第二次迭代(k=1):
- 此时仍用 \(x_0\),但 \(\delta_1 = 0.2\) 更大,求解:
\[ (I + 0.2 I) p_1 = -\nabla f(x_0) \quad \Rightarrow \quad p_1 = -\frac{1}{1.2} \begin{pmatrix} 206.8 \\ -88 \end{pmatrix} = \begin{pmatrix} -172.33 \\ 73.33 \end{pmatrix} \]
步长略小于第一次,方向仍类似。
2. 重新计算 \(f(x_0 + p_1)\),若仍不满足 \(\rho_k \ge 0.1\),则继续增大 \(\delta\),使步长更小、方向更接近最速下降方向 \(-\nabla f(x_0)\)。
3. 经过几次调整后,\(\delta\) 增大到一定程度,步长足够小,使得实际下降为正,从而接受迭代,进入拟牛顿更新阶段。
后续过程:
- 一旦接受步长,用 BFGS 公式更新 \(B_{k+1}\):
\[ s_k = x_{k+1} - x_k, \quad y_k = \nabla f(x_{k+1}) - \nabla f(x_k) \]
\[ B_{k+1} = B_k - \frac{B_k s_k s_k^T B_k}{s_k^T B_k s_k} + \frac{y_k y_k^T}{y_k^T s_k} \]
- 随着迭代靠近最优解 \(x^* = (1,1)^T\),\(\delta_k\) 会逐渐减小(因模型预测变好),算法恢复拟牛顿法的快速收敛。
算法特点总结
- 稳定性:正则化保证子问题有唯一解,尤其适用于非凸或病态问题。
- 自适应性:通过 \(\rho_k\) 自动调节正则化强度,平衡收敛速度与鲁棒性。
- 兼容性:可与任何拟牛顿更新(BFGS、DFP 等)结合。
- 收敛性:在适当条件下,可证明全局收敛到稳定点,局部超线性收敛。
这个方法特别适合 Hessian 矩阵可能奇异或条件数很大的优化问题,是经典拟牛顿法的一个重要改进。