近似点梯度法(Proximal Gradient Method)进阶题:非光滑复合优化问题
字数 3811
更新时间 2025-12-13 21:49:32

近似点梯度法(Proximal Gradient Method)进阶题:非光滑复合优化问题


题目描述

考虑如下形式的非光滑复合优化问题

\[\min_{x \in \mathbb{R}^n} \quad F(x) = f(x) + g(x) \]

其中:

  • \(f(x)\) 是一个可微函数(不一定凸),且其梯度 \(\nabla f(x)\) 满足 Lipschitz 连续条件,即存在常数 \(L ​> 0\) 使得:

\[ \| \nabla f(x) - \nabla f(y) \| \le L \| x - y \|, \quad \forall x, y \in \mathbb{R}^n \]

  • \(g(x)\) 是一个非光滑、但“简单”的凸函数,其近似点算子(proximal operator)是容易计算的。例如,\(g(x)\) 可以是 L1 范数 \(\|x\|_1\)、L2 范数 \(\|x\|_2\)、指示函数(用于表示约束)等。

目标:设计一个基于近似点梯度法(Proximal Gradient Method, PGM)的求解方案,并引入加速技术(如 FISTA 加速)以提升收敛速度,同时处理 \(f(x)\) 可能为非凸的情形。


解题过程

1. 理解问题的结构

  • 目标函数 \(F(x)\) 被分解为两部分:光滑项 \(f(x)\) 和非光滑项 \(g(x)\)
  • 如果 \(f(x)\) 是凸的,该问题称为复合凸优化;如果 \(f(x)\) 非凸,则为复合非凸优化,难度更高。
  • 关键思想:利用梯度下降处理 \(f(x)\),用近似点算子处理 \(g(x)\),交替进行。

2. 近似点算子(Proximal Operator)的定义

对于给定的 \(g(x)\) 和步长 \(t ​> 0\),近似点算子定义为:

\[\text{prox}_{t g}(z) = \arg\min_{x} \left\{ g(x) + \frac{1}{2t} \| x - z \|^2 \right\} \]

这个算子可以看作是在 \(z\) 附近,用二次项正则化 \(g(x)\) 后的极小化操作。对于许多常见的 \(g(x)\),例如 L1 范数、L2 范数、指示函数等,其近似点算子有闭式解或高效算法。

举例:若 \(g(x) = \lambda \|x\|_1\)(L1 范数,λ > 0),则近似点算子就是著名的软阈值函数

\[[\text{prox}_{t g}(z)]_i = \text{sign}(z_i) \cdot \max(|z_i| - t\lambda, 0) \]

3. 基本近似点梯度法(PGM)的迭代格式

给定初始点 \(x^{(0)}\),步长 \(t_k\)(通常取 \(t_k = 1/L\) 或通过线搜索确定),迭代更新为:

\[x^{(k+1)} = \text{prox}_{t_k g} \left( x^{(k)} - t_k \nabla f(x^{(k)}) \right) \]

几何解释

  1. 先对光滑部分执行一步梯度下降:\(y^{(k)} = x^{(k)} - t_k \nabla f(x^{(k)})\)
  2. 再对非光滑部分应用近似点算子,相当于在 \(y^{(k)}\) 附近求解一个带二次正则化的子问题。

\(f\) 凸且 \(t_k \in (0, 2/L]\) 时,PGM 可保证收敛到全局最优解,且目标函数值以 \(O(1/k)\) 速率下降。

4. 加速近似点梯度法(FISTA)

为了提升收敛速度,可引入 Nesterov 加速技术,得到 FISTA(Fast Iterative Shrinkage-Thresholding Algorithm)算法。迭代格式如下:

  1. 初始化 \(x^{(0)} = y^{(1)}\)\(t_1 = 1\)
  2. 对于 \(k \ge 1\)
    • 更新步长:\(t_{k+1} = \frac{1 + \sqrt{1 + 4 t_k^2}}{2}\)
    • 计算辅助点:\(y^{(k+1)} = x^{(k)} + \frac{t_k - 1}{t_{k+1}} (x^{(k)} - x^{(k-1)})\)(这是一个外推步,引入动量)。
    • 执行近似点梯度步:

\[ x^{(k+1)} = \text{prox}_{t g} \left( y^{(k+1)} - t \nabla f(y^{(k+1)}) \right) \]

 其中步长 $ t = 1/L $ 或通过线搜索确定。

FISTA 在凸情形下可将收敛速率提升至 \(O(1/k^2)\)

5. 处理非凸 \(f(x)\)

\(f(x)\) 非凸时,不能保证全局最优,但 PGM 仍可收敛到临界点(stationary point)。关键修改包括:

  • 采用回溯线搜索自适应确定步长 \(t_k\),确保每次迭代目标函数值充分下降。
  • 收敛准则通常设置为相邻迭代点的变化或梯度的范数小于预设阈值。

回溯线搜索步骤(以 PGM 为例):
给定参数 \(\beta \in (0,1)\),初始步长 \(t_0\)
在每次迭代,尝试步长 \(t = t_k\)

  1. 计算候选点:\(z = \text{prox}_{t g} (x^{(k)} - t \nabla f(x^{(k)}))\)
  2. 检查下降条件(Armijo 型条件):

\[ F(z) \le F(x^{(k)}) - \frac{1}{2t} \| z - x^{(k)} \|^2 \]

如果满足,接受 \(x^{(k+1)} = z\);否则缩减步长 \(t := \beta t\) 并重试。

6. 完整算法流程(加速近似点梯度法,支持非凸)

输入:初始点 \(x^{(0)}\),梯度 Lipschitz 常数估计 \(L_0\),参数 \(\beta \in (0,1)\),容差 \(\epsilon ​> 0\)

  1. 初始化:\(y^{(1)} = x^{(0)}\)\(t_1 = 1\)\(k = 1\)
  2. 重复直到收敛
    a. 设置步长 \(t = L_{k-1}\)
    b. 回溯线搜索
    循环执行:
    计算候选点:

\[ x^{(k)} = \text{prox}_{t g} \left( y^{(k)} - t \nabla f(y^{(k)}) \right) \]

    检查下降条件:

\[ F(x^{(k)}) \le F(y^{(k)}) - \frac{1}{2t} \| x^{(k)} - y^{(k)} \|^2 \]

    若满足,跳出循环;否则令 $ t := \beta t $。
 结束循环,记录最终步长 $ L_k = t $。

c. 检查收敛:若 \(\| x^{(k)} - x^{(k-1)} \| <​ \epsilon\),则停止。
d. 更新辅助点(加速步骤):

\[ t_{k+1} = \frac{1 + \sqrt{1 + 4 t_k^2}}{2} \]

\[ y^{(k+1)} = x^{(k)} + \frac{t_k - 1}{t_{k+1}} (x^{(k)} - x^{(k-1)}) \]

e. 令 \(k := k+1\)
3. 输出\(x^{(k)}\) 作为近似临界点。

7. 收敛性分析要点

  • 凸情形:若 \(f\) 凸,FISTA 保证 \(F(x^{(k)}) - F^* \le O(1/k^2)\),其中 \(F^*\) 是最优值。
  • 非凸情形:算法产生的序列 \(\{x^{(k)}\}\) 的极限点满足临界点条件:\(0 \in \nabla f(x^*) + \partial g(x^*)\),其中 \(\partial g\) 是次梯度。收敛速率通常为 \(o(1/k)\)

8. 实际应用中的技巧

  • 步长选择:若 \(f\) 的梯度 Lipschitz 常数 \(L\) 已知,固定步长 \(t = 1/L\) 即可;否则用回溯线搜索。
  • 非光滑项 \(g(x)\) 的近似点算子:需根据具体形式设计高效计算方式(如软阈值、投影等)。
  • 加速的权衡:FISTA 在凸问题中加速明显,但在非凸问题中可能震荡,有时需关闭加速(即取 \(y^{(k)} = x^{(k)}\))。

总结

近似点梯度法通过分解目标函数为光滑与非光滑部分,利用梯度下降与近似点算子交替更新,有效处理一大类非光滑复合优化问题。引入加速技术(FISTA)可大幅提升凸问题下的收敛速度,而通过回溯线搜索可扩展至非凸情形。该算法在稀疏优化、机器学习正则化问题、信号处理等领域应用广泛。

相似文章
相似文章
 全屏