基于近似点梯度与拟牛顿加速的复合优化问题
题目描述
我们考虑如下形式的复合优化问题:
\[\min_{x \in \mathbb{R}^n} f(x) + g(x) \]
其中 \(f: \mathbb{R}^n \to \mathbb{R}\) 是一个光滑但可能非凸的函数,其梯度 \(\nabla f\) 是利普希茨连续的;\(g: \mathbb{R}^n \to \mathbb{R} \cup \{+\infty\}\) 是一个闭凸函数,可能非光滑,但它的近似点算子(proximal operator)是容易计算的。这类问题常见于机器学习中的正则化损失最小化(如Lasso、逻辑回归等)以及图像处理中的全变差去噪等。
具体来说,我们设定:
- \(f(x) = \frac{1}{2} \|Ax - b\|^2\),其中 \(A \in \mathbb{R}^{m \times n}\), \(b \in \mathbb{R}^{m}\)。这是一个光滑凸函数。
- \(g(x) = \lambda \|x\|_1\),即L1范数正则项,其中 \(\lambda > 0\) 是正则化参数。这是一个凸但非光滑的函数。
因此,优化问题为:
\[\min_{x \in \mathbb{R}^n} \frac{1}{2} \|Ax - b\|^2 + \lambda \|x\|_1 \]
我们的目标是找到一个近似点 \(x^*\),使其满足一阶必要性条件(对于凸问题,这也是充分条件)。
解题过程循序渐进讲解
第一步:问题理解与算法选择
- 问题结构:目标函数是一个光滑函数 \(f(x)\) 与一个非光滑但具有易计算近似点算子的凸函数 \(g(x)\) 之和。这类问题被称为复合优化问题。
- 算法选择:近似点梯度法(Proximal Gradient Method)是求解此类问题的标准方法。它结合了梯度下降(处理光滑部分 \(f\))和近似点映射(处理非光滑部分 \(g\))。为了加速收敛,我们可以在近似点梯度法框架内引入拟牛顿(Quasi-Newton)思想,使用BFGS等更新公式来近似Hessian矩阵的逆,从而改进搜索方向。这种方法称为近似点拟牛顿法或加速近似点梯度法。
- 核心思想:在每一步迭代中,我们对光滑部分 \(f\) 进行一阶近似(或利用拟牛顿矩阵进行更好的近似),然后加上非光滑部分 \(g\),求解一个子问题(近似点映射)来得到下一个迭代点。
第二步:回顾近似点梯度法(基础)
近似点梯度法的迭代格式为:
\[x^{k+1} = \text{prox}_{\alpha_k g} \left( x^k - \alpha_k \nabla f(x^k) \right) \]
其中:
- \(\alpha_k > 0\) 是步长(学习率)。
- \(\text{prox}_{\alpha g}(y)\) 是函数 \(\alpha g\) 的近似点算子,定义为:
\[\text{prox}_{\alpha g}(y) = \arg\min_{x} \left\{ g(x) + \frac{1}{2\alpha} \|x - y\|^2 \right\} \]
对于我们的问题 \(g(x) = \lambda \|x\|_1\),其近似点算子是软阈值(soft-thresholding)算子:
\[[\text{prox}_{\alpha \lambda \|\cdot\|_1}(y)]_i = \text{sign}(y_i) \cdot \max\{ |y_i| - \alpha \lambda, 0 \} \]
即对向量 \(y\) 的每个分量进行软阈值操作。
第三步:引入拟牛顿加速
单纯使用固定或回溯线搜索的步长 \(\alpha_k\) 对应于使用梯度的负方向作为搜索方向。为了加速,我们引入一个正定矩阵 \(H_k\) 来近似 \(\nabla^2 f(x^k)^{-1}\)(即Hessian的逆)。这样,我们的搜索方向变为 \(d^k = -H_k \nabla f(x^k)\)。
迭代格式更新为:
\[x^{k+1} = \text{prox}_{\alpha_k g} \left( x^k + \alpha_k d^k \right) = \text{prox}_{\alpha_k g} \left( x^k - \alpha_k H_k \nabla f(x^k) \right) \]
其中 \(\alpha_k\) 通过线搜索确定(例如,回溯线搜索),以确保目标函数值充分下降。
第四步:BFGS矩阵更新
我们采用BFGS公式来更新矩阵 \(H_k\)。令:
- \(s^k = x^{k+1} - x^k\)
- \(y^k = \nabla f(x^{k+1}) - \nabla f(x^k)\)
BFGS更新公式为:
\[H_{k+1} = \left( I - \frac{s^k (y^k)^T}{(s^k)^T y^k} \right) H_k \left( I - \frac{y^k (s^k)^T}{(s^k)^T y^k} \right) + \frac{s^k (s^k)^T}{(s^k)^T y^k} \]
这个更新能保证 \(H_{k+1}\) 保持正定性,只要初始 \(H_0\) 正定且 \((s^k)^T y^k > 0\)。对于非凸问题,为了保证 \((s^k)^T y^k > 0\),我们可以使用线搜索条件(如Wolfe条件)或对 \(y^k\) 进行修正。
第五步:完整算法步骤
我们结合近似点操作和BFGS更新,得到以下算法步骤:
- 初始化:选择初始点 \(x^0\),初始正定矩阵 \(H_0\)(通常取为单位矩阵 \(I\)),正则化参数 \(\lambda > 0\),线搜索参数 \(\beta \in (0, 1)\), \(\sigma \in (0, 1)\),收敛容忍度 \(\epsilon > 0\)。令 \(k = 0\)。
- 计算梯度:计算光滑部分的梯度 \(\nabla f(x^k) = A^T(Ax^k - b)\)。
- 确定搜索方向:计算 \(d^k = -H_k \nabla f(x^k)\)。
- 回溯线搜索:
- 初始化步长 \(\alpha = 1\)(或一个初始估计值)。
- 计算候选点 \(z = \text{prox}_{\alpha \lambda \|\cdot\|_1} (x^k + \alpha d^k)\)。
- 检查下降条件:
\[ f(z) + g(z) \leq f(x^k) + g(x^k) + \sigma \left( \nabla f(x^k)^T (z - x^k) + g(z) - g(x^k) \right) \]
这是复合优化中常用的近似梯度法线搜索条件,保证了充分下降。若不满足,则令 $ \alpha := \beta \alpha $ 并重复本步,直到满足条件。
- 令 $ \alpha_k = \alpha $, $ x^{k+1} = z $。
- 更新拟牛顿矩阵:
- 计算 \(s^k = x^{k+1} - x^k\)。
- 计算 \(y^k = \nabla f(x^{k+1}) - \nabla f(x^k)\)。
- 如果 \((s^k)^T y^k > \epsilon'\)(一个小的正数,如 \(10^{-8}\)),则按BFGS公式更新 \(H_{k+1}\);否则,令 \(H_{k+1} = H_k\)。
- 收敛性检查:计算最优性条件的残差。一个常用的度量是迭代点的相对变化:
\[ \text{residual} = \frac{\| x^{k+1} - x^k \|}{\| x^k \| + 1} \]
或者计算近似梯度映射的范数。如果残差小于 $ \epsilon $,则停止迭代,输出 $ x^{k+1} $ 作为近似解;否则,令 $ k := k+1 $,返回步骤2。
第六步:关键点与注意事项
- 近似点算子的计算:对于L1正则化,软阈值算子计算高效,这是算法可行的关键。
- 线搜索条件:步骤4中的线搜索条件是针对复合函数的,它同时考虑了光滑部分的一阶近似和非光滑部分。这比标准梯度下降的线搜索更复杂,但能保证收敛。
- BFGS更新的稳定性:在非凸问题中, \((s^k)^T y^k\) 可能为负,这会破坏 \(H_k\) 的正定性。因此,我们设置了检查条件,只在曲率条件较好时更新矩阵。也可以采用更稳健的更新策略(如阻尼BFGS)。
- 收敛性:在 \(f\) 是凸函数且梯度利普希茨连续,\(g\) 是凸函数的条件下,基本的近似点梯度法具有 \(O(1/k)\) 的收敛速率。引入BFGS更新旨在改善常数因子,在问题的实际曲率信息被较好捕捉时,可以达到超线性收敛的局部效果(对于强凸问题)。对于这里的非强凸L1正则化问题,它通常能显著加快收敛速度。
- 与ISTA/FISTA的关系:当 \(H_k\) 始终取为单位矩阵的标量倍(即 \(\alpha_k I\) )时,本算法退化为近似点梯度法(ISTA)。著名的FISTA算法是通过在迭代点序列上引入动量(Nesterov加速)来达到 \(O(1/k^2)\) 的收敛速率。而本算法是通过拟牛顿法来构建更好的局部二次模型,从而改善搜索方向。两种加速思路可以结合,但算法会更复杂。
总结:
通过将拟牛顿法的思想融入近似点梯度法的框架,我们得到了一个求解L1正则化最小二乘问题的高效算法。它继承了近似点梯度法处理非光滑项的优势,同时利用BFGS更新来构建更好的局部二次模型,从而产生更优的搜索方向,加速收敛。算法的核心在于每一步迭代中计算软阈值算子和执行确保下降的线搜索,并谨慎地更新拟牛顿矩阵以保持稳定性和正定性。