近似点梯度法(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)可大幅提升凸问题下的收敛速度,而通过回溯线搜索可扩展至非凸情形。该算法在稀疏优化、机器学习正则化问题、信号处理等领域应用广泛。

近似点梯度法(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) \] 几何解释 : 先对光滑部分执行一步梯度下降:\( y^{(k)} = x^{(k)} - t_ k \nabla f(x^{(k)}) \)。 再对非光滑部分应用近似点算子,相当于在 \( y^{(k)} \) 附近求解一个带二次正则化的子问题。 当 \( f \) 凸且 \( t_ k \in (0, 2/L ] \) 时,PGM 可保证收敛到全局最优解,且目标函数值以 \( O(1/k) \) 速率下降。 4. 加速近似点梯度法(FISTA) 为了提升收敛速度,可引入 Nesterov 加速技术,得到 FISTA (Fast Iterative Shrinkage-Thresholding Algorithm)算法。迭代格式如下: 初始化 \( x^{(0)} = y^{(1)} \),\( t_ 1 = 1 \)。 对于 \( 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 \): 计算候选点:\( z = \text{prox}_ {t g} (x^{(k)} - t \nabla f(x^{(k)})) \)。 检查下降条件(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 \)。 初始化:\( y^{(1)} = x^{(0)} \),\( t_ 1 = 1 \),\( k = 1 \)。 重复直到收敛 : 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 \)。 输出 :\( 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)可大幅提升凸问题下的收敛速度,而通过回溯线搜索可扩展至非凸情形。该算法在稀疏优化、机器学习正则化问题、信号处理等领域应用广泛。