第五章:邻近算法

9309 字
47 分钟
第五章:邻近算法
文章摘要

邻近算子与 Moreau 包络、极大单调算子、邻近点算法 PPA 及其松弛、邻近梯度算法 PGA。

5.1 引言:为什么需要邻近算法#

在前几章讨论的梯度下降法及其变体中,一个隐含的前提是目标函数 f(x)f(x) 处处可微——只有这样才能计算梯度、沿负梯度方向更新。然而,许多重要的优化问题包含不可微的成分。典型的例子包括:ℓ1\ell_1 范数 ∥x∥1=∑i∣xi∣\|x\|_1 = \sum_i |x_i|(在零点处不可微,用于稀疏正则化)、凸集上的指示函数 ιΩ(x)\iota_\Omega(x)(在集合边界处不可微,用于编码约束)、以及核范数 ∥X∥∗\|X\|_*(用于低秩矩阵恢复)。对于这类问题,梯度下降法无法直接应用。

次梯度法是一种可行的替代方案,但它的收敛速度较慢(O(1/k)O(1/\sqrt{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) 是 μ\mu-强凸的,当且仅当 f(x)−μ2∥x∥2f(x) - \frac{\mu}{2}\|x\|^2 仍然是凸的。因此,给一个凸函数加上强凸项 μ2∥x∥2\frac{\mu}{2}\|x\|^2,整体就变成了强凸函数——凸加强凸等于强凸。

Tikhonov 正则化的做法正是在原始目标函数上添加一个正则项:

min⁡x  f(x)+ϵk2∥x∥2\min_x \; f(x) + \frac{\epsilon_k}{2}\|x\|^2

其中 ϵk>0\epsilon_k > 0 是正则化参数。添加正则项后整个目标函数变成强凸的,可以利用强凸函数的良好性质进行求解。

然而,为了保证正则化问题的解与原问题的解一致,需要在迭代过程中令正则项趋于零。由于 xx 的最优值不一定为零,不能期望 ∥x∥2→0\|x\|^2 \to 0,因此需要令系数 ϵk→0\epsilon_k \to 0。这里存在一个根本性的矛盾:随着 ϵk→0\epsilon_k \to 0,正则项的作用越来越弱,函数的强凸性也随之减弱,条件数变差,算法收敛速度退化。

Tikhonov 正则化的核心矛盾:为了等价性需要 ϵk→0\epsilon_k \to 0,但 ϵk→0\epsilon_k \to 0 又会使强凸性消失,导致算法性能退化。

5.2.2 邻近点算法的迭代格式#

为了克服 Tikhonov 正则化的缺陷,引入邻近点算法(Proximal Point Algorithm, PPA)。PPA 的迭代格式为:

xk+1=arg⁡min⁡x{f(x)+12α∥x−xk∥2}x^{k+1} = \arg\min_x \left\{ f(x) + \frac{1}{2\alpha}\|x - x^k\|^2 \right\}

其中 α>0\alpha > 0 是步长参数(可以固定,也可以取为 αk\alpha_k)。后面的二次项 12α∥x−xk∥2\frac{1}{2\alpha}\|x - x^k\|^2 称为邻近项(proximal term)。

与 Tikhonov 正则化的关键区别在于:邻近项是关于 x−xkx - x^k 的二次项(以当前迭代点为中心),而不是关于 xx 本身的二次项。这意味着邻近项的中心随迭代更新,不需要令系数趋于零就能保持等价性。邻近项本身是强凸的,所以整个目标函数也是强凸的,并且这种强凸性不会随迭代减弱。

回忆梯度下降法的线性化展开形式:xk+1=arg⁡min⁡x{f(xk)+∇f(xk)⊤(x−xk)+12α∥x−xk∥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\}。PPA 中同样出现了邻近项 12α∥x−xk∥2\frac{1}{2\alpha}\|x - x^k\|^2,但 PPA 保留了完整的 f(x)f(x) 而非其线性近似。

5.2.3 PPA 与隐式梯度下降#

对 PPA 迭代中的目标函数 f(x)+12α∥x−xk∥2f(x) + \frac{1}{2\alpha}\|x - x^k\|^2 关于 xx 求次梯度并令其包含零(最优性条件):

0∈∂f(xk+1)+1α(xk+1−xk)0 \in \partial f(x^{k+1}) + \frac{1}{\alpha}(x^{k+1} - x^k)

整理可得:

xk+1∈xk−α ∂f(xk+1)x^{k+1} \in x^k - \alpha \,\partial f(x^{k+1})

这可以理解为隐式梯度下降(implicit gradient descent)。与显式梯度下降 xk+1=xk−α ∇f(xk)x^{k+1} = x^k - \alpha \,\nabla f(x^k) 对比,两者的关键区别在于:显式方法在当前点 xkx^k 处计算梯度,而隐式方法在下一步的点 xk+1x^{k+1} 处计算次梯度。隐式方法虽然在形式上更复杂(需要求解一个子问题),但具有更好的稳定性和收敛性。

5.3 邻近算子#

5.3.1 定义与良定义性#

给定闭凸函数 h:Rn→R∪{+∞}h: \mathbb{R}^n \to \mathbb{R} \cup \{+\infty\},其邻近算子(proximal operator)定义为:

proxh(x):=arg⁡min⁡u∈dom h{h(u)+12∥u−x∥2}\mathrm{prox}_h(x) := \arg\min_{u \in \mathrm{dom}\,h} \left\{ h(u) + \frac{1}{2}\|u - x\|^2 \right\}

如果 hh 是闭凸(proper closed convex)函数,那么对任意 x∈Rnx \in \mathbb{R}^n,邻近算子的值存在且唯一。这意味着邻近算子是一个单值映射(single-valued mapping),不会出现一对多的情况。

单值性非常重要:回忆在研究单调包含问题(monotone inclusion)时,预解算子(resolvent operator)也是单值映射,从而可以将"∈\in"关系转换为"=="关系。邻近算子同样具备这个性质,因此后续将 PPA 转化为不动点问题时,可以将包含关系转换为等式关系。

5.3.2 直觉理解#

邻近算子的定义虽然以优化问题的形式给出,但其几何含义十分直观。proxh(x)\mathrm{prox}_h(x) 所求解的子问题包含两个相互竞争的目标:

  • h(u)h(u) 要求 uu 使函数值尽可能小——这是”下降”的驱动力;
  • 12∥u−x∥2\frac{1}{2}\|u - x\|^2 要求 uu 不能离 xx 太远——这是”保守”的约束。

邻近算子的输出 proxh(x)\mathrm{prox}_h(x) 正是这两个力量达到平衡的点。当 hh 本身是光滑函数时,对 h(u)+12∥u−x∥2h(u) + \frac{1}{2}\|u-x\|^2 求导令其为零:∇h(u)+(u−x)=0\nabla h(u) + (u - x) = 0,即 u=x−∇h(u)u = x - \nabla h(u)。若 ∇h\nabla h 变化缓慢(局部近似为常数),则 u≈x−∇h(x)u \approx x - \nabla h(x),这正是梯度下降的一步。因此,邻近算子是梯度下降从光滑函数到非光滑函数的自然推广。

5.3.3 邻近算子与次梯度的关系#

设 hh 是闭凸函数,则以下等价关系成立:

u=proxh(x)⟺x−u∈∂h(u)u = \mathrm{prox}_h(x) \quad \Longleftrightarrow \quad x - u \in \partial h(u)

直观理解:uu 是邻近算子在 xx 处的值,意味着在 uu 处对目标 h(u)+12∥u−x∥2h(u) + \frac{1}{2}\|u - x\|^2 的最优性条件成立。对 uu 求次梯度并令其包含零:0∈∂h(u)+(u−x)0 \in \partial h(u) + (u - x),整理即得 x−u∈∂h(u)x - u \in \partial h(u)。

5.3.4 预解算子形式#

将 PPA 的隐式梯度下降写成算子形式。将含 xk+1x^{k+1} 的项移至左边:

(I+α ∂f) xk+1=xk(I + \alpha\,\partial f)\,x^{k+1} = x^k

两边取逆:

xk+1=(I+α ∂f)−1 xkx^{k+1} = (I + \alpha\,\partial f)^{-1}\,x^k

其中 (I+α ∂f)−1(I + \alpha\,\partial f)^{-1} 即为预解算子(resolvent operator),记为 Jα∂fJ_{\alpha\partial f}。PPA 的邻近算子形式为:

xk+1=proxαf(xk)x^{k+1} = \mathrm{prox}_{\alpha f}(x^k)

即邻近算子与预解算子是同一迭代的两种等价表示。

5.3.5 常见函数的邻近算子#

邻近算子的实用性在很大程度上取决于它是否具有解析解。幸运的是,许多在稀疏优化和约束优化中常见的函数都具有闭式的邻近算子。下表给出主要的实例(参数 α>0\alpha > 0):

函数 h(x)h(x)proxαh(x)\mathrm{prox}_{\alpha h}(x)名称
∥x∥1=∑i∥xi∥\|x\|_1 = \sum_i \|x_i\|Sα(x)\mathcal{S}_\alpha(x),逐分量 $[\mathcal{S}_\alpha(x)]_i = \mathrm{sign}(x_i)\max{x_i
ιΩ(x)\iota_\Omega(x)(凸集 Ω\Omega 的指示函数)PΩ(x)=arg⁡min⁡u∈Ω∥u−x∥P_\Omega(x) = \arg\min_{u \in \Omega}\|u - x\|投影算子
∥x∥2\|x\|_2(ℓ2\ell_2 范数,非平方)(1−αmax⁡{∥x∥2, α})x\left(1 - \frac{\alpha}{\max\{\|x\|_2,\,\alpha\}}\right) x块软阈值
12∥x∥22\frac{1}{2}\|x\|_2^2(ℓ2\ell_2 范数平方)11+αx\frac{1}{1+\alpha} x缩放
δ{0}(x)\delta_{\{0\}}(x)(零点指示函数)00置零

表中各条目的推导将在 5.6 节给出前两个的完整证明,其余可用类似方法验证。

软阈值算子(soft-thresholding operator)Sα\mathcal{S}_\alpha 是稀疏优化的核心构件:当 ∣xi∣>α|x_i| > \alpha 时,xix_i 向零的方向”收缩”α\alpha;当 ∣xi∣≤α|x_i| \leq \alpha 时,xix_i 直接被压缩为零。这种”大值收缩、小值归零”的行为正是 ℓ1\ell_1 正则化产生稀疏解的机制。

投影算子 PΩP_\Omega 是约束优化的基本运算:它将点映射到约束集上距其最近的点。指示函数的邻近算子之所以等于投影,是因为指示函数在集合外取值 +∞+\infty,最小化自动要求可行。

块软阈值处理 ℓ2\ell_2 范数(非平方),其行为类似软阈值但作用于整个向量:当 ∥x∥2≤α\|x\|_2 \leq \alpha 时整个向量被置零,否则沿径向收缩。这在 group LASSO 等结构化稀疏问题中出现。

5.4 Moreau 包络#

邻近算子将不可微函数的最小化问题转化为一系列可解的子问题。一个自然的追问是:这些子问题的最优值——即邻近算子定义中那个 min⁡\min 的取值——本身是否具有某种良好的结构?答案是肯定的,而且这个取值函数有一个非常重要的性质:即使原函数不可微,它也是光滑的。这就是 Moreau 包络。

理解 Moreau 包络对本章后续内容有两个作用:其一,它揭示了 PPA 的另一种解读——PPA 等价于在一个光滑函数上做梯度下降,这解释了 PPA 为何能同时处理不可微性并保持良好收敛性;其二,Moreau 包络的梯度公式将邻近算子与光滑优化联系起来,为收敛速度分析提供了工具。

5.4.1 定义与基本性质#

给定闭凸函数 ff 和参数 α>0\alpha > 0,ff 的 Moreau 包络(Moreau envelope,也称 Moreau-Yosida 正则化)定义为:

Mαf(x):=min⁡u{f(u)+12α∥u−x∥2}M_{\alpha f}(x) := \min_u \left\{ f(u) + \frac{1}{2\alpha}\|u - x\|^2 \right\}

Moreau 包络与邻近算子的关系是直接的:Mαf(x)M_{\alpha f}(x) 是邻近算子定义中那个最小化问题的最优值,而 proxαf(x)\mathrm{prox}_{\alpha f}(x) 是取到最优值的点。

Moreau 包络的核心意义在于:即使 ff 本身不可微,MαfM_{\alpha f} 也是光滑的。具体地,MαfM_{\alpha f} 在全空间可微,且其梯度为:

∇Mαf(x)=1α(x−proxαf(x))\nabla M_{\alpha f}(x) = \frac{1}{\alpha}\left(x - \mathrm{prox}_{\alpha f}(x)\right)

这个结论的证明可参见教材定理 8.9。其直觉是:Mαf(x)M_{\alpha f}(x) 作为以 uu 为变量的优化问题的值函数(value function),其关于 xx 的变化率由最优解处的边际效应决定。由于邻近项 12α∥u−x∥2\frac{1}{2\alpha}\|u-x\|^2 关于 xx 的梯度为 −1α(u−x)-\frac{1}{\alpha}(u-x),而最优解 u=proxαf(x)u = \mathrm{prox}_{\alpha f}(x),代入即得上式。

此外,∇Mαf\nabla M_{\alpha f} 是 Lipschitz 连续的(Lipschitz 常数为 1α\frac{1}{\alpha}),因此 MαfM_{\alpha f} 不仅可微,还具有良好的数值性质。

5.4.2 Moreau 包络的光滑近似性质#

Moreau 包络 MαfM_{\alpha f} 与原函数 ff 具有相同的最小值点:arg⁡min⁡xf(x)=arg⁡min⁡xMαf(x)\arg\min_x f(x) = \arg\min_x M_{\alpha f}(x)。这意味着最小化 ff 可以等价地转化为最小化其光滑近似 MαfM_{\alpha f}。

以指示函数为例:f=ιCf = \iota_C 时,Mαf(x)=12αdist2(x,C)M_{\alpha f}(x) = \frac{1}{2\alpha}\mathrm{dist}^2(x, C),即到集合 CC 的距离平方(除以 2α2\alpha)。原函数 ιC\iota_C 在边界处跳跃式地从 0 变为 +∞+\infty,而 MαfM_{\alpha f} 则用光滑的二次函数过渡。

以 ℓ1\ell_1 范数为例:f(x)=∥x∥1f(x) = \|x\|_1 时,Mαf(x)M_{\alpha f}(x) 是分量可分的 Huber 损失函数。每个分量上,∣xi∣|x_i| 在零点处的”尖角”被 MαfM_{\alpha f} 替换为二次函数 xi22α\frac{x_i^2}{2\alpha}(当 ∣xi∣≤α|x_i| \leq \alpha),而在远离零的区域仍近似为 ∣xi∣−α2|x_i| - \frac{\alpha}{2}。参数 α\alpha 控制光滑化的程度:α\alpha 越大,光滑化范围越宽,但对原函数的逼近越粗糙。

5.4.3 PPA 作为 Moreau 包络上的梯度下降#

Moreau 包络提供了理解 PPA 的另一个视角。对 Mαf(x)M_{\alpha f}(x) 使用固定步长 α\alpha 的梯度下降:

xk+1=xk−α ∇Mαf(xk)=xk−(xk−proxαf(xk))=proxαf(xk)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)

这正是 PPA 的迭代格式。因此,PPA 可以理解为:先将不可微的 ff 替换为其光滑近似 MαfM_{\alpha f},再对光滑函数做梯度下降。这一解释揭示了 PPA 为何能同时处理不可微性和保持良好收敛性——它实际上是在一个光滑函数上做梯度下降。

5.5 极大单调算子#

5.5.1 为什么需要极大单调算子#

在 5.4.3 节中,我们从 Moreau 包络的角度直观理解了 PPA 的工作原理。但直觉不能替代严格证明。要证明 PPA 的收敛性,核心问题是:迭代映射 T=proxαf=(I+α ∂f)−1T = \mathrm{prox}_{\alpha f} = (I + \alpha\,\partial f)^{-1} 具有什么性质?

当 ff 可微时,∂f={∇f}\partial f = \{\nabla f\} 是单值映射,∇f\nabla f 的单调性(凸性的直接推论)足以证明 TT 是稳定非扩张的(5.7.1 节将给出完整证明)。然而,当 ff 不可微时,∂f\partial f 是集值映射——对同一个 xx,∂f(x)\partial f(x) 可能是一个集合而非单个向量。这时”∇f\nabla f 的单调性”不再适用,我们需要一个能处理集值映射的单调性理论。

极大单调算子正是为此而设计的概念。它把单调性从单值函数推广到集值映射,并且保证了一个关键结论:闭凸函数的次微分 ∂f\partial f 是极大单调算子,从而其预解算子 (I+α ∂f)−1(I + \alpha\,\partial f)^{-1} 是稳定非扩张的。有了这个结论,PPA 在不可微情形下的收敛性就可以用与可微情形相同的框架来证明。

5.5.2 从单调性到极大单调性#

回忆第二章中的单调算子定义。对于单值映射 A:Rn→RnA: \mathbb{R}^n \to \mathbb{R}^n,单调性是指:

⟨A(x)−A(y),  x−y⟩≥0,∀ x,y∈Rn\langle A(x) - A(y),\; x - y \rangle \geq 0, \quad \forall\, x, y \in \mathbb{R}^n

当 A=∇fA = \nabla f(ff 是凸可微函数)时,这个性质由凸性直接保证。

对于集值映射 Φ:Rn⇉Rn\Phi: \mathbb{R}^n \rightrightarrows \mathbb{R}^n(一个 xx 可能对应多个输出值),单调性的定义需要稍作调整:对任意 x,yx, y 以及任意 u∈Φ(x)u \in \Phi(x)、v∈Φ(y)v \in \Phi(y),都有

⟨v−u,  y−x⟩≥0\langle v - u,\; y - x \rangle \geq 0

含义是:无论从 Φ(x)\Phi(x) 和 Φ(y)\Phi(y) 中各取哪个元素,输出的增量方向与输入的增量方向之间的夹角都不超过 90 度。当 Φ\Phi 是单值映射时,这就退化为上面的标准定义。

然而,单调性本身还不够。考虑一个一维例子:定义映射 Φ(x)={1}\Phi(x) = \{1\}(当 x>0x > 0),Φ(x)={−1}\Phi(x) = \{-1\}(当 x<0x < 0),在 x=0x = 0 处 Φ(0)=∅\Phi(0) = \emptyset(未定义)。可以验证 Φ\Phi 在其定义域上满足单调性。但这个映射在 x=0x = 0 处有一个”缺口”——我们完全可以补充 Φ(0)=[−1,1]\Phi(0) = [-1, 1](零处的所有值),得到一个”更完整”的单调映射 Ψ\Psi,使得 Φ\Phi 的图(所有输入-输出对的集合)被 Ψ\Psi 的图严格包含。

极大单调算子排除了这种”有缺口”的情况。设 Φ:Rn⇉Rn\Phi: \mathbb{R}^n \rightrightarrows \mathbb{R}^n 是集值映射,Φ\Phi 称为极大单调算子,如果它满足两个条件:(1) Φ\Phi 是单调的;(2) 不存在单调映射 Ψ\Psi 使得 Φ\Phi 的图被 Ψ\Psi 的图严格包含。第二个条件的含义是:Φ\Phi 在所有单调映射中已经是”最完整的”,无法再向其中添加任何输入-输出对而保持单调性。

在上面的例子中,Φ\Phi(在零处未定义的版本)不是极大单调的,因为可以扩展;但补全后的 Ψ\Psi(Ψ(0)=[−1,1]\Psi(0) = [-1, 1])是极大单调的——恰好就是 ∣x∣|x| 的次微分 ∂∣⋅∣\partial|\cdot|。

5.5.3 闭凸函数的次微分是极大单调算子#

极大单调算子理论中最重要的结论之一是:

设 f:Rn→R∪{+∞}f: \mathbb{R}^n \to \mathbb{R} \cup \{+\infty\} 是闭凸函数,则 ∂f\partial f 是极大单调算子。

这个结论(Rockafellar 定理)的证明需要较多凸分析的技术工具,此处不展开。它的意义在于:闭凸函数的次微分不仅是单调的(这由凸性直接得到),而且是”最完整的单调映射”——在保持单调性的前提下,∂f\partial f 已经包含了所有可能的次梯度信息,没有遗漏。

5.5.4 预解算子的稳定非扩张性#

极大单调算子理论的核心应用在于以下结论。设 Φ\Phi 是极大单调算子,则对任意 c>0c > 0:

  1. 预解算子 JcΦ=(I+c Φ)−1J_{c\Phi} = (I + c\,\Phi)^{-1} 的定义域和值域均为 Rn\mathbb{R}^n,且 JcΦJ_{c\Phi} 是单值映射
  2. JcΦJ_{c\Phi} 是稳定非扩张的(firmly nonexpansive)

第一条保证了预解算子在整个空间上都有定义且输出唯一——这是将不动点迭代从”包含”关系(x∈Txx \in Tx)转化为”等式”关系(x=Txx = Tx)的前提。第二条是收敛性的关键:稳定非扩张映射的不动点迭代是收敛的(第二章定理)。

将这两条结论与 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 收敛}

极大单调算子理论对本章的价值集中在上述逻辑链中。读者不必深入极大单调算子的一般理论细节,只需记住两点:(1) 闭凸函数的次微分是极大单调算子;(2) 极大单调算子的预解算子是稳定非扩张的。这两点足以支撑 PPA 及后续 PGA 的收敛性分析。

5.6 PPA 的两个重要例子#

在给出 PPA 的收敛性证明之前,先通过两个具体例子展示邻近算子的计算方法,它们同时验证了 5.3.5 节邻近算子表中的前两条。

5.6.1 指示函数上的 PPA 等价于投影#

设 f=ιΩf = \iota_\Omega 为凸集 Ω\Omega 上的指示函数:

ιΩ(x)={0,x∈Ω+∞,x∉Ω\iota_\Omega(x) = \begin{cases} 0, & x \in \Omega \\ +\infty, & x \notin \Omega \end{cases}

指示函数是凸的(当 Ω\Omega 为凸集时),但不可微(其次微分是法锥)。

对指示函数应用 PPA:

xk+1=arg⁡min⁡x{ιΩ(x)+12α∥x−xk∥2}x^{k+1} = \arg\min_x \left\{ \iota_\Omega(x) + \frac{1}{2\alpha}\|x - x^k\|^2 \right\}

由于 x∉Ωx \notin \Omega 时 ιΩ(x)=+∞\iota_\Omega(x) = +\infty,最小化自动要求 x∈Ωx \in \Omega。此时 ιΩ(x)=0\iota_\Omega(x) = 0,问题简化为:

xk+1=arg⁡min⁡x∈Ω  12α∥x−xk∥2x^{k+1} = \arg\min_{x \in \Omega} \; \frac{1}{2\alpha}\|x - x^k\|^2

系数 12α\frac{1}{2\alpha} 不影响最优解,因此这等价于:

xk+1=arg⁡min⁡x∈Ω  ∥x−xk∥2=PΩ(xk)x^{k+1} = \arg\min_{x \in \Omega} \; \|x - x^k\|^2 = P_\Omega(x^k)

即在凸集 Ω\Omega 上对 xkx^k 做投影(projection)。因此,投影梯度法可以视为 PPA 作用在指示函数上的特例。

算子形式验证:从零包含问题出发,PPA 的最优性条件为:

0∈∂ ιΩ(xk+1)+1α(xk+1−xk)0 \in \partial\,\iota_\Omega(x^{k+1}) + \frac{1}{\alpha}(x^{k+1} - x^k)

整理为算子形式:

xk+1=(I+α ∂ ιΩ)−1 xkx^{k+1} = (I + \alpha\,\partial\,\iota_\Omega)^{-1}\,x^k

而此前已证明 (I+α ∂ ιΩ)−1=PΩ(I + \alpha\,\partial\,\iota_\Omega)^{-1} = P_\Omega,即预解算子等于投影算子,与上面的结论一致。

5.6.2 ℓ1\ell_1 范数上的 PPA 得到收缩算子#

设 f(x)=∥x∥1=∑i=1n∣xi∣f(x) = \|x\|_1 = \sum_{i=1}^n |x_i|,x∈Rnx \in \mathbb{R}^n。对其应用 PPA:

xk+1=arg⁡min⁡x{∥x∥1+12α∥x−xk∥2}x^{k+1} = \arg\min_x \left\{ \|x\|_1 + \frac{1}{2\alpha}\|x - x^k\|^2 \right\}

展开为分量形式:

=arg⁡min⁡x∑i=1n{∣xi∣+12α(xi−xik)2}= \arg\min_x \sum_{i=1}^n \left\{ |x_i| + \frac{1}{2\alpha}(x_i - x_i^k)^2 \right\}

由于各分量之间不存在耦合项(coupling term)——即不存在 xixjx_ix_j(i≠ji \neq j)的交叉项——可以对每个分量独立求解:

xik+1=arg⁡min⁡xi{∣xi∣+12α(xi−xik)2}x_i^{k+1} = \arg\min_{x_i} \left\{ |x_i| + \frac{1}{2\alpha}(x_i - x_i^k)^2 \right\}

情况一:xik+1>0x_i^{k+1} > 0。此时 ∣xi∣=xi|x_i| = x_i,对 xix_i 求导令其为零:

1+1α(xik+1−xik)=0  ⟹  xik+1=xik−α1 + \frac{1}{\alpha}(x_i^{k+1} - x_i^k) = 0 \implies x_i^{k+1} = x_i^k - \alpha

此情况要求 xik+1>0x_i^{k+1} > 0,即 xik>αx_i^k > \alpha。

情况二:xik+1<0x_i^{k+1} < 0。此时 ∣xi∣=−xi|x_i| = -x_i,对 xix_i 求导令其为零:

−1+1α(xik+1−xik)=0  ⟹  xik+1=xik+α-1 + \frac{1}{\alpha}(x_i^{k+1} - x_i^k) = 0 \implies x_i^{k+1} = x_i^k + \alpha

此情况要求 xik+1<0x_i^{k+1} < 0,即 xik<−αx_i^k < -\alpha。

情况三:xik+1=0x_i^{k+1} = 0。此时 ∣xi∣|x_i| 在零处不可微,需要使用次微分。∣xi∣|x_i| 在零处的次微分为 ∂∣0∣=[−1,1]\partial|0| = [-1, 1]。最优性条件变为:

0∈[−1,1]+1α(0−xik)0 \in [-1, 1] + \frac{1}{\alpha}(0 - x_i^k)

即 xikα∈[−1,1]\frac{x_i^k}{\alpha} \in [-1, 1],等价于 xik∈[−α,α]x_i^k \in [-\alpha, \alpha]。

综合三种情况,得到软阈值公式(soft-thresholding):

xik+1=Sα(xik):={xik−α,xik>α0,∣xik∣≤αxik+α,xik<−α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}

这就是收缩算子(shrinkage operator),也写作:

Sα(xik)=sign(xik)⋅max⁡{∣xik∣−α,  0}\mathcal{S}_\alpha(x_i^k) = \mathrm{sign}(x_i^k) \cdot \max\{|x_i^k| - \alpha,\; 0\}

5.7 PPA 的收敛性分析#

本节用三种不同的方法证明 PPA 的收敛性。给出三种证明并非为了重复,而是因为它们各自适用于不同的条件并揭示了不同的数学结构。方法一最直接,在可微情形下从预解算子的定义出发验证稳定非扩张性;方法二处理不可微情形,将 5.5 节建立的极大单调算子理论付诸应用,展示了从凸分析到算子理论再到收敛性的完整逻辑链条;方法三基于最优性条件和费杰单调性(Fejer monotonicity),不依赖算子理论的抽象框架,是最”自给自足”的证明路径——它只需要凸性和基本的不等式技巧,因此适用范围也最广,后续松弛 PPA(5.8 节)和 PGA(5.9 节)的收敛性证明都沿用方法三的思路。

5.7.1 方法一:算子形式证明(可微情形)#

条件:ff 凸且可微,步长 α>0\alpha > 0 固定,∇f\nabla f 是单调算子。

目标:证明 T=(I+α ∇f)−1T = (I + \alpha\,\nabla f)^{-1} 是稳定非扩张的(firmly nonexpansive)。

证明:令 u=T(x)u = T(x),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)

根据稳定非扩张的定义,需证明:

∥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

即证 ∥u−v∥2≤⟨x−y,  u−v⟩\|u - v\|^2 \leq \langle x - y,\; u - v \rangle。将 x,yx, 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
=∥u−v∥2+α ⟨∇f(u)−∇f(v),  u−v⟩= \|u - v\|^2 + \alpha\,\langle \nabla f(u) - \nabla f(v),\; u - v \rangle

由于 ∇f\nabla f 是单调算子,有 ⟨∇f(u)−∇f(v),  u−v⟩≥0\langle \nabla f(u) - \nabla f(v),\; u - v \rangle \geq 0。又 α>0\alpha > 0,故:

⟨x−y,  u−v⟩≥∥u−v∥2\langle x - y,\; u - v \rangle \geq \|u - v\|^2

这正是稳定非扩张的定义。根据不动点迭代的收敛定理,稳定非扩张映射的不动点迭代是收敛的,从而 PPA 收敛。■\blacksquare

5.7.2 方法二:算子形式证明(不可微情形)#

当 ff 凸但不可微时,方法一的证明思路不再直接适用,因为 ∂f\partial f 是集值映射,不能简单地写成 x=u+α ∇f(u)x = u + \alpha\,\nabla f(u) 这样的等式。此时需要调用 5.5 节建立的极大单调算子理论。

证明的逻辑链条如下:ff 是闭凸函数 ⇒\Rightarrow ∂f\partial f 是极大单调算子(5.5.3 节)⇒\Rightarrow (I+α ∂f)−1(I + \alpha\,\partial f)^{-1} 是稳定非扩张的(5.5.4 节性质 2)⇒\Rightarrow 不动点迭代收敛(第二章不动点定理)。

这条逻辑链中,每一步都已在前面的章节中建立,此处只需串联即可。方法二的价值在于它表明:可微情形的证明(方法一)可以通过极大单调算子的框架自然地推广到不可微情形,而无需引入任何本质上不同的新技巧。

5.7.3 方法三:利用最优性条件和费杰单调性#

条件:ff 凸,步长 α>0\alpha > 0 固定。设 x∗x^* 是最优解。

PPA 迭代:xk+1=xk−α ∇f(xk+1)x^{k+1} = x^k - \alpha\,\nabla f(x^{k+1})(以可微情形为例)。

步骤 1:分析 ∥xk+1−x∗∥2\|x^{k+1} - x^*\|^2。

∥xk+1−x∗∥2=∥xk+1−xk+xk−x∗∥2\|x^{k+1} - x^*\|^2 = \|x^{k+1} - x^k + x^k - x^*\|^2

在中间加减 xkx^k,展开:

=∥xk+1−xk∥2+∥xk−x∗∥2+2⟨xk+1−xk,  xk−x∗⟩= \|x^{k+1} - x^k\|^2 + \|x^k - x^*\|^2 + 2\langle x^{k+1} - x^k,\; x^k - x^*\rangle

进一步在内积中加减 xk+1x^{k+1}:

=−∥xk+1−xk∥2+∥xk−x∗∥2+2⟨xk+1−xk,  xk+1−x∗⟩= -\|x^{k+1} - x^k\|^2 + \|x^k - x^*\|^2 + 2\langle x^{k+1} - x^k,\; x^{k+1} - x^*\rangle

步骤 2:代入 PPA 迭代关系 xk+1−xk=−α ∇f(xk+1)x^{k+1} - x^k = -\alpha\,\nabla f(x^{k+1}):

=∥xk−x∗∥2−∥xk+1−xk∥2−2α ⟨∇f(xk+1),  xk+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

步骤 3:利用最优性条件。x∗x^* 是最优解,故 ∇f(x∗)=0\nabla f(x^*) = 0。因此:

⟨∇f(xk+1),  xk+1−x∗⟩=⟨∇f(xk+1)−∇f(x∗),  xk+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

由 ff 凸可知 ∇f\nabla f 是单调算子,故上式 ≥0\geq 0。加上 −2α-2\alpha(α>0\alpha > 0),得:

−2α ⟨∇f(xk+1),  xk+1−x∗⟩≤0-2\alpha\,\langle \nabla f(x^{k+1}),\; x^{k+1} - x^*\rangle \leq 0

步骤 4:综合以上结果:

∥xk+1−x∗∥2≤∥xk−x∗∥2−∥xk+1−xk∥2\|x^{k+1} - x^*\|^2 \leq \|x^k - x^*\|^2 - \|x^{k+1} - x^k\|^2

这是经典的费杰单调性(Fejer monotonicity)不等式。它表明:

  • ∥xk−x∗∥2\|x^k - x^*\|^2 是单调递减序列(有下界 0),故收敛
  • ∑k=0∞∥xk+1−xk∥2<∞\sum_{k=0}^{\infty}\|x^{k+1} - x^k\|^2 < \infty,故 ∥xk+1−xk∥→0\|x^{k+1} - x^k\| \to 0

后续步骤与不动点迭代收敛性证明完全相同,从而得出 PPA 收敛。■\blacksquare

5.8 松弛 PPA#

5.8.1 动机:标准 PPA 的局限性#

标准 PPA 的迭代 xk+1=proxαf(xk)x^{k+1} = \mathrm{prox}_{\alpha f}(x^k) 在理论上具有良好的收敛性,但在实践中存在两个局限。

其一,每步迭代要求精确求解邻近子问题 arg⁡min⁡x{f(x)+12α∥x−xk∥2}\arg\min_x \{f(x) + \frac{1}{2\alpha}\|x-x^k\|^2\}。对于复杂的 ff,精确求解代价可能很高,而只需要近似求解就足以保证收敛。松弛参数提供了一种系统化的近似机制:当 ρk<1\rho_k < 1 时,新的迭代点只向邻近映射的方向走一部分,相当于用一个”保守版”的邻近步替代精确邻近步。

其二,标准 PPA 的每步移动量完全由邻近映射决定,没有利用迭代之间的惯性信息。当 ρk>1\rho_k > 1 时,算法在邻近映射的基础上进一步外推,类似于 Nesterov 加速中的动量项,在某些问题上可以加速收敛。

松弛 PPA 通过引入一个松弛参数 ρk∈(0,2)\rho_k \in (0, 2),将标准 PPA 推广为更灵活的迭代格式。当 ρk=1\rho_k = 1 时退化为标准 PPA,ρk<1\rho_k < 1 对应保守的松弛步,ρk>1\rho_k > 1 对应激进的惯性步。下面给出具体的迭代格式和收敛性分析。

5.8.2 迭代格式#

松弛 PPA 的迭代由两步组成:

x^k+1=arg⁡min⁡x{f(x)+12α∥x−xk∥2}\hat{x}^{k+1} = \arg\min_x \left\{ f(x) + \frac{1}{2\alpha} \|x - x^k\|^2 \right\}
xk+1=(1−ρk)xk+ρkx^k+1x^{k+1} = (1 - \rho_k) x^k + \rho_k \hat{x}^{k+1}

其中 α>0\alpha > 0 是邻近参数,ρk∈(0,2)\rho_k \in (0, 2) 是松弛参数。第一步与标准 PPA 完全相同,计算邻近映射得到中间点 x^k+1\hat{x}^{k+1};第二步则对 xkx^k 和 x^k+1\hat{x}^{k+1} 做加权组合,得到新的迭代点 xk+1x^{k+1}。当 ρk=1\rho_k = 1 时,松弛 PPA 退化为标准 PPA,即 xk+1=x^k+1x^{k+1} = \hat{x}^{k+1}。

5.8.3 松弛参数的几何含义#

松弛参数 ρk\rho_k 的取值范围 (0,2)(0, 2) 可以进一步细分为两个区间,它们具有不同的几何含义。

松弛步(ρk∈(0,1)\rho_k \in (0, 1)):此时 xk+1=(1−ρk)xk+ρkx^k+1x^{k+1} = (1 - \rho_k) x^k + \rho_k \hat{x}^{k+1} 是 xkx^k 和 x^k+1\hat{x}^{k+1} 的凸组合。新的迭代点 xk+1x^{k+1} 落在 xkx^k 与 x^k+1\hat{x}^{k+1} 之间的线段上,相当于只走了”一部分”邻近步(under-relaxation)。

惯性步(ρk∈(1,2)\rho_k \in (1, 2)):将迭代式改写为 xk+1=x^k+1+(ρk−1)(x^k+1−xk)x^{k+1} = \hat{x}^{k+1} + (\rho_k - 1)(\hat{x}^{k+1} - x^k),此时 xk+1x^{k+1} 沿 x^k+1−xk\hat{x}^{k+1} - x^k 方向”冲出”了 x^k+1\hat{x}^{k+1},超越了标准 PPA 的中间点。这种行为称为惯性步(over-relaxation),算法沿着当前移动方向进行了外推。

5.8.4 收敛性分析#

下面证明在 ρk∈(0,2)\rho_k \in (0, 2) 的条件下,序列 {∥xk−x∗∥2}\{\|x^k - x^*\|^2\} 具有非递增单调性。

步骤 1:展开迭代点与最优解的距离。将 xk+1x^{k+1} 的表达式代入,展开 ∥xk+1−x∗∥2\|x^{k+1} - x^*\|^2:

∥xk+1−x∗∥2=∥(1−ρk)(xk−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
=∥xk−x∗∥2+ρk2∥x^k+1−xk∥2+2ρk⟨xk−x∗,x^k+1−xk⟩= \|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

步骤 2:处理交叉项。对 ⟨xk−x∗,x^k+1−xk⟩\langle x^k - x^*, \hat{x}^{k+1} - x^k \rangle 插入 x^k+1\hat{x}^{k+1}:

⟨xk−x∗,x^k+1−xk⟩=−∥x^k+1−xk∥2+⟨x^k+1−x∗,x^k+1−xk⟩\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

代入后得到:

∥xk+1−x∗∥2=∥xk−x∗∥2+(ρk2−2ρk)∥x^k+1−xk∥2+2ρk⟨x^k+1−x∗,x^k+1−xk⟩\|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

步骤 3:利用最优性条件消去内积项。x^k+1\hat{x}^{k+1} 是邻近映射的解,满足 x^k+1−xk=−α ∂f(x^k+1)\hat{x}^{k+1} - x^k = -\alpha \,\partial f(\hat{x}^{k+1})。同时 x∗x^* 是全局最优解,0∈∂f(x∗)0 \in \partial f(x^*)。代入内积项:

⟨x^k+1−x∗,x^k+1−xk⟩=−α⟨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

步骤 4:利用单调性。当 ff 是凸函数时,∂f\partial 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。因此内积项前带负号 −α-\alpha,使得 2ρk⟨x^k+1−x∗,x^k+1−xk⟩≤02\rho_k \langle \hat{x}^{k+1} - x^*, \hat{x}^{k+1} - x^k \rangle \leq 0。

步骤 5:得出收敛条件。将上述不等式代回:

∥xk+1−x∗∥2≤∥xk−x∗∥2+ρk(ρk−2)∥x^k+1−xk∥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−xk∥2≥0\|\hat{x}^{k+1} - x^k\|^2 \geq 0 且 ρk>0\rho_k > 0,要使右端第二项非正需要 ρk−2≤0\rho_k - 2 \leq 0,即 ρk≤2\rho_k \leq 2。因此当 ρk∈(0,2)\rho_k \in (0, 2) 时:

∥xk+1−x∗∥2≤∥xk−x∗∥2\|x^{k+1} - x^*\|^2 \leq \|x^k - x^*\|^2

这就证明了序列 {∥xk−x∗∥2}\{\|x^k - x^*\|^2\} 关于 kk 非递增单调,从而保证松弛 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)

其中 f(x)f(x) 是光滑函数(可微,且梯度 Lipschitz 连续),g(x)g(x) 是非光滑函数(可能不可微),但通常是凸的。这类问题在机器学习和信号处理中极为常见——f(x)f(x) 通常是数据拟合项(如最小二乘损失),g(x)g(x) 通常是正则化项(如 ℓ1\ell_1 范数)。

核心思想是:对光滑部分 ff 做梯度下降,对非光滑部分 gg 做邻近点算法,将两者结合形成一步迭代。这种”分而治之”的思路也称为前向-后向分裂法(Forward-Backward Splitting Method, FBSM)。

5.9.2 迭代格式推导#

PGA 的迭代格式为:

xk+1=arg⁡min⁡x{g(x)+⟨∇f(xk), x−xk⟩+12αk∥x−xk∥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\}

构造逻辑如下:对光滑部分 ff 在当前点 xkx^k 处做一阶 Taylor 展开(线性化近似),对非光滑部分 gg 保持不动,同时加入邻近项 12αk∥x−xk∥2\frac{1}{2\alpha_k}\|x - x^k\|^2 控制迭代步长。

对线性项和二次项进行配方:

xk+1=arg⁡min⁡x{g(x)+12αk∥x−(xk−αk∇f(xk))∥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\}

这正是 gg 关于点 xk−αk∇f(xk)x^k - \alpha_k \nabla f(x^k) 的邻近算子。记为:

xk+1=proxαkg ⁣(xk−αk∇f(xk))\boxed{x^{k+1} = \mathrm{prox}_{\alpha_k g}\!\left( x^k - \alpha_k \nabla f(x^k) \right)}

直觉非常清晰:先对光滑部分 ff 做一步梯度下降得到中间点 xk−αk∇f(xk)x^k - \alpha_k \nabla f(x^k),再对非光滑部分 gg 施加邻近算子进行修正。

5.9.3 算法伪代码#

将 PGA 的完整算法整理如下。


算法 5.1:邻近梯度算法(PGA / ISTA)

输入:初始点 x0∈Rnx^0 \in \mathbb{R}^n,步长 α>0\alpha > 0(满足 α<1/L\alpha < 1/L,其中 LL 是 ∇f\nabla f 的 Lipschitz 常数),最大迭代次数 KK,容差 ε>0\varepsilon > 0

for k=0,1,2,…,K−1k = 0, 1, 2, \ldots, K-1 do

\quad 1. 梯度步:vk=xk−α ∇f(xk)v^k = x^k - \alpha \,\nabla f(x^k)

\quad 2. 邻近步:xk+1=proxαg(vk)x^{k+1} = \mathrm{prox}_{\alpha g}(v^k)

\quad 3. 停机检查:若 ∥xk+1−xk∥<ε\|x^{k+1} - x^k\| < \varepsilon,则停止

end for

输出:xk+1x^{k+1}


当 g(x)=λ∥x∥1g(x) = \lambda\|x\|_1 时,邻近步就是软阈值运算,此时 PGA 也称为迭代收缩阈值算法(Iterative Shrinkage-Thresholding Algorithm, ISTA)。ISTA 和 PGA 实质上是同一个算法在不同文献中的不同称呼——前者在信号处理领域广泛使用,后者在优化理论文献中更常见。其加速版本 FISTA(Fast ISTA)引入 Nesterov 动量项,将收敛速度从 O(1/k)O(1/k) 提升到 O(1/k2)O(1/k^2)。

步长的选取有两种常见策略:固定步长 α=1/L\alpha = 1/L(需要已知 LL)和回溯线搜索(Backtracking line search,不需要 LL 但每步可能多次计算函数值)。

5.9.4 算子形式与分裂算法#

对 PGA 迭代式求最优性条件。由于 gg 非光滑,对其取次梯度:

0∈∂g(xk+1)+∇f(xk)+1αk(xk+1−xk)0 \in \partial g(x^{k+1}) + \nabla f(x^k) + \frac{1}{\alpha_k}(x^{k+1} - x^k)

令 A=∇fA = \nabla f(梯度算子),B=∂gB = \partial g(次梯度算子),c=αkc = \alpha_k(步长参数),整理得 PGA 的算子迭代形式:

xk+1=JcB ⁣(I−cA)xk\boxed{x^{k+1} = J_{cB}\!\left( I - cA \right) x^k}

其中 JcB=(I+cB)−1J_{cB} = (I + cB)^{-1} 是 BB 的预解算子。

原始优化问题的零包含形式为 0∈∇f(x)+∂g(x)0 \in \nabla f(x) + \partial g(x),即 0∈Ax+Bx0 \in Ax + Bx。这正是经典的分裂算法(splitting method)框架:将零包含问题中的算子拆分为 AA(易于计算梯度的部分)和 BB(易于计算预解式的部分),分别处理后组合。

5.9.5 收敛性分析#

设 gg 为凸函数,B=∂gB = \partial g 为极大单调算子,PGA 在以下三个条件下收敛:

  • 条件一:JcBJ_{cB} 是稳定非扩张映射(已在 PPA 收敛性证明中建立)
  • 条件二:A=∇fA = \nabla f 满足余强制(cocoercive)条件,即存在 δ>0\delta > 0 使得 ⟨Ax−Ay, x−y⟩≥δ∥Ax−Ay∥2\langle Ax - Ay,\, x - y \rangle \geq \delta \|Ax - Ay\|^2
  • 条件三:步长参数 cc 满足 c<2δc < 2\delta

证明:设 x∗x^* 是不动点(满足 x∗=JcB(I−cA)x∗x^* = J_{cB}(I - cA)x^*),计算:

∥xk+1−x∗∥2=∥JcB(I−cA)xk−JcB(I−cA)x∗∥2\|x^{k+1} - x^*\|^2 = \|J_{cB}(I - cA)x^k - J_{cB}(I - cA)x^*\|^2

第一步:利用 JcBJ_{cB} 的非扩张性:

∥xk+1−x∗∥2≤∥(I−cA)xk−(I−cA)x∗∥2\|x^{k+1} - x^*\|^2 \leq \|(I - cA)x^k - (I - cA)x^*\|^2

第二步:展开右端:

∥(I−cA)xk−(I−cA)x∗∥2=∥xk−x∗∥2+c2∥Axk−Ax∗∥2−2c⟨xk−x∗, Axk−Ax∗⟩\|(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

第三步:利用 AA 的 cocoercive 条件,⟨xk−x∗,Axk−Ax∗⟩≥δ∥Axk−Ax∗∥2\langle x^k - x^*, Ax^k - Ax^* \rangle \geq \delta \|Ax^k - Ax^*\|^2,代入得:

∥xk+1−x∗∥2≤∥xk−x∗∥2+(c2−2cδ)∥Axk−Ax∗∥2\|x^{k+1} - x^*\|^2 \leq \|x^k - x^*\|^2 + (c^2 - 2c\delta)\|Ax^k - Ax^*\|^2

第四步:由 c>0c > 0 和 c<2δc < 2\delta 知 c2−2cδ<0c^2 - 2c\delta < 0,从而:

∥xk+1−x∗∥2≤∥xk−x∗∥2−(2cδ−c2)∥Axk−Ax∗∥2\|x^{k+1} - x^*\|^2 \leq \|x^k - x^*\|^2 - (2c\delta - c^2)\|Ax^k - Ax^*\|^2

其中 2cδ−c2>02c\delta - c^2 > 0,证明了费杰单调性。结合不动点迭代的一般收敛定理,即可得出 PGA 的收敛性。■\blacksquare

PGA 的收敛性证明与 PPA、投影梯度法的证明一脉相承:核心都是验证迭代映射的稳定非扩张性或费杰单调性,然后套用不动点迭代的一般收敛定理。

5.10 PGA 的应用实例#

5.10.1 投影梯度算法作为 PGA 的特例#

考虑约束优化问题 min⁡xf(x)  s.t.  x∈Ω\min_{x} f(x) \;\text{s.t.}\; x \in \Omega(Ω\Omega 是闭凸集)。利用指示函数 ιΩ(x)\iota_\Omega(x) 将其转化为无约束复合优化形式 min⁡xf(x)+ιΩ(x)\min_{x} f(x) + \iota_\Omega(x),其中 f(x)f(x) 光滑,ιΩ(x)\iota_\Omega(x) 非光滑但凸,恰好符合 PGA 的适用框架。

将 g=ιΩg = \iota_\Omega 代入 PGA 的迭代格式并配方:

xk+1=arg⁡min⁡x{ιΩ(x)+12αk∥x−(xk−αk∇f(xk))∥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\}

由于指示函数的邻近算子就是投影算子 PΩP_\Omega(已在 5.6.1 节证明),因此:

xk+1=PΩ ⁣(xk−αk∇f(xk))\boxed{x^{k+1} = P_\Omega\!\left( x^k - \alpha_k \nabla f(x^k) \right)}

这正是投影梯度算法(Projected Gradient Method)的迭代格式。投影梯度算法是 PGA 在 g=ιΩg = \iota_\Omega 时的特例。

算子形式验证:通过零包含问题的最优性条件整理后可得 xk+1=(I+αk∂ιΩ)−1(xk−αk∇f(xk))=PΩ(xk−αk∇f(xk))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)),利用了 Jαk∂ιΩ=PΩJ_{\alpha_k \partial \iota_\Omega} = P_\Omega 的结论。

5.10.2 LASSO 问题的 PGA 求解#

考虑压缩感知(compressed sensing)中的 LASSO 问题:

min⁡x  12∥Ax−b∥22+λ∥x∥1\min_{x} \; \frac{1}{2}\|Ax - b\|_2^2 + \lambda \|x\|_1

其中 A∈Rm×nA \in \mathbb{R}^{m \times n}(n≫mn \gg m)为观测矩阵,bb 为观测信号,λ>0\lambda > 0 为正则化参数。前一项 f(x)=12∥Ax−b∥22f(x) = \frac{1}{2}\|Ax - b\|_2^2 光滑,后一项 g(x)=λ∥x∥1g(x) = \lambda\|x\|_1 非光滑但凸。这正是 PGA 框架中 f+gf + g 的复合结构。

下面逐步写出 PGA 在 LASSO 问题上的具体迭代。

第一步:计算梯度。 f(x)=12∥Ax−b∥22f(x) = \frac{1}{2}\|Ax-b\|_2^2 的梯度为:

∇f(x)=A⊤(Ax−b)\nabla f(x) = A^\top(Ax - b)

∇f\nabla f 的 Lipschitz 常数为 L=∥A⊤A∥2=σmax⁡2(A)L = \|A^\top A\|_2 = \sigma_{\max}^2(A)(AA 的最大奇异值的平方),因此步长取 α≤1/L\alpha \leq 1/L。

第二步:梯度步。 计算中间向量:

vk=xk−α A⊤(Axk−b)v^k = x^k - \alpha \,A^\top(Ax^k - b)

这一步只涉及矩阵-向量乘法 AxkAx^k(O(mn)O(mn))和 A⊤(⋅)A^\top(\cdot)(O(mn)O(mn)),计算代价明确。

第三步:邻近步。 求解 λ∥⋅∥1\lambda\|\cdot\|_1 的邻近算子:

xk+1=proxαλ∥⋅∥1(vk)=Sαλ(vk)x^{k+1} = \mathrm{prox}_{\alpha\lambda\|\cdot\|_1}(v^k) = \mathcal{S}_{\alpha\lambda}(v^k)

即对 vkv^k 的每个分量独立施加阈值 αλ\alpha\lambda 的软阈值运算:

xik+1=sign(vik)⋅max⁡{∣vik∣−αλ,  0},i=1,…,nx_i^{k+1} = \mathrm{sign}(v_i^k) \cdot \max\{|v_i^k| - \alpha\lambda,\; 0\}, \quad i = 1, \ldots, n

这一步的计算代价为 O(n)O(n),每个分量独立处理,可完全并行化。

完整的一步迭代因此为:

xk+1=Sαλ ⁣(xk−α A⊤(Axk−b))\boxed{x^{k+1} = \mathcal{S}_{\alpha\lambda}\!\left( x^k - \alpha \,A^\top(Ax^k - b) \right)}

每步迭代的主要计算量在梯度步的矩阵-向量乘法(O(mn)O(mn)),邻近步的软阈值运算代价可忽略。

为什么不能直接用 PPA:如果将 f(x)+g(x)f(x) + g(x) 整体作为 PPA 的目标函数,展开 ∥Ax−b∥22\|Ax - b\|_2^2 后会出现 A⊤AA^\top A 项,产生分量之间的耦合项。例如取 A=(1101)A = \begin{pmatrix} 1 & 1 \\ 0 & 1 \end{pmatrix},则 ∥Ax∥2=(x1+x2)2+x22\|Ax\|^2 = (x_1 + x_2)^2 + x_2^2,展开后出现 x1x2x_1 x_2 的耦合。这种耦合使得无法对各分量独立求解,丧失了 ℓ1\ell_1 范数的可分离性。

而 PGA 通过对 ff 做线性化近似,将 A⊤AA^\top A 的作用限制在梯度计算 ∇f(xk)=A⊤(Axk−b)\nabla f(x^k) = A^\top(Ax^k - b) 中——这只是一次矩阵-向量乘法,不会在子问题中引入耦合。子问题中只剩下 λ∥x∥1+12α∥x−vk∥2\lambda\|x\|_1 + \frac{1}{2\alpha}\|x - v^k\|^2,各分量完全解耦,可以逐分量独立求解。

PPA 不是万能的。当 ff 中含有矩阵乘积(如 A⊤AA^\top A)时,直接套用 PPA 会导致子问题出现耦合项,丧失可分离性。PGA 通过线性化避免了这一问题,这正是 PGA 在此类问题中不可替代的原因。

第五章:邻近算法
https://blog.xwysyy.com/posts/optimization/ch5/
作者
xwysyy
发布于
2026-06-01
许可协议
CC BY-NC-SA 4.0

评论

0/1000
评论加载中…
对话列表
© 2026 xwysyy. All Rights Reserved.
Powered by Astro & Firefly

文章目录