5.1 引言:为什么需要邻近算法# 在前几章讨论的梯度下降法及其变体中,一个隐含的前提是目标函数 f ( x ) f(x) f ( x ) 处处可微——只有这样才能计算梯度、沿负梯度方向更新。然而,许多重要的优化问题包含不可微的成分。典型的例子包括:ℓ 1 \ell_1 ℓ 1 范数 ∥ x ∥ 1 = ∑ i ∣ x i ∣ \|x\|_1 = \sum_i |x_i| ∥ x ∥ 1 = ∑ i ∣ x i ∣ (在零点处不可微,用于稀疏正则化)、凸集上的指示函数 ι Ω ( x ) \iota_\Omega(x) ι Ω ( x ) (在集合边界处不可微,用于编码约束)、以及核范数 ∥ X ∥ ∗ \|X\|_* ∥ X ∥ ∗ (用于低秩矩阵恢复)。对于这类问题,梯度下降法无法直接应用。
次梯度法是一种可行的替代方案,但它的收敛速度较慢(O ( 1 / k ) O(1/\sqrt{k}) O ( 1/ k ) ),且需要递减步长。能否找到一种方法,既能处理不可微函数,又能保持与梯度下降相当的收敛性?邻近算子(proximal operator)正是这个问题的答案。邻近算子的核心思想可以用一句话概括:在当前点附近找一个使目标函数尽可能小的点,但不能离当前点太远。它是”不可微版本的梯度步”——对光滑函数,邻近算子退化为梯度下降;对不可微函数,邻近算子自动处理不可微性,无需显式计算次梯度。
本章的逻辑主线如下。首先,Tikhonov 正则化揭示了”将凸问题转化为强凸问题”的动机,但存在根本性缺陷;邻近点算法(PPA)克服了这一缺陷,成为处理不可微优化的基础框架。随后引入邻近算子的系统理论,建立与次梯度、预解算子之间的联系。接下来,Moreau 包络将不可微函数”光滑化”,提供理解 PPA 的另一个视角——PPA 等价于在 Moreau 包络上做梯度下降。为了严格证明 PPA 的收敛性(特别是不可微情形),需要极大单调算子理论作为工具,其核心结论是预解算子的稳定非扩张性。在此基础上,松弛 PPA 通过引入松弛参数对标准 PPA 进行推广,提供了更灵活的迭代策略。最后,邻近梯度算法(PGA)将 PPA 与梯度下降结合,解决”可微 + 不可微”复合问题,是稀疏优化、压缩感知等领域的核心实用算法。
5.2 从 Tikhonov 正则化到邻近点算法# 5.2.1 Tikhonov 正则化:动机与缺陷# 强凸(strongly convex)是优化中一个非常好的性质——它保证解的唯一性和算法的快速收敛。但实际问题中,目标函数 f ( x ) f(x) f ( x ) 往往只是凸的,并不具备强凸性。一个自然的思路是:能否通过某种变换将凸函数转化为强凸函数?
回忆强凸函数的定义:f ( x ) f(x) f ( x ) 是 μ \mu μ -强凸的,当且仅当 f ( x ) − μ 2 ∥ x ∥ 2 f(x) - \frac{\mu}{2}\|x\|^2 f ( x ) − 2 μ ∥ x ∥ 2 仍然是凸的。因此,给一个凸函数加上强凸项 μ 2 ∥ x ∥ 2 \frac{\mu}{2}\|x\|^2 2 μ ∥ x ∥ 2 ,整体就变成了强凸函数——凸加强凸等于强凸。
Tikhonov 正则化 的做法正是在原始目标函数上添加一个正则项:
min x f ( x ) + ϵ k 2 ∥ x ∥ 2 \min_x \; f(x) + \frac{\epsilon_k}{2}\|x\|^2 x min f ( x ) + 2 ϵ k ∥ x ∥ 2 其中 ϵ k > 0 \epsilon_k > 0 ϵ k > 0 是正则化参数。添加正则项后整个目标函数变成强凸的,可以利用强凸函数的良好性质进行求解。
然而,为了保证正则化问题的解与原问题的解一致,需要在迭代过程中令正则项趋于零。由于 x x x 的最优值不一定为零,不能期望 ∥ x ∥ 2 → 0 \|x\|^2 \to 0 ∥ x ∥ 2 → 0 ,因此需要令系数 ϵ k → 0 \epsilon_k \to 0 ϵ k → 0 。这里存在一个根本性的矛盾:随着 ϵ k → 0 \epsilon_k \to 0 ϵ k → 0 ,正则项的作用越来越弱,函数的强凸性也随之减弱,条件数变差,算法收敛速度退化。
Tikhonov 正则化的核心矛盾:为了等价性需要 ϵ k → 0 \epsilon_k \to 0 ϵ k → 0 ,但 ϵ k → 0 \epsilon_k \to 0 ϵ k → 0 又会使强凸性消失,导致算法性能退化。
5.2.2 邻近点算法的迭代格式# 为了克服 Tikhonov 正则化的缺陷,引入邻近点算法(Proximal Point Algorithm, PPA)。PPA 的迭代格式为:
x k + 1 = arg min x { f ( x ) + 1 2 α ∥ x − x k ∥ 2 } x^{k+1} = \arg\min_x \left\{ f(x) + \frac{1}{2\alpha}\|x - x^k\|^2 \right\} x k + 1 = arg x min { f ( x ) + 2 α 1 ∥ x − x k ∥ 2 } 其中 α > 0 \alpha > 0 α > 0 是步长参数(可以固定,也可以取为 α k \alpha_k α k )。后面的二次项 1 2 α ∥ x − x k ∥ 2 \frac{1}{2\alpha}\|x - x^k\|^2 2 α 1 ∥ x − x k ∥ 2 称为邻近项 (proximal term)。
与 Tikhonov 正则化的关键区别在于:邻近项是关于 x − x k x - x^k x − x k 的二次项(以当前迭代点为中心),而不是关于 x x x 本身的二次项。这意味着邻近项的中心随迭代更新,不需要令系数趋于零就能保持等价性。邻近项本身是强凸的,所以整个目标函数也是强凸的,并且这种强凸性不会随迭代减弱。
回忆梯度下降法的线性化展开形式:x k + 1 = arg min x { f ( x k ) + ∇ f ( x k ) ⊤ ( x − x k ) + 1 2 α ∥ x − x k ∥ 2 } x^{k+1} = \arg\min_x \left\{ f(x^k) + \nabla f(x^k)^\top(x - x^k) + \frac{1}{2\alpha}\|x - x^k\|^2 \right\} x k + 1 = arg min x { f ( x k ) + ∇ f ( x k ) ⊤ ( x − x k ) + 2 α 1 ∥ x − x k ∥ 2 } 。PPA 中同样出现了邻近项 1 2 α ∥ x − x k ∥ 2 \frac{1}{2\alpha}\|x - x^k\|^2 2 α 1 ∥ x − x k ∥ 2 ,但 PPA 保留了完整的 f ( x ) f(x) f ( x ) 而非其线性近似。
5.2.3 PPA 与隐式梯度下降# 对 PPA 迭代中的目标函数 f ( x ) + 1 2 α ∥ x − x k ∥ 2 f(x) + \frac{1}{2\alpha}\|x - x^k\|^2 f ( x ) + 2 α 1 ∥ x − x k ∥ 2 关于 x x x 求次梯度并令其包含零(最优性条件):
0 ∈ ∂ f ( x k + 1 ) + 1 α ( x k + 1 − x k ) 0 \in \partial f(x^{k+1}) + \frac{1}{\alpha}(x^{k+1} - x^k) 0 ∈ ∂ f ( x k + 1 ) + α 1 ( x k + 1 − x k ) 整理可得:
x k + 1 ∈ x k − α ∂ f ( x k + 1 ) x^{k+1} \in x^k - \alpha \,\partial f(x^{k+1}) x k + 1 ∈ x k − α ∂ f ( x k + 1 ) 这可以理解为隐式梯度下降 (implicit gradient descent)。与显式梯度下降 x k + 1 = x k − α ∇ f ( x k ) x^{k+1} = x^k - \alpha \,\nabla f(x^k) x k + 1 = x k − α ∇ f ( x k ) 对比,两者的关键区别在于:显式方法在当前点 x k x^k x k 处计算梯度,而隐式方法在下一步的点 x k + 1 x^{k+1} x k + 1 处计算次梯度。隐式方法虽然在形式上更复杂(需要求解一个子问题),但具有更好的稳定性和收敛性。
5.3 邻近算子# 5.3.1 定义与良定义性# 给定闭凸函数 h : R n → R ∪ { + ∞ } h: \mathbb{R}^n \to \mathbb{R} \cup \{+\infty\} h : R n → R ∪ { + ∞ } ,其邻近算子 (proximal operator)定义为:
p r o x h ( x ) : = arg min u ∈ d o m h { h ( u ) + 1 2 ∥ u − x ∥ 2 } \mathrm{prox}_h(x) := \arg\min_{u \in \mathrm{dom}\,h} \left\{ h(u) + \frac{1}{2}\|u - x\|^2 \right\} prox h ( x ) := arg u ∈ dom h min { h ( u ) + 2 1 ∥ u − x ∥ 2 } 如果 h h h 是闭凸(proper closed convex)函数,那么对任意 x ∈ R n x \in \mathbb{R}^n x ∈ R n ,邻近算子的值存在且唯一。这意味着邻近算子是一个单值映射 (single-valued mapping),不会出现一对多的情况。
单值性非常重要:回忆在研究单调包含问题(monotone inclusion)时,预解算子(resolvent operator)也是单值映射,从而可以将"∈ \in ∈ "关系转换为"= = = "关系。邻近算子同样具备这个性质,因此后续将 PPA 转化为不动点问题时,可以将包含关系转换为等式关系。
5.3.2 直觉理解# 邻近算子的定义虽然以优化问题的形式给出,但其几何含义十分直观。p r o x h ( x ) \mathrm{prox}_h(x) prox h ( x ) 所求解的子问题包含两个相互竞争的目标:
h ( u ) h(u) h ( u ) 要求 u u u 使函数值尽可能小——这是”下降”的驱动力;
1 2 ∥ u − x ∥ 2 \frac{1}{2}\|u - x\|^2 2 1 ∥ u − x ∥ 2 要求 u u u 不能离 x x x 太远——这是”保守”的约束。
邻近算子的输出 p r o x h ( x ) \mathrm{prox}_h(x) prox h ( x ) 正是这两个力量达到平衡的点。当 h h h 本身是光滑函数时,对 h ( u ) + 1 2 ∥ u − x ∥ 2 h(u) + \frac{1}{2}\|u-x\|^2 h ( u ) + 2 1 ∥ u − x ∥ 2 求导令其为零:∇ h ( u ) + ( u − x ) = 0 \nabla h(u) + (u - x) = 0 ∇ h ( u ) + ( u − x ) = 0 ,即 u = x − ∇ h ( u ) u = x - \nabla h(u) u = x − ∇ h ( u ) 。若 ∇ h \nabla h ∇ h 变化缓慢(局部近似为常数),则 u ≈ x − ∇ h ( x ) u \approx x - \nabla h(x) u ≈ x − ∇ h ( x ) ,这正是梯度下降的一步。因此,邻近算子是梯度下降从光滑函数到非光滑函数的自然推广。
5.3.3 邻近算子与次梯度的关系# 设 h h h 是闭凸函数,则以下等价关系成立:
u = p r o x h ( x ) ⟺ x − u ∈ ∂ h ( u ) u = \mathrm{prox}_h(x) \quad \Longleftrightarrow \quad x - u \in \partial h(u) u = prox h ( x ) ⟺ x − u ∈ ∂ h ( u ) 直观理解:u u u 是邻近算子在 x x x 处的值,意味着在 u u u 处对目标 h ( u ) + 1 2 ∥ u − x ∥ 2 h(u) + \frac{1}{2}\|u - x\|^2 h ( u ) + 2 1 ∥ u − x ∥ 2 的最优性条件成立。对 u u u 求次梯度并令其包含零:0 ∈ ∂ h ( u ) + ( u − x ) 0 \in \partial h(u) + (u - x) 0 ∈ ∂ h ( u ) + ( u − x ) ,整理即得 x − u ∈ ∂ h ( u ) x - u \in \partial h(u) x − u ∈ ∂ h ( u ) 。
5.3.4 预解算子形式# 将 PPA 的隐式梯度下降写成算子形式。将含 x k + 1 x^{k+1} x k + 1 的项移至左边:
( I + α ∂ f ) x k + 1 = x k (I + \alpha\,\partial f)\,x^{k+1} = x^k ( I + α ∂ f ) x k + 1 = x k 两边取逆:
x k + 1 = ( I + α ∂ f ) − 1 x k x^{k+1} = (I + \alpha\,\partial f)^{-1}\,x^k x k + 1 = ( I + α ∂ f ) − 1 x k 其中 ( I + α ∂ f ) − 1 (I + \alpha\,\partial f)^{-1} ( I + α ∂ f ) − 1 即为预解算子 (resolvent operator),记为 J α ∂ f J_{\alpha\partial f} J α ∂ f 。PPA 的邻近算子形式为:
x k + 1 = p r o x α f ( x k ) x^{k+1} = \mathrm{prox}_{\alpha f}(x^k) x k + 1 = prox α f ( x k ) 即邻近算子与预解算子是同一迭代的两种等价表示。
5.3.5 常见函数的邻近算子# 邻近算子的实用性在很大程度上取决于它是否具有解析解。幸运的是,许多在稀疏优化和约束优化中常见的函数都具有闭式的邻近算子。下表给出主要的实例(参数 α > 0 \alpha > 0 α > 0 ):
表中各条目的推导将在 5.6 节给出前两个的完整证明,其余可用类似方法验证。
软阈值算子 (soft-thresholding operator)S α \mathcal{S}_\alpha S α 是稀疏优化的核心构件:当 ∣ x i ∣ > α |x_i| > \alpha ∣ x i ∣ > α 时,x i x_i x i 向零的方向”收缩”α \alpha α ;当 ∣ x i ∣ ≤ α |x_i| \leq \alpha ∣ x i ∣ ≤ α 时,x i x_i x i 直接被压缩为零。这种”大值收缩、小值归零”的行为正是 ℓ 1 \ell_1 ℓ 1 正则化产生稀疏解的机制。
投影算子 P Ω P_\Omega P Ω 是约束优化的基本运算:它将点映射到约束集上距其最近的点。指示函数的邻近算子之所以等于投影,是因为指示函数在集合外取值 + ∞ +\infty + ∞ ,最小化自动要求可行。
块软阈值 处理 ℓ 2 \ell_2 ℓ 2 范数(非平方),其行为类似软阈值但作用于整个向量:当 ∥ x ∥ 2 ≤ α \|x\|_2 \leq \alpha ∥ x ∥ 2 ≤ α 时整个向量被置零,否则沿径向收缩。这在 group LASSO 等结构化稀疏问题中出现。
5.4 Moreau 包络# 邻近算子将不可微函数的最小化问题转化为一系列可解的子问题。一个自然的追问是:这些子问题的最优值——即邻近算子定义中那个 min \min min 的取值——本身是否具有某种良好的结构?答案是肯定的,而且这个取值函数有一个非常重要的性质:即使原函数不可微,它也是光滑的。这就是 Moreau 包络。
理解 Moreau 包络对本章后续内容有两个作用:其一,它揭示了 PPA 的另一种解读——PPA 等价于在一个光滑函数上做梯度下降,这解释了 PPA 为何能同时处理不可微性并保持良好收敛性;其二,Moreau 包络的梯度公式将邻近算子与光滑优化联系起来,为收敛速度分析提供了工具。
5.4.1 定义与基本性质# 给定闭凸函数 f f f 和参数 α > 0 \alpha > 0 α > 0 ,f f f 的 Moreau 包络 (Moreau envelope,也称 Moreau-Yosida 正则化)定义为:
M α f ( x ) : = min u { f ( u ) + 1 2 α ∥ u − x ∥ 2 } M_{\alpha f}(x) := \min_u \left\{ f(u) + \frac{1}{2\alpha}\|u - x\|^2 \right\} M α f ( x ) := u min { f ( u ) + 2 α 1 ∥ u − x ∥ 2 } Moreau 包络与邻近算子的关系是直接的:M α f ( x ) M_{\alpha f}(x) M α f ( x ) 是邻近算子定义中那个最小化问题的最优值,而 p r o x α f ( x ) \mathrm{prox}_{\alpha f}(x) prox α f ( x ) 是取到最优值的点。
Moreau 包络的核心意义在于:即使 f f f 本身不可微,M α f M_{\alpha f} M α f 也是光滑的。具体地,M α f M_{\alpha f} M α f 在全空间可微,且其梯度为:
∇ M α f ( x ) = 1 α ( x − p r o x α f ( x ) ) \nabla M_{\alpha f}(x) = \frac{1}{\alpha}\left(x - \mathrm{prox}_{\alpha f}(x)\right) ∇ M α f ( x ) = α 1 ( x − prox α f ( x ) ) 这个结论的证明可参见教材定理 8.9。其直觉是:M α f ( x ) M_{\alpha f}(x) M α f ( x ) 作为以 u u u 为变量的优化问题的值函数(value function),其关于 x x x 的变化率由最优解处的边际效应决定。由于邻近项 1 2 α ∥ u − x ∥ 2 \frac{1}{2\alpha}\|u-x\|^2 2 α 1 ∥ u − x ∥ 2 关于 x x x 的梯度为 − 1 α ( u − x ) -\frac{1}{\alpha}(u-x) − α 1 ( u − x ) ,而最优解 u = p r o x α f ( x ) u = \mathrm{prox}_{\alpha f}(x) u = prox α f ( x ) ,代入即得上式。
此外,∇ M α f \nabla M_{\alpha f} ∇ M α f 是 Lipschitz 连续的(Lipschitz 常数为 1 α \frac{1}{\alpha} α 1 ),因此 M α f M_{\alpha f} M α f 不仅可微,还具有良好的数值性质。
5.4.2 Moreau 包络的光滑近似性质# Moreau 包络 M α f M_{\alpha f} M α f 与原函数 f f f 具有相同的最小值点:arg min x f ( x ) = arg min x M α f ( x ) \arg\min_x f(x) = \arg\min_x M_{\alpha f}(x) arg min x f ( x ) = arg min x M α f ( x ) 。这意味着最小化 f f f 可以等价地转化为最小化其光滑近似 M α f M_{\alpha f} M α f 。
以指示函数为例:f = ι C f = \iota_C f = ι C 时,M α f ( x ) = 1 2 α d i s t 2 ( x , C ) M_{\alpha f}(x) = \frac{1}{2\alpha}\mathrm{dist}^2(x, C) M α f ( x ) = 2 α 1 dist 2 ( x , C ) ,即到集合 C C C 的距离平方(除以 2 α 2\alpha 2 α )。原函数 ι C \iota_C ι C 在边界处跳跃式地从 0 变为 + ∞ +\infty + ∞ ,而 M α f M_{\alpha f} M α f 则用光滑的二次函数过渡。
以 ℓ 1 \ell_1 ℓ 1 范数为例:f ( x ) = ∥ x ∥ 1 f(x) = \|x\|_1 f ( x ) = ∥ x ∥ 1 时,M α f ( x ) M_{\alpha f}(x) M α f ( x ) 是分量可分的 Huber 损失函数。每个分量上,∣ x i ∣ |x_i| ∣ x i ∣ 在零点处的”尖角”被 M α f M_{\alpha f} M α f 替换为二次函数 x i 2 2 α \frac{x_i^2}{2\alpha} 2 α x i 2 (当 ∣ x i ∣ ≤ α |x_i| \leq \alpha ∣ x i ∣ ≤ α ),而在远离零的区域仍近似为 ∣ x i ∣ − α 2 |x_i| - \frac{\alpha}{2} ∣ x i ∣ − 2 α 。参数 α \alpha α 控制光滑化的程度:α \alpha α 越大,光滑化范围越宽,但对原函数的逼近越粗糙。
5.4.3 PPA 作为 Moreau 包络上的梯度下降# Moreau 包络提供了理解 PPA 的另一个视角。对 M α f ( x ) M_{\alpha f}(x) M α f ( x ) 使用固定步长 α \alpha α 的梯度下降:
x k + 1 = x k − α ∇ M α f ( x k ) = x k − ( x k − p r o x α f ( x k ) ) = p r o x α f ( x k ) x^{k+1} = x^k - \alpha \,\nabla M_{\alpha f}(x^k) = x^k - \left(x^k - \mathrm{prox}_{\alpha f}(x^k)\right) = \mathrm{prox}_{\alpha f}(x^k) x k + 1 = x k − α ∇ M α f ( x k ) = x k − ( x k − prox α f ( x k ) ) = prox α f ( x k ) 这正是 PPA 的迭代格式。因此,PPA 可以理解为:先将不可微的 f f f 替换为其光滑近似 M α f M_{\alpha f} M α f ,再对光滑函数做梯度下降。这一解释揭示了 PPA 为何能同时处理不可微性和保持良好收敛性——它实际上是在一个光滑函数上做梯度下降。
5.5 极大单调算子# 5.5.1 为什么需要极大单调算子# 在 5.4.3 节中,我们从 Moreau 包络的角度直观理解了 PPA 的工作原理。但直觉不能替代严格证明。要证明 PPA 的收敛性,核心问题是:迭代映射 T = p r o x α f = ( I + α ∂ f ) − 1 T = \mathrm{prox}_{\alpha f} = (I + \alpha\,\partial f)^{-1} T = prox α f = ( I + α ∂ f ) − 1 具有什么性质?
当 f f f 可微时,∂ f = { ∇ f } \partial f = \{\nabla f\} ∂ f = { ∇ f } 是单值映射,∇ f \nabla f ∇ f 的单调性(凸性的直接推论)足以证明 T T T 是稳定非扩张的(5.7.1 节将给出完整证明)。然而,当 f f f 不可微时,∂ f \partial f ∂ f 是集值映射——对同一个 x x x ,∂ f ( x ) \partial f(x) ∂ f ( x ) 可能是一个集合而非单个向量。这时”∇ f \nabla f ∇ f 的单调性”不再适用,我们需要一个能处理集值映射的单调性理论。
极大单调算子正是为此而设计的概念。它把单调性从单值函数推广到集值映射,并且保证了一个关键结论:闭凸函数的次微分 ∂ f \partial f ∂ f 是极大单调算子,从而其预解算子 ( I + α ∂ f ) − 1 (I + \alpha\,\partial f)^{-1} ( I + α ∂ f ) − 1 是稳定非扩张的。有了这个结论,PPA 在不可微情形下的收敛性就可以用与可微情形相同的框架来证明。
5.5.2 从单调性到极大单调性# 回忆第二章中的单调算子定义。对于单值映射 A : R n → R n A: \mathbb{R}^n \to \mathbb{R}^n A : R n → R n ,单调性是指:
⟨ A ( x ) − A ( y ) , x − y ⟩ ≥ 0 , ∀ x , y ∈ R n \langle A(x) - A(y),\; x - y \rangle \geq 0, \quad \forall\, x, y \in \mathbb{R}^n ⟨ A ( x ) − A ( y ) , x − y ⟩ ≥ 0 , ∀ x , y ∈ R n 当 A = ∇ f A = \nabla f A = ∇ f (f f f 是凸可微函数)时,这个性质由凸性直接保证。
对于集值映射 Φ : R n ⇉ R n \Phi: \mathbb{R}^n \rightrightarrows \mathbb{R}^n Φ : R n ⇉ R n (一个 x x x 可能对应多个输出值),单调性的定义需要稍作调整:对任意 x , y x, y x , y 以及任意 u ∈ Φ ( x ) u \in \Phi(x) u ∈ Φ ( x ) 、v ∈ Φ ( y ) v \in \Phi(y) v ∈ Φ ( y ) ,都有
⟨ v − u , y − x ⟩ ≥ 0 \langle v - u,\; y - x \rangle \geq 0 ⟨ v − u , y − x ⟩ ≥ 0 含义是:无论从 Φ ( x ) \Phi(x) Φ ( x ) 和 Φ ( y ) \Phi(y) Φ ( y ) 中各取哪个元素,输出的增量方向与输入的增量方向之间的夹角都不超过 90 度。当 Φ \Phi Φ 是单值映射时,这就退化为上面的标准定义。
然而,单调性本身还不够。考虑一个一维例子:定义映射 Φ ( x ) = { 1 } \Phi(x) = \{1\} Φ ( x ) = { 1 } (当 x > 0 x > 0 x > 0 ),Φ ( x ) = { − 1 } \Phi(x) = \{-1\} Φ ( x ) = { − 1 } (当 x < 0 x < 0 x < 0 ),在 x = 0 x = 0 x = 0 处 Φ ( 0 ) = ∅ \Phi(0) = \emptyset Φ ( 0 ) = ∅ (未定义)。可以验证 Φ \Phi Φ 在其定义域上满足单调性。但这个映射在 x = 0 x = 0 x = 0 处有一个”缺口”——我们完全可以补充 Φ ( 0 ) = [ − 1 , 1 ] \Phi(0) = [-1, 1] Φ ( 0 ) = [ − 1 , 1 ] (零处的所有值),得到一个”更完整”的单调映射 Ψ \Psi Ψ ,使得 Φ \Phi Φ 的图(所有输入-输出对的集合)被 Ψ \Psi Ψ 的图严格包含。
极大单调算子 排除了这种”有缺口”的情况。设 Φ : R n ⇉ R n \Phi: \mathbb{R}^n \rightrightarrows \mathbb{R}^n Φ : R n ⇉ R n 是集值映射,Φ \Phi Φ 称为极大单调算子 ,如果它满足两个条件:(1) Φ \Phi Φ 是单调的;(2) 不存在单调映射 Ψ \Psi Ψ 使得 Φ \Phi Φ 的图被 Ψ \Psi Ψ 的图严格包含。第二个条件的含义是:Φ \Phi Φ 在所有单调映射中已经是”最完整的”,无法再向其中添加任何输入-输出对而保持单调性。
在上面的例子中,Φ \Phi Φ (在零处未定义的版本)不是极大单调的,因为可以扩展;但补全后的 Ψ \Psi Ψ (Ψ ( 0 ) = [ − 1 , 1 ] \Psi(0) = [-1, 1] Ψ ( 0 ) = [ − 1 , 1 ] )是极大单调的——恰好就是 ∣ x ∣ |x| ∣ x ∣ 的次微分 ∂ ∣ ⋅ ∣ \partial|\cdot| ∂ ∣ ⋅ ∣ 。
5.5.3 闭凸函数的次微分是极大单调算子# 极大单调算子理论中最重要的结论之一是:
设 f : R n → R ∪ { + ∞ } f: \mathbb{R}^n \to \mathbb{R} \cup \{+\infty\} f : R n → R ∪ { + ∞ } 是闭凸函数,则 ∂ f \partial f ∂ f 是极大单调算子。
这个结论(Rockafellar 定理)的证明需要较多凸分析的技术工具,此处不展开。它的意义在于:闭凸函数的次微分不仅是单调的(这由凸性直接得到),而且是”最完整的单调映射”——在保持单调性的前提下,∂ f \partial f ∂ f 已经包含了所有可能的次梯度信息,没有遗漏。
5.5.4 预解算子的稳定非扩张性# 极大单调算子理论的核心应用在于以下结论。设 Φ \Phi Φ 是极大单调算子,则对任意 c > 0 c > 0 c > 0 :
预解算子 J c Φ = ( I + c Φ ) − 1 J_{c\Phi} = (I + c\,\Phi)^{-1} J c Φ = ( I + c Φ ) − 1 的定义域和值域均为 R n \mathbb{R}^n R n ,且 J c Φ J_{c\Phi} J c Φ 是单值映射
J c Φ J_{c\Phi} J c Φ 是稳定非扩张的 (firmly nonexpansive)
第一条保证了预解算子在整个空间上都有定义且输出唯一——这是将不动点迭代从”包含”关系(x ∈ T x x \in Tx x ∈ T x )转化为”等式”关系(x = T x x = Tx x = T x )的前提。第二条是收敛性的关键:稳定非扩张映射的不动点迭代是收敛的(第二章定理)。
将这两条结论与 5.5.3 节的结论结合,就得到了 PPA 在不可微情形下收敛的完整逻辑链:
f 是闭凸函数 ⇒ ∂ f 是极大单调算子 ⇒ J α ∂ f = ( I + α ∂ f ) − 1 是稳定非扩张的 ⇒ PPA 收敛 f \text{ 是闭凸函数} \;\Rightarrow\; \partial f \text{ 是极大单调算子} \;\Rightarrow\; J_{\alpha\partial f} = (I + \alpha\,\partial f)^{-1} \text{ 是稳定非扩张的} \;\Rightarrow\; \text{PPA 收敛} f 是闭凸函数 ⇒ ∂ f 是极大单调算子 ⇒ J α ∂ f = ( I + α ∂ f ) − 1 是稳定非扩张的 ⇒ PPA 收敛 极大单调算子理论对本章的价值集中在上述逻辑链中。读者不必深入极大单调算子的一般理论细节,只需记住两点:(1) 闭凸函数的次微分是极大单调算子;(2) 极大单调算子的预解算子是稳定非扩张的。这两点足以支撑 PPA 及后续 PGA 的收敛性分析。
5.6 PPA 的两个重要例子# 在给出 PPA 的收敛性证明之前,先通过两个具体例子展示邻近算子的计算方法,它们同时验证了 5.3.5 节邻近算子表中的前两条。
5.6.1 指示函数上的 PPA 等价于投影# 设 f = ι Ω f = \iota_\Omega f = ι Ω 为凸集 Ω \Omega Ω 上的指示函数:
ι Ω ( x ) = { 0 , x ∈ Ω + ∞ , x ∉ Ω \iota_\Omega(x) = \begin{cases} 0, & x \in \Omega \\ +\infty, & x \notin \Omega \end{cases} ι Ω ( x ) = { 0 , + ∞ , x ∈ Ω x ∈ / Ω 指示函数是凸的(当 Ω \Omega Ω 为凸集时),但不可微(其次微分是法锥)。
对指示函数应用 PPA:
x k + 1 = arg min x { ι Ω ( x ) + 1 2 α ∥ x − x k ∥ 2 } x^{k+1} = \arg\min_x \left\{ \iota_\Omega(x) + \frac{1}{2\alpha}\|x - x^k\|^2 \right\} x k + 1 = arg x min { ι Ω ( x ) + 2 α 1 ∥ x − x k ∥ 2 } 由于 x ∉ Ω x \notin \Omega x ∈ / Ω 时 ι Ω ( x ) = + ∞ \iota_\Omega(x) = +\infty ι Ω ( x ) = + ∞ ,最小化自动要求 x ∈ Ω x \in \Omega x ∈ Ω 。此时 ι Ω ( x ) = 0 \iota_\Omega(x) = 0 ι Ω ( x ) = 0 ,问题简化为:
x k + 1 = arg min x ∈ Ω 1 2 α ∥ x − x k ∥ 2 x^{k+1} = \arg\min_{x \in \Omega} \; \frac{1}{2\alpha}\|x - x^k\|^2 x k + 1 = arg x ∈ Ω min 2 α 1 ∥ x − x k ∥ 2 系数 1 2 α \frac{1}{2\alpha} 2 α 1 不影响最优解,因此这等价于:
x k + 1 = arg min x ∈ Ω ∥ x − x k ∥ 2 = P Ω ( x k ) x^{k+1} = \arg\min_{x \in \Omega} \; \|x - x^k\|^2 = P_\Omega(x^k) x k + 1 = arg x ∈ Ω min ∥ x − x k ∥ 2 = P Ω ( x k ) 即在凸集 Ω \Omega Ω 上对 x k x^k x k 做投影 (projection)。因此,投影梯度法可以视为 PPA 作用在指示函数上的特例。
算子形式验证 :从零包含问题出发,PPA 的最优性条件为:
0 ∈ ∂ ι Ω ( x k + 1 ) + 1 α ( x k + 1 − x k ) 0 \in \partial\,\iota_\Omega(x^{k+1}) + \frac{1}{\alpha}(x^{k+1} - x^k) 0 ∈ ∂ ι Ω ( x k + 1 ) + α 1 ( x k + 1 − x k ) 整理为算子形式:
x k + 1 = ( I + α ∂ ι Ω ) − 1 x k x^{k+1} = (I + \alpha\,\partial\,\iota_\Omega)^{-1}\,x^k x k + 1 = ( I + α ∂ ι Ω ) − 1 x k 而此前已证明 ( I + α ∂ ι Ω ) − 1 = P Ω (I + \alpha\,\partial\,\iota_\Omega)^{-1} = P_\Omega ( I + α ∂ ι Ω ) − 1 = P Ω ,即预解算子等于投影算子,与上面的结论一致。
5.6.2 ℓ 1 \ell_1 ℓ 1 范数上的 PPA 得到收缩算子# 设 f ( x ) = ∥ x ∥ 1 = ∑ i = 1 n ∣ x i ∣ f(x) = \|x\|_1 = \sum_{i=1}^n |x_i| f ( x ) = ∥ x ∥ 1 = ∑ i = 1 n ∣ x i ∣ ,x ∈ R n x \in \mathbb{R}^n x ∈ R n 。对其应用 PPA:
x k + 1 = arg min x { ∥ x ∥ 1 + 1 2 α ∥ x − x k ∥ 2 } x^{k+1} = \arg\min_x \left\{ \|x\|_1 + \frac{1}{2\alpha}\|x - x^k\|^2 \right\} x k + 1 = arg x min { ∥ x ∥ 1 + 2 α 1 ∥ x − x k ∥ 2 } 展开为分量形式:
= arg min x ∑ i = 1 n { ∣ x i ∣ + 1 2 α ( x i − x i k ) 2 } = \arg\min_x \sum_{i=1}^n \left\{ |x_i| + \frac{1}{2\alpha}(x_i - x_i^k)^2 \right\} = arg x min i = 1 ∑ n { ∣ x i ∣ + 2 α 1 ( x i − x i k ) 2 } 由于各分量之间不存在耦合项 (coupling term)——即不存在 x i x j x_ix_j x i x j (i ≠ j i \neq j i = j )的交叉项——可以对每个分量独立求解:
x i k + 1 = arg min x i { ∣ x i ∣ + 1 2 α ( x i − x i k ) 2 } x_i^{k+1} = \arg\min_{x_i} \left\{ |x_i| + \frac{1}{2\alpha}(x_i - x_i^k)^2 \right\} x i k + 1 = arg x i min { ∣ x i ∣ + 2 α 1 ( x i − x i k ) 2 } 情况一 :x i k + 1 > 0 x_i^{k+1} > 0 x i k + 1 > 0 。此时 ∣ x i ∣ = x i |x_i| = x_i ∣ x i ∣ = x i ,对 x i x_i x i 求导令其为零:
1 + 1 α ( x i k + 1 − x i k ) = 0 ⟹ x i k + 1 = x i k − α 1 + \frac{1}{\alpha}(x_i^{k+1} - x_i^k) = 0 \implies x_i^{k+1} = x_i^k - \alpha 1 + α 1 ( x i k + 1 − x i k ) = 0 ⟹ x i k + 1 = x i k − α 此情况要求 x i k + 1 > 0 x_i^{k+1} > 0 x i k + 1 > 0 ,即 x i k > α x_i^k > \alpha x i k > α 。
情况二 :x i k + 1 < 0 x_i^{k+1} < 0 x i k + 1 < 0 。此时 ∣ x i ∣ = − x i |x_i| = -x_i ∣ x i ∣ = − x i ,对 x i x_i x i 求导令其为零:
− 1 + 1 α ( x i k + 1 − x i k ) = 0 ⟹ x i k + 1 = x i k + α -1 + \frac{1}{\alpha}(x_i^{k+1} - x_i^k) = 0 \implies x_i^{k+1} = x_i^k + \alpha − 1 + α 1 ( x i k + 1 − x i k ) = 0 ⟹ x i k + 1 = x i k + α 此情况要求 x i k + 1 < 0 x_i^{k+1} < 0 x i k + 1 < 0 ,即 x i k < − α x_i^k < -\alpha x i k < − α 。
情况三 :x i k + 1 = 0 x_i^{k+1} = 0 x i k + 1 = 0 。此时 ∣ x i ∣ |x_i| ∣ x i ∣ 在零处不可微,需要使用次微分。∣ x i ∣ |x_i| ∣ x i ∣ 在零处的次微分为 ∂ ∣ 0 ∣ = [ − 1 , 1 ] \partial|0| = [-1, 1] ∂ ∣0∣ = [ − 1 , 1 ] 。最优性条件变为:
0 ∈ [ − 1 , 1 ] + 1 α ( 0 − x i k ) 0 \in [-1, 1] + \frac{1}{\alpha}(0 - x_i^k) 0 ∈ [ − 1 , 1 ] + α 1 ( 0 − x i k ) 即 x i k α ∈ [ − 1 , 1 ] \frac{x_i^k}{\alpha} \in [-1, 1] α x i k ∈ [ − 1 , 1 ] ,等价于 x i k ∈ [ − α , α ] x_i^k \in [-\alpha, \alpha] x i k ∈ [ − α , α ] 。
综合三种情况,得到软阈值公式 (soft-thresholding):
x i k + 1 = S α ( x i k ) : = { x i k − α , x i k > α 0 , ∣ x i k ∣ ≤ α x i k + α , x i k < − α x_i^{k+1} = \mathcal{S}_\alpha(x_i^k) := \begin{cases} x_i^k - \alpha, & x_i^k > \alpha \\ 0, & |x_i^k| \leq \alpha \\ x_i^k + \alpha, & x_i^k < -\alpha \end{cases} x i k + 1 = S α ( x i k ) := ⎩ ⎨ ⎧ x i k − α , 0 , x i k + α , x i k > α ∣ x i k ∣ ≤ α x i k < − α 这就是收缩算子 (shrinkage operator),也写作:
S α ( x i k ) = s i g n ( x i k ) ⋅ max { ∣ x i k ∣ − α , 0 } \mathcal{S}_\alpha(x_i^k) = \mathrm{sign}(x_i^k) \cdot \max\{|x_i^k| - \alpha,\; 0\} S α ( x i k ) = sign ( x i k ) ⋅ max { ∣ x i k ∣ − α , 0 }
5.7 PPA 的收敛性分析# 本节用三种不同的方法证明 PPA 的收敛性。给出三种证明并非为了重复,而是因为它们各自适用于不同的条件并揭示了不同的数学结构。方法一最直接,在可微情形下从预解算子的定义出发验证稳定非扩张性;方法二处理不可微情形,将 5.5 节建立的极大单调算子理论付诸应用,展示了从凸分析到算子理论再到收敛性的完整逻辑链条;方法三基于最优性条件和费杰单调性(Fejer monotonicity),不依赖算子理论的抽象框架,是最”自给自足”的证明路径——它只需要凸性和基本的不等式技巧,因此适用范围也最广,后续松弛 PPA(5.8 节)和 PGA(5.9 节)的收敛性证明都沿用方法三的思路。
5.7.1 方法一:算子形式证明(可微情形)# 条件 :f f f 凸且可微,步长 α > 0 \alpha > 0 α > 0 固定,∇ f \nabla f ∇ f 是单调算子。
目标 :证明 T = ( I + α ∇ f ) − 1 T = (I + \alpha\,\nabla f)^{-1} T = ( I + α ∇ f ) − 1 是稳定非扩张的(firmly nonexpansive)。
证明 :令 u = T ( x ) u = T(x) u = T ( x ) ,v = T ( y ) v = T(y) v = T ( y ) ,则:
x = u + α ∇ f ( u ) , y = v + α ∇ f ( v ) x = u + \alpha\,\nabla f(u), \qquad y = v + \alpha\,\nabla f(v) x = u + α ∇ f ( u ) , y = v + α ∇ f ( v ) 根据稳定非扩张的定义,需证明:
∥ T ( x ) − T ( y ) ∥ 2 ≤ ⟨ x − y , T ( x ) − T ( y ) ⟩ \|T(x) - T(y)\|^2 \leq \langle x - y,\; T(x) - T(y) \rangle ∥ T ( x ) − T ( y ) ∥ 2 ≤ ⟨ x − y , T ( x ) − T ( y )⟩ 即证 ∥ u − v ∥ 2 ≤ ⟨ x − y , u − v ⟩ \|u - v\|^2 \leq \langle x - y,\; u - v \rangle ∥ u − v ∥ 2 ≤ ⟨ x − y , u − v ⟩ 。将 x , y x, y x , y 的表达式代入右侧:
⟨ x − y , u − v ⟩ = ⟨ ( u + α ∇ f ( u ) ) − ( v + α ∇ f ( v ) ) , u − v ⟩ \langle x - y,\; u - v \rangle = \langle (u + \alpha\,\nabla f(u)) - (v + \alpha\,\nabla f(v)),\; u - v \rangle ⟨ x − y , u − v ⟩ = ⟨( u + α ∇ f ( u )) − ( v + α ∇ f ( v )) , u − v ⟩ = ∥ u − v ∥ 2 + α ⟨ ∇ f ( u ) − ∇ f ( v ) , u − v ⟩ = \|u - v\|^2 + \alpha\,\langle \nabla f(u) - \nabla f(v),\; u - v \rangle = ∥ u − v ∥ 2 + α ⟨ ∇ f ( u ) − ∇ f ( v ) , u − v ⟩ 由于 ∇ f \nabla f ∇ f 是单调算子,有 ⟨ ∇ f ( u ) − ∇ f ( v ) , u − v ⟩ ≥ 0 \langle \nabla f(u) - \nabla f(v),\; u - v \rangle \geq 0 ⟨ ∇ f ( u ) − ∇ f ( v ) , u − v ⟩ ≥ 0 。又 α > 0 \alpha > 0 α > 0 ,故:
⟨ x − y , u − v ⟩ ≥ ∥ u − v ∥ 2 \langle x - y,\; u - v \rangle \geq \|u - v\|^2 ⟨ x − y , u − v ⟩ ≥ ∥ u − v ∥ 2 这正是稳定非扩张的定义。根据不动点迭代的收敛定理,稳定非扩张映射的不动点迭代是收敛的,从而 PPA 收敛。■ \blacksquare ■
5.7.2 方法二:算子形式证明(不可微情形)# 当 f f f 凸但不可微时,方法一的证明思路不再直接适用,因为 ∂ f \partial f ∂ f 是集值映射,不能简单地写成 x = u + α ∇ f ( u ) x = u + \alpha\,\nabla f(u) x = u + α ∇ f ( u ) 这样的等式。此时需要调用 5.5 节建立的极大单调算子理论。
证明的逻辑链条如下:f f f 是闭凸函数 ⇒ \Rightarrow ⇒ ∂ f \partial f ∂ f 是极大单调算子(5.5.3 节)⇒ \Rightarrow ⇒ ( I + α ∂ f ) − 1 (I + \alpha\,\partial f)^{-1} ( I + α ∂ f ) − 1 是稳定非扩张的(5.5.4 节性质 2)⇒ \Rightarrow ⇒ 不动点迭代收敛(第二章不动点定理)。
这条逻辑链中,每一步都已在前面的章节中建立,此处只需串联即可。方法二的价值在于它表明:可微情形的证明(方法一)可以通过极大单调算子的框架自然地推广到不可微情形,而无需引入任何本质上不同的新技巧。
5.7.3 方法三:利用最优性条件和费杰单调性# 条件 :f f f 凸,步长 α > 0 \alpha > 0 α > 0 固定。设 x ∗ x^* x ∗ 是最优解。
PPA 迭代 :x k + 1 = x k − α ∇ f ( x k + 1 ) x^{k+1} = x^k - \alpha\,\nabla f(x^{k+1}) x k + 1 = x k − α ∇ f ( x k + 1 ) (以可微情形为例)。
步骤 1 :分析 ∥ x k + 1 − x ∗ ∥ 2 \|x^{k+1} - x^*\|^2 ∥ x k + 1 − x ∗ ∥ 2 。
∥ x k + 1 − x ∗ ∥ 2 = ∥ x k + 1 − x k + x k − x ∗ ∥ 2 \|x^{k+1} - x^*\|^2 = \|x^{k+1} - x^k + x^k - x^*\|^2 ∥ x k + 1 − x ∗ ∥ 2 = ∥ x k + 1 − x k + x k − x ∗ ∥ 2 在中间加减 x k x^k x k ,展开:
= ∥ x k + 1 − x k ∥ 2 + ∥ x k − x ∗ ∥ 2 + 2 ⟨ x k + 1 − x k , x k − x ∗ ⟩ = \|x^{k+1} - x^k\|^2 + \|x^k - x^*\|^2 + 2\langle x^{k+1} - x^k,\; x^k - x^*\rangle = ∥ x k + 1 − x k ∥ 2 + ∥ x k − x ∗ ∥ 2 + 2 ⟨ x k + 1 − x k , x k − x ∗ ⟩ 进一步在内积中加减 x k + 1 x^{k+1} x k + 1 :
= − ∥ x k + 1 − x k ∥ 2 + ∥ x k − x ∗ ∥ 2 + 2 ⟨ x k + 1 − x k , x k + 1 − x ∗ ⟩ = -\|x^{k+1} - x^k\|^2 + \|x^k - x^*\|^2 + 2\langle x^{k+1} - x^k,\; x^{k+1} - x^*\rangle = − ∥ x k + 1 − x k ∥ 2 + ∥ x k − x ∗ ∥ 2 + 2 ⟨ x k + 1 − x k , x k + 1 − x ∗ ⟩ 步骤 2 :代入 PPA 迭代关系 x k + 1 − x k = − α ∇ f ( x k + 1 ) x^{k+1} - x^k = -\alpha\,\nabla f(x^{k+1}) x k + 1 − x k = − α ∇ f ( x k + 1 ) :
= ∥ x k − x ∗ ∥ 2 − ∥ x k + 1 − x k ∥ 2 − 2 α ⟨ ∇ f ( x k + 1 ) , x k + 1 − x ∗ ⟩ = \|x^k - x^*\|^2 - \|x^{k+1} - x^k\|^2 - 2\alpha\,\langle \nabla f(x^{k+1}),\; x^{k+1} - x^*\rangle = ∥ x k − x ∗ ∥ 2 − ∥ x k + 1 − x k ∥ 2 − 2 α ⟨ ∇ f ( x k + 1 ) , x k + 1 − x ∗ ⟩ 步骤 3 :利用最优性条件。x ∗ x^* x ∗ 是最优解,故 ∇ f ( x ∗ ) = 0 \nabla f(x^*) = 0 ∇ f ( x ∗ ) = 0 。因此:
⟨ ∇ f ( x k + 1 ) , x k + 1 − x ∗ ⟩ = ⟨ ∇ f ( x k + 1 ) − ∇ f ( x ∗ ) , x k + 1 − x ∗ ⟩ \langle \nabla f(x^{k+1}),\; x^{k+1} - x^*\rangle = \langle \nabla f(x^{k+1}) - \nabla f(x^*),\; x^{k+1} - x^*\rangle ⟨ ∇ f ( x k + 1 ) , x k + 1 − x ∗ ⟩ = ⟨ ∇ f ( x k + 1 ) − ∇ f ( x ∗ ) , x k + 1 − x ∗ ⟩ 由 f f f 凸可知 ∇ f \nabla f ∇ f 是单调算子,故上式 ≥ 0 \geq 0 ≥ 0 。加上 − 2 α -2\alpha − 2 α (α > 0 \alpha > 0 α > 0 ),得:
− 2 α ⟨ ∇ f ( x k + 1 ) , x k + 1 − x ∗ ⟩ ≤ 0 -2\alpha\,\langle \nabla f(x^{k+1}),\; x^{k+1} - x^*\rangle \leq 0 − 2 α ⟨ ∇ f ( x k + 1 ) , x k + 1 − x ∗ ⟩ ≤ 0 步骤 4 :综合以上结果:
∥ x k + 1 − x ∗ ∥ 2 ≤ ∥ x k − x ∗ ∥ 2 − ∥ x k + 1 − x k ∥ 2 \|x^{k+1} - x^*\|^2 \leq \|x^k - x^*\|^2 - \|x^{k+1} - x^k\|^2 ∥ x k + 1 − x ∗ ∥ 2 ≤ ∥ x k − x ∗ ∥ 2 − ∥ x k + 1 − x k ∥ 2 这是经典的费杰单调性 (Fejer monotonicity)不等式。它表明:
∥ x k − x ∗ ∥ 2 \|x^k - x^*\|^2 ∥ x k − x ∗ ∥ 2 是单调递减序列(有下界 0),故收敛
∑ k = 0 ∞ ∥ x k + 1 − x k ∥ 2 < ∞ \sum_{k=0}^{\infty}\|x^{k+1} - x^k\|^2 < \infty ∑ k = 0 ∞ ∥ x k + 1 − x k ∥ 2 < ∞ ,故 ∥ x k + 1 − x k ∥ → 0 \|x^{k+1} - x^k\| \to 0 ∥ x k + 1 − x k ∥ → 0
后续步骤与不动点迭代收敛性证明完全相同,从而得出 PPA 收敛。■ \blacksquare ■
5.8 松弛 PPA# 5.8.1 动机:标准 PPA 的局限性# 标准 PPA 的迭代 x k + 1 = p r o x α f ( x k ) x^{k+1} = \mathrm{prox}_{\alpha f}(x^k) x k + 1 = prox α f ( x k ) 在理论上具有良好的收敛性,但在实践中存在两个局限。
其一,每步迭代要求精确求解邻近子问题 arg min x { f ( x ) + 1 2 α ∥ x − x k ∥ 2 } \arg\min_x \{f(x) + \frac{1}{2\alpha}\|x-x^k\|^2\} arg min x { f ( x ) + 2 α 1 ∥ x − x k ∥ 2 } 。对于复杂的 f f f ,精确求解代价可能很高,而只需要近似求解就足以保证收敛。松弛参数提供了一种系统化的近似机制:当 ρ k < 1 \rho_k < 1 ρ k < 1 时,新的迭代点只向邻近映射的方向走一部分,相当于用一个”保守版”的邻近步替代精确邻近步。
其二,标准 PPA 的每步移动量完全由邻近映射决定,没有利用迭代之间的惯性信息。当 ρ k > 1 \rho_k > 1 ρ k > 1 时,算法在邻近映射的基础上进一步外推,类似于 Nesterov 加速中的动量项,在某些问题上可以加速收敛。
松弛 PPA 通过引入一个松弛参数 ρ k ∈ ( 0 , 2 ) \rho_k \in (0, 2) ρ k ∈ ( 0 , 2 ) ,将标准 PPA 推广为更灵活的迭代格式。当 ρ k = 1 \rho_k = 1 ρ k = 1 时退化为标准 PPA,ρ k < 1 \rho_k < 1 ρ k < 1 对应保守的松弛步,ρ k > 1 \rho_k > 1 ρ k > 1 对应激进的惯性步。下面给出具体的迭代格式和收敛性分析。
5.8.2 迭代格式# 松弛 PPA 的迭代由两步组成:
x ^ k + 1 = arg min x { f ( x ) + 1 2 α ∥ x − x k ∥ 2 } \hat{x}^{k+1} = \arg\min_x \left\{ f(x) + \frac{1}{2\alpha} \|x - x^k\|^2 \right\} x ^ k + 1 = arg x min { f ( x ) + 2 α 1 ∥ x − x k ∥ 2 } x k + 1 = ( 1 − ρ k ) x k + ρ k x ^ k + 1 x^{k+1} = (1 - \rho_k) x^k + \rho_k \hat{x}^{k+1} x k + 1 = ( 1 − ρ k ) x k + ρ k x ^ k + 1 其中 α > 0 \alpha > 0 α > 0 是邻近参数,ρ k ∈ ( 0 , 2 ) \rho_k \in (0, 2) ρ k ∈ ( 0 , 2 ) 是松弛参数。第一步与标准 PPA 完全相同,计算邻近映射得到中间点 x ^ k + 1 \hat{x}^{k+1} x ^ k + 1 ;第二步则对 x k x^k x k 和 x ^ k + 1 \hat{x}^{k+1} x ^ k + 1 做加权组合,得到新的迭代点 x k + 1 x^{k+1} x k + 1 。当 ρ k = 1 \rho_k = 1 ρ k = 1 时,松弛 PPA 退化为标准 PPA,即 x k + 1 = x ^ k + 1 x^{k+1} = \hat{x}^{k+1} x k + 1 = x ^ k + 1 。
5.8.3 松弛参数的几何含义# 松弛参数 ρ k \rho_k ρ k 的取值范围 ( 0 , 2 ) (0, 2) ( 0 , 2 ) 可以进一步细分为两个区间,它们具有不同的几何含义。
松弛步 (ρ k ∈ ( 0 , 1 ) \rho_k \in (0, 1) ρ k ∈ ( 0 , 1 ) ):此时 x k + 1 = ( 1 − ρ k ) x k + ρ k x ^ k + 1 x^{k+1} = (1 - \rho_k) x^k + \rho_k \hat{x}^{k+1} x k + 1 = ( 1 − ρ k ) x k + ρ k x ^ k + 1 是 x k x^k x k 和 x ^ k + 1 \hat{x}^{k+1} x ^ k + 1 的凸组合。新的迭代点 x k + 1 x^{k+1} x k + 1 落在 x k x^k x k 与 x ^ k + 1 \hat{x}^{k+1} x ^ k + 1 之间的线段上,相当于只走了”一部分”邻近步(under-relaxation)。
惯性步 (ρ k ∈ ( 1 , 2 ) \rho_k \in (1, 2) ρ k ∈ ( 1 , 2 ) ):将迭代式改写为 x k + 1 = x ^ k + 1 + ( ρ k − 1 ) ( x ^ k + 1 − x k ) x^{k+1} = \hat{x}^{k+1} + (\rho_k - 1)(\hat{x}^{k+1} - x^k) x k + 1 = x ^ k + 1 + ( ρ k − 1 ) ( x ^ k + 1 − x k ) ,此时 x k + 1 x^{k+1} x k + 1 沿 x ^ k + 1 − x k \hat{x}^{k+1} - x^k x ^ k + 1 − x k 方向”冲出”了 x ^ k + 1 \hat{x}^{k+1} x ^ k + 1 ,超越了标准 PPA 的中间点。这种行为称为惯性步(over-relaxation),算法沿着当前移动方向进行了外推。
5.8.4 收敛性分析# 下面证明在 ρ k ∈ ( 0 , 2 ) \rho_k \in (0, 2) ρ k ∈ ( 0 , 2 ) 的条件下,序列 { ∥ x k − x ∗ ∥ 2 } \{\|x^k - x^*\|^2\} { ∥ x k − x ∗ ∥ 2 } 具有非递增单调性。
步骤 1 :展开迭代点与最优解的距离。将 x k + 1 x^{k+1} x k + 1 的表达式代入,展开 ∥ x k + 1 − x ∗ ∥ 2 \|x^{k+1} - x^*\|^2 ∥ x k + 1 − x ∗ ∥ 2 :
∥ x k + 1 − x ∗ ∥ 2 = ∥ ( 1 − ρ k ) ( x k − x ∗ ) + ρ k ( x ^ k + 1 − x ∗ ) ∥ 2 \|x^{k+1} - x^*\|^2 = \|(1 - \rho_k)(x^k - x^*) + \rho_k(\hat{x}^{k+1} - x^*)\|^2 ∥ x k + 1 − x ∗ ∥ 2 = ∥ ( 1 − ρ k ) ( x k − x ∗ ) + ρ k ( x ^ k + 1 − x ∗ ) ∥ 2 = ∥ x k − x ∗ ∥ 2 + ρ k 2 ∥ x ^ k + 1 − x k ∥ 2 + 2 ρ k ⟨ x k − x ∗ , x ^ k + 1 − x k ⟩ = \|x^k - x^*\|^2 + \rho_k^2 \|\hat{x}^{k+1} - x^k\|^2 + 2\rho_k \langle x^k - x^*, \hat{x}^{k+1} - x^k \rangle = ∥ x k − x ∗ ∥ 2 + ρ k 2 ∥ x ^ k + 1 − x k ∥ 2 + 2 ρ k ⟨ x k − x ∗ , x ^ k + 1 − x k ⟩ 步骤 2 :处理交叉项。对 ⟨ x k − x ∗ , x ^ k + 1 − x k ⟩ \langle x^k - x^*, \hat{x}^{k+1} - x^k \rangle ⟨ x k − x ∗ , x ^ k + 1 − x k ⟩ 插入 x ^ k + 1 \hat{x}^{k+1} x ^ k + 1 :
⟨ x k − x ∗ , x ^ k + 1 − x k ⟩ = − ∥ x ^ k + 1 − x k ∥ 2 + ⟨ x ^ k + 1 − x ∗ , x ^ k + 1 − x k ⟩ \langle x^k - x^*, \hat{x}^{k+1} - x^k \rangle = -\|\hat{x}^{k+1} - x^k\|^2 + \langle \hat{x}^{k+1} - x^*, \hat{x}^{k+1} - x^k \rangle ⟨ x k − x ∗ , x ^ k + 1 − x k ⟩ = − ∥ x ^ k + 1 − x k ∥ 2 + ⟨ x ^ k + 1 − x ∗ , x ^ k + 1 − x k ⟩ 代入后得到:
∥ x k + 1 − x ∗ ∥ 2 = ∥ x k − x ∗ ∥ 2 + ( ρ k 2 − 2 ρ k ) ∥ x ^ k + 1 − x k ∥ 2 + 2 ρ k ⟨ x ^ k + 1 − x ∗ , x ^ k + 1 − x k ⟩ \|x^{k+1} - x^*\|^2 = \|x^k - x^*\|^2 + (\rho_k^2 - 2\rho_k)\|\hat{x}^{k+1} - x^k\|^2 + 2\rho_k \langle \hat{x}^{k+1} - x^*, \hat{x}^{k+1} - x^k \rangle ∥ x k + 1 − x ∗ ∥ 2 = ∥ x k − x ∗ ∥ 2 + ( ρ k 2 − 2 ρ k ) ∥ x ^ k + 1 − x k ∥ 2 + 2 ρ k ⟨ x ^ k + 1 − x ∗ , x ^ k + 1 − x k ⟩ 步骤 3 :利用最优性条件消去内积项。x ^ k + 1 \hat{x}^{k+1} x ^ k + 1 是邻近映射的解,满足 x ^ k + 1 − x k = − α ∂ f ( x ^ k + 1 ) \hat{x}^{k+1} - x^k = -\alpha \,\partial f(\hat{x}^{k+1}) x ^ k + 1 − x k = − α ∂ f ( x ^ k + 1 ) 。同时 x ∗ x^* x ∗ 是全局最优解,0 ∈ ∂ f ( x ∗ ) 0 \in \partial f(x^*) 0 ∈ ∂ f ( x ∗ ) 。代入内积项:
⟨ x ^ k + 1 − x ∗ , x ^ k + 1 − x k ⟩ = − α ⟨ x ^ k + 1 − x ∗ , ∂ f ( x ^ k + 1 ) − ∂ f ( x ∗ ) ⟩ \langle \hat{x}^{k+1} - x^*, \hat{x}^{k+1} - x^k \rangle = -\alpha \langle \hat{x}^{k+1} - x^*, \partial f(\hat{x}^{k+1}) - \partial f(x^*) \rangle ⟨ x ^ k + 1 − x ∗ , x ^ k + 1 − x k ⟩ = − α ⟨ x ^ k + 1 − x ∗ , ∂ f ( x ^ k + 1 ) − ∂ f ( x ∗ )⟩ 步骤 4 :利用单调性。当 f f f 是凸函数时,∂ f \partial f ∂ f 是单调算子,故 ⟨ x ^ k + 1 − x ∗ , ∂ f ( x ^ k + 1 ) − ∂ f ( x ∗ ) ⟩ ≥ 0 \langle \hat{x}^{k+1} - x^*, \partial f(\hat{x}^{k+1}) - \partial f(x^*) \rangle \geq 0 ⟨ x ^ k + 1 − x ∗ , ∂ f ( x ^ k + 1 ) − ∂ f ( x ∗ )⟩ ≥ 0 。因此内积项前带负号 − α -\alpha − α ,使得 2 ρ k ⟨ x ^ k + 1 − x ∗ , x ^ k + 1 − x k ⟩ ≤ 0 2\rho_k \langle \hat{x}^{k+1} - x^*, \hat{x}^{k+1} - x^k \rangle \leq 0 2 ρ k ⟨ x ^ k + 1 − x ∗ , x ^ k + 1 − x k ⟩ ≤ 0 。
步骤 5 :得出收敛条件。将上述不等式代回:
∥ x k + 1 − x ∗ ∥ 2 ≤ ∥ x k − x ∗ ∥ 2 + ρ k ( ρ k − 2 ) ∥ x ^ k + 1 − x k ∥ 2 \|x^{k+1} - x^*\|^2 \leq \|x^k - x^*\|^2 + \rho_k(\rho_k - 2)\|\hat{x}^{k+1} - x^k\|^2 ∥ x k + 1 − x ∗ ∥ 2 ≤ ∥ x k − x ∗ ∥ 2 + ρ k ( ρ k − 2 ) ∥ x ^ k + 1 − x k ∥ 2 由于 ∥ x ^ k + 1 − x k ∥ 2 ≥ 0 \|\hat{x}^{k+1} - x^k\|^2 \geq 0 ∥ x ^ k + 1 − x k ∥ 2 ≥ 0 且 ρ k > 0 \rho_k > 0 ρ k > 0 ,要使右端第二项非正需要 ρ k − 2 ≤ 0 \rho_k - 2 \leq 0 ρ k − 2 ≤ 0 ,即 ρ k ≤ 2 \rho_k \leq 2 ρ k ≤ 2 。因此当 ρ k ∈ ( 0 , 2 ) \rho_k \in (0, 2) ρ k ∈ ( 0 , 2 ) 时:
∥ x k + 1 − x ∗ ∥ 2 ≤ ∥ x k − x ∗ ∥ 2 \|x^{k+1} - x^*\|^2 \leq \|x^k - x^*\|^2 ∥ x k + 1 − x ∗ ∥ 2 ≤ ∥ x k − x ∗ ∥ 2 这就证明了序列 { ∥ x k − x ∗ ∥ 2 } \{\|x^k - x^*\|^2\} { ∥ x k − x ∗ ∥ 2 } 关于 k k k 非递增单调,从而保证松弛 PPA 的收敛性。■ \blacksquare ■
5.9 邻近梯度算法# 5.9.1 复合优化问题# 邻近梯度算法(Proximal Gradient Algorithm, PGA)用于求解复合优化 (composite optimization)问题:
min x F ( x ) : = f ( x ) + g ( x ) \min_{x} \; F(x) := f(x) + g(x) x min F ( x ) := f ( x ) + g ( x ) 其中 f ( x ) f(x) f ( x ) 是光滑函数 (可微,且梯度 Lipschitz 连续),g ( x ) g(x) g ( x ) 是非光滑函数 (可能不可微),但通常是凸的。这类问题在机器学习和信号处理中极为常见——f ( x ) f(x) f ( x ) 通常是数据拟合项(如最小二乘损失),g ( x ) g(x) g ( x ) 通常是正则化项(如 ℓ 1 \ell_1 ℓ 1 范数)。
核心思想是:对光滑部分 f f f 做梯度下降 ,对非光滑部分 g g g 做邻近点算法 ,将两者结合形成一步迭代。这种”分而治之”的思路也称为前向-后向分裂法 (Forward-Backward Splitting Method, FBSM)。
5.9.2 迭代格式推导# PGA 的迭代格式为:
x k + 1 = arg min x { g ( x ) + ⟨ ∇ f ( x k ) , x − x k ⟩ + 1 2 α k ∥ x − x k ∥ 2 } x^{k+1} = \arg\min_{x} \left\{ g(x) + \langle \nabla f(x^k),\, x - x^k \rangle + \frac{1}{2\alpha_k} \|x - x^k\|^2 \right\} x k + 1 = arg x min { g ( x ) + ⟨ ∇ f ( x k ) , x − x k ⟩ + 2 α k 1 ∥ x − x k ∥ 2 } 构造逻辑如下:对光滑部分 f f f 在当前点 x k x^k x k 处做一阶 Taylor 展开(线性化近似),对非光滑部分 g g g 保持不动,同时加入邻近项 1 2 α k ∥ x − x k ∥ 2 \frac{1}{2\alpha_k}\|x - x^k\|^2 2 α k 1 ∥ x − x k ∥ 2 控制迭代步长。
对线性项和二次项进行配方:
x k + 1 = arg min x { g ( x ) + 1 2 α k ∥ x − ( x k − α k ∇ f ( x k ) ) ∥ 2 } x^{k+1} = \arg\min_{x} \left\{ g(x) + \frac{1}{2\alpha_k} \left\| x - \left( x^k - \alpha_k \nabla f(x^k) \right) \right\|^2 \right\} x k + 1 = arg x min { g ( x ) + 2 α k 1 x − ( x k − α k ∇ f ( x k ) ) 2 } 这正是 g g g 关于点 x k − α k ∇ f ( x k ) x^k - \alpha_k \nabla f(x^k) x k − α k ∇ f ( x k ) 的邻近算子。记为:
x k + 1 = p r o x α k g ( x k − α k ∇ f ( x k ) ) \boxed{x^{k+1} = \mathrm{prox}_{\alpha_k g}\!\left( x^k - \alpha_k \nabla f(x^k) \right)} x k + 1 = prox α k g ( x k − α k ∇ f ( x k ) ) 直觉非常清晰:先对光滑部分 f f f 做一步梯度下降得到中间点 x k − α k ∇ f ( x k ) x^k - \alpha_k \nabla f(x^k) x k − α k ∇ f ( x k ) ,再对非光滑部分 g g g 施加邻近算子进行修正。
5.9.3 算法伪代码# 将 PGA 的完整算法整理如下。
算法 5.1:邻近梯度算法(PGA / ISTA)
输入 :初始点 x 0 ∈ R n x^0 \in \mathbb{R}^n x 0 ∈ R n ,步长 α > 0 \alpha > 0 α > 0 (满足 α < 1 / L \alpha < 1/L α < 1/ L ,其中 L L L 是 ∇ f \nabla f ∇ f 的 Lipschitz 常数),最大迭代次数 K K K ,容差 ε > 0 \varepsilon > 0 ε > 0
for k = 0 , 1 , 2 , … , K − 1 k = 0, 1, 2, \ldots, K-1 k = 0 , 1 , 2 , … , K − 1 do
\quad 1. 梯度步:v k = x k − α ∇ f ( x k ) v^k = x^k - \alpha \,\nabla f(x^k) v k = x k − α ∇ f ( x k )
\quad 2. 邻近步:x k + 1 = p r o x α g ( v k ) x^{k+1} = \mathrm{prox}_{\alpha g}(v^k) x k + 1 = prox α g ( v k )
\quad 3. 停机检查:若 ∥ x k + 1 − x k ∥ < ε \|x^{k+1} - x^k\| < \varepsilon ∥ x k + 1 − x k ∥ < ε ,则停止
end for
输出 :x k + 1 x^{k+1} x k + 1
当 g ( x ) = λ ∥ x ∥ 1 g(x) = \lambda\|x\|_1 g ( x ) = λ ∥ x ∥ 1 时,邻近步就是软阈值运算,此时 PGA 也称为迭代收缩阈值算法 (Iterative Shrinkage-Thresholding Algorithm, ISTA)。ISTA 和 PGA 实质上是同一个算法在不同文献中的不同称呼——前者在信号处理领域广泛使用,后者在优化理论文献中更常见。其加速版本 FISTA(Fast ISTA)引入 Nesterov 动量项,将收敛速度从 O ( 1 / k ) O(1/k) O ( 1/ k ) 提升到 O ( 1 / k 2 ) O(1/k^2) O ( 1/ k 2 ) 。
步长的选取有两种常见策略:固定步长 α = 1 / L \alpha = 1/L α = 1/ L (需要已知 L L L )和回溯线搜索(Backtracking line search,不需要 L L L 但每步可能多次计算函数值)。
5.9.4 算子形式与分裂算法# 对 PGA 迭代式求最优性条件。由于 g g g 非光滑,对其取次梯度:
0 ∈ ∂ g ( x k + 1 ) + ∇ f ( x k ) + 1 α k ( x k + 1 − x k ) 0 \in \partial g(x^{k+1}) + \nabla f(x^k) + \frac{1}{\alpha_k}(x^{k+1} - x^k) 0 ∈ ∂ g ( x k + 1 ) + ∇ f ( x k ) + α k 1 ( x k + 1 − x k ) 令 A = ∇ f A = \nabla f A = ∇ f (梯度算子),B = ∂ g B = \partial g B = ∂ g (次梯度算子),c = α k c = \alpha_k c = α k (步长参数),整理得 PGA 的算子迭代形式:
x k + 1 = J c B ( I − c A ) x k \boxed{x^{k+1} = J_{cB}\!\left( I - cA \right) x^k} x k + 1 = J c B ( I − c A ) x k 其中 J c B = ( I + c B ) − 1 J_{cB} = (I + cB)^{-1} J c B = ( I + c B ) − 1 是 B B B 的预解算子。
原始优化问题的零包含形式为 0 ∈ ∇ f ( x ) + ∂ g ( x ) 0 \in \nabla f(x) + \partial g(x) 0 ∈ ∇ f ( x ) + ∂ g ( x ) ,即 0 ∈ A x + B x 0 \in Ax + Bx 0 ∈ A x + B x 。这正是经典的分裂算法 (splitting method)框架:将零包含问题中的算子拆分为 A A A (易于计算梯度的部分)和 B B B (易于计算预解式的部分),分别处理后组合。
5.9.5 收敛性分析# 设 g g g 为凸函数,B = ∂ g B = \partial g B = ∂ g 为极大单调算子,PGA 在以下三个条件下收敛:
条件一 :J c B J_{cB} J c B 是稳定非扩张映射(已在 PPA 收敛性证明中建立)
条件二 :A = ∇ f A = \nabla f A = ∇ f 满足余强制 (cocoercive)条件,即存在 δ > 0 \delta > 0 δ > 0 使得 ⟨ A x − A y , x − y ⟩ ≥ δ ∥ A x − A y ∥ 2 \langle Ax - Ay,\, x - y \rangle \geq \delta \|Ax - Ay\|^2 ⟨ A x − A y , x − y ⟩ ≥ δ ∥ A x − A y ∥ 2
条件三 :步长参数 c c c 满足 c < 2 δ c < 2\delta c < 2 δ
证明 :设 x ∗ x^* x ∗ 是不动点(满足 x ∗ = J c B ( I − c A ) x ∗ x^* = J_{cB}(I - cA)x^* x ∗ = J c B ( I − c A ) x ∗ ),计算:
∥ x k + 1 − x ∗ ∥ 2 = ∥ J c B ( I − c A ) x k − J c B ( I − c A ) x ∗ ∥ 2 \|x^{k+1} - x^*\|^2 = \|J_{cB}(I - cA)x^k - J_{cB}(I - cA)x^*\|^2 ∥ x k + 1 − x ∗ ∥ 2 = ∥ J c B ( I − c A ) x k − J c B ( I − c A ) x ∗ ∥ 2 第一步 :利用 J c B J_{cB} J c B 的非扩张性:
∥ x k + 1 − x ∗ ∥ 2 ≤ ∥ ( I − c A ) x k − ( I − c A ) x ∗ ∥ 2 \|x^{k+1} - x^*\|^2 \leq \|(I - cA)x^k - (I - cA)x^*\|^2 ∥ x k + 1 − x ∗ ∥ 2 ≤ ∥ ( I − c A ) x k − ( I − c A ) x ∗ ∥ 2 第二步 :展开右端:
∥ ( I − c A ) x k − ( I − c A ) x ∗ ∥ 2 = ∥ x k − x ∗ ∥ 2 + c 2 ∥ A x k − A x ∗ ∥ 2 − 2 c ⟨ x k − x ∗ , A x k − A x ∗ ⟩ \|(I - cA)x^k - (I - cA)x^*\|^2 = \|x^k - x^*\|^2 + c^2\|Ax^k - Ax^*\|^2 - 2c\langle x^k - x^*,\, Ax^k - Ax^* \rangle ∥ ( I − c A ) x k − ( I − c A ) x ∗ ∥ 2 = ∥ x k − x ∗ ∥ 2 + c 2 ∥ A x k − A x ∗ ∥ 2 − 2 c ⟨ x k − x ∗ , A x k − A x ∗ ⟩ 第三步 :利用 A A A 的 cocoercive 条件,⟨ x k − x ∗ , A x k − A x ∗ ⟩ ≥ δ ∥ A x k − A x ∗ ∥ 2 \langle x^k - x^*, Ax^k - Ax^* \rangle \geq \delta \|Ax^k - Ax^*\|^2 ⟨ x k − x ∗ , A x k − A x ∗ ⟩ ≥ δ ∥ A x k − A x ∗ ∥ 2 ,代入得:
∥ x k + 1 − x ∗ ∥ 2 ≤ ∥ x k − x ∗ ∥ 2 + ( c 2 − 2 c δ ) ∥ A x k − A x ∗ ∥ 2 \|x^{k+1} - x^*\|^2 \leq \|x^k - x^*\|^2 + (c^2 - 2c\delta)\|Ax^k - Ax^*\|^2 ∥ x k + 1 − x ∗ ∥ 2 ≤ ∥ x k − x ∗ ∥ 2 + ( c 2 − 2 cδ ) ∥ A x k − A x ∗ ∥ 2 第四步 :由 c > 0 c > 0 c > 0 和 c < 2 δ c < 2\delta c < 2 δ 知 c 2 − 2 c δ < 0 c^2 - 2c\delta < 0 c 2 − 2 cδ < 0 ,从而:
∥ x k + 1 − x ∗ ∥ 2 ≤ ∥ x k − x ∗ ∥ 2 − ( 2 c δ − c 2 ) ∥ A x k − A x ∗ ∥ 2 \|x^{k+1} - x^*\|^2 \leq \|x^k - x^*\|^2 - (2c\delta - c^2)\|Ax^k - Ax^*\|^2 ∥ x k + 1 − x ∗ ∥ 2 ≤ ∥ x k − x ∗ ∥ 2 − ( 2 cδ − c 2 ) ∥ A x k − A x ∗ ∥ 2 其中 2 c δ − c 2 > 0 2c\delta - c^2 > 0 2 cδ − c 2 > 0 ,证明了费杰单调性。结合不动点迭代的一般收敛定理,即可得出 PGA 的收敛性。■ \blacksquare ■
PGA 的收敛性证明与 PPA、投影梯度法的证明一脉相承:核心都是验证迭代映射的稳定非扩张性或费杰单调性,然后套用不动点迭代的一般收敛定理。
5.10 PGA 的应用实例# 5.10.1 投影梯度算法作为 PGA 的特例# 考虑约束优化问题 min x f ( x ) s.t. x ∈ Ω \min_{x} f(x) \;\text{s.t.}\; x \in \Omega min x f ( x ) s.t. x ∈ Ω (Ω \Omega Ω 是闭凸集)。利用指示函数 ι Ω ( x ) \iota_\Omega(x) ι Ω ( x ) 将其转化为无约束复合优化形式 min x f ( x ) + ι Ω ( x ) \min_{x} f(x) + \iota_\Omega(x) min x f ( x ) + ι Ω ( x ) ,其中 f ( x ) f(x) f ( x ) 光滑,ι Ω ( x ) \iota_\Omega(x) ι Ω ( x ) 非光滑但凸,恰好符合 PGA 的适用框架。
将 g = ι Ω g = \iota_\Omega g = ι Ω 代入 PGA 的迭代格式并配方:
x k + 1 = arg min x { ι Ω ( x ) + 1 2 α k ∥ x − ( x k − α k ∇ f ( x k ) ) ∥ 2 } x^{k+1} = \arg\min_{x} \left\{ \iota_\Omega(x) + \frac{1}{2\alpha_k}\left\| x - \left( x^k - \alpha_k \nabla f(x^k) \right) \right\|^2 \right\} x k + 1 = arg x min { ι Ω ( x ) + 2 α k 1 x − ( x k − α k ∇ f ( x k ) ) 2 } 由于指示函数的邻近算子就是投影算子 P Ω P_\Omega P Ω (已在 5.6.1 节证明),因此:
x k + 1 = P Ω ( x k − α k ∇ f ( x k ) ) \boxed{x^{k+1} = P_\Omega\!\left( x^k - \alpha_k \nabla f(x^k) \right)} x k + 1 = P Ω ( x k − α k ∇ f ( x k ) ) 这正是投影梯度算法 (Projected Gradient Method)的迭代格式。投影梯度算法是 PGA 在 g = ι Ω g = \iota_\Omega g = ι Ω 时的特例。
算子形式验证 :通过零包含问题的最优性条件整理后可得 x k + 1 = ( I + α k ∂ ι Ω ) − 1 ( x k − α k ∇ f ( x k ) ) = P Ω ( x k − α k ∇ f ( x k ) ) x^{k+1} = (I + \alpha_k \partial \iota_\Omega)^{-1}(x^k - \alpha_k \nabla f(x^k)) = P_\Omega(x^k - \alpha_k \nabla f(x^k)) x k + 1 = ( I + α k ∂ ι Ω ) − 1 ( x k − α k ∇ f ( x k )) = P Ω ( x k − α k ∇ f ( x k )) ,利用了 J α k ∂ ι Ω = P Ω J_{\alpha_k \partial \iota_\Omega} = P_\Omega J α k ∂ ι Ω = P Ω 的结论。
5.10.2 LASSO 问题的 PGA 求解# 考虑压缩感知(compressed sensing)中的 LASSO 问题:
min x 1 2 ∥ A x − b ∥ 2 2 + λ ∥ x ∥ 1 \min_{x} \; \frac{1}{2}\|Ax - b\|_2^2 + \lambda \|x\|_1 x min 2 1 ∥ A x − b ∥ 2 2 + λ ∥ x ∥ 1 其中 A ∈ R m × n A \in \mathbb{R}^{m \times n} A ∈ R m × n (n ≫ m n \gg m n ≫ m )为观测矩阵,b b b 为观测信号,λ > 0 \lambda > 0 λ > 0 为正则化参数。前一项 f ( x ) = 1 2 ∥ A x − b ∥ 2 2 f(x) = \frac{1}{2}\|Ax - b\|_2^2 f ( x ) = 2 1 ∥ A x − b ∥ 2 2 光滑,后一项 g ( x ) = λ ∥ x ∥ 1 g(x) = \lambda\|x\|_1 g ( x ) = λ ∥ x ∥ 1 非光滑但凸。这正是 PGA 框架中 f + g f + g f + g 的复合结构。
下面逐步写出 PGA 在 LASSO 问题上的具体迭代。
第一步:计算梯度。 f ( x ) = 1 2 ∥ A x − b ∥ 2 2 f(x) = \frac{1}{2}\|Ax-b\|_2^2 f ( x ) = 2 1 ∥ A x − b ∥ 2 2 的梯度为:
∇ f ( x ) = A ⊤ ( A x − b ) \nabla f(x) = A^\top(Ax - b) ∇ f ( x ) = A ⊤ ( A x − b ) ∇ f \nabla f ∇ f 的 Lipschitz 常数为 L = ∥ A ⊤ A ∥ 2 = σ max 2 ( A ) L = \|A^\top A\|_2 = \sigma_{\max}^2(A) L = ∥ A ⊤ A ∥ 2 = σ m a x 2 ( A ) (A A A 的最大奇异值的平方),因此步长取 α ≤ 1 / L \alpha \leq 1/L α ≤ 1/ L 。
第二步:梯度步。 计算中间向量:
v k = x k − α A ⊤ ( A x k − b ) v^k = x^k - \alpha \,A^\top(Ax^k - b) v k = x k − α A ⊤ ( A x k − b ) 这一步只涉及矩阵-向量乘法 A x k Ax^k A x k (O ( m n ) O(mn) O ( mn ) )和 A ⊤ ( ⋅ ) A^\top(\cdot) A ⊤ ( ⋅ ) (O ( m n ) O(mn) O ( mn ) ),计算代价明确。
第三步:邻近步。 求解 λ ∥ ⋅ ∥ 1 \lambda\|\cdot\|_1 λ ∥ ⋅ ∥ 1 的邻近算子:
x k + 1 = p r o x α λ ∥ ⋅ ∥ 1 ( v k ) = S α λ ( v k ) x^{k+1} = \mathrm{prox}_{\alpha\lambda\|\cdot\|_1}(v^k) = \mathcal{S}_{\alpha\lambda}(v^k) x k + 1 = prox α λ ∥ ⋅ ∥ 1 ( v k ) = S α λ ( v k ) 即对 v k v^k v k 的每个分量独立施加阈值 α λ \alpha\lambda α λ 的软阈值运算:
x i k + 1 = s i g n ( v i k ) ⋅ max { ∣ v i k ∣ − α λ , 0 } , i = 1 , … , n x_i^{k+1} = \mathrm{sign}(v_i^k) \cdot \max\{|v_i^k| - \alpha\lambda,\; 0\}, \quad i = 1, \ldots, n x i k + 1 = sign ( v i k ) ⋅ max { ∣ v i k ∣ − α λ , 0 } , i = 1 , … , n 这一步的计算代价为 O ( n ) O(n) O ( n ) ,每个分量独立处理,可完全并行化。
完整的一步迭代 因此为:
x k + 1 = S α λ ( x k − α A ⊤ ( A x k − b ) ) \boxed{x^{k+1} = \mathcal{S}_{\alpha\lambda}\!\left( x^k - \alpha \,A^\top(Ax^k - b) \right)} x k + 1 = S α λ ( x k − α A ⊤ ( A x k − b ) ) 每步迭代的主要计算量在梯度步的矩阵-向量乘法(O ( m n ) O(mn) O ( mn ) ),邻近步的软阈值运算代价可忽略。
为什么不能直接用 PPA :如果将 f ( x ) + g ( x ) f(x) + g(x) f ( x ) + g ( x ) 整体作为 PPA 的目标函数,展开 ∥ A x − b ∥ 2 2 \|Ax - b\|_2^2 ∥ A x − b ∥ 2 2 后会出现 A ⊤ A A^\top A A ⊤ A 项,产生分量之间的耦合项 。例如取 A = ( 1 1 0 1 ) A = \begin{pmatrix} 1 & 1 \\ 0 & 1 \end{pmatrix} A = ( 1 0 1 1 ) ,则 ∥ A x ∥ 2 = ( x 1 + x 2 ) 2 + x 2 2 \|Ax\|^2 = (x_1 + x_2)^2 + x_2^2 ∥ A x ∥ 2 = ( x 1 + x 2 ) 2 + x 2 2 ,展开后出现 x 1 x 2 x_1 x_2 x 1 x 2 的耦合。这种耦合使得无法对各分量独立求解,丧失了 ℓ 1 \ell_1 ℓ 1 范数的可分离性。
而 PGA 通过对 f f f 做线性化近似,将 A ⊤ A A^\top A A ⊤ A 的作用限制在梯度计算 ∇ f ( x k ) = A ⊤ ( A x k − b ) \nabla f(x^k) = A^\top(Ax^k - b) ∇ f ( x k ) = A ⊤ ( A x k − b ) 中——这只是一次矩阵-向量乘法,不会在子问题中引入耦合。子问题中只剩下 λ ∥ x ∥ 1 + 1 2 α ∥ x − v k ∥ 2 \lambda\|x\|_1 + \frac{1}{2\alpha}\|x - v^k\|^2 λ ∥ x ∥ 1 + 2 α 1 ∥ x − v k ∥ 2 ,各分量完全解耦,可以逐分量独立求解。
PPA 不是万能的。当 f f f 中含有矩阵乘积(如 A ⊤ A A^\top A A ⊤ A )时,直接套用 PPA 会导致子问题出现耦合项,丧失可分离性。PGA 通过线性化避免了这一问题,这正是 PGA 在此类问题中不可替代的原因。