凸优化学习笔记 22:近似点算法 PPA

在进入具体的优化算法后,我们首先讲了基于梯度的,比如梯度下降(GD)、次梯度下降(SD);然后又讲了近似点算子,之后讲了基于近似点算子的方法,比如近似点梯度下降(PG)、对偶问题的近似点梯度下降(DPG)、加速近似点梯度下降(APG)。而这一节讲的,还是基于近似点的!他叫近似点方法(Proximal Point Algorithm, PPA),除此之外还会介绍增广拉格朗日方法(Augmentted Larangian Method, ALM)。我们就开始吧!

1. 近似点方法

近似点方法跟近似点梯度下降很像,在此之外我们先简单回顾一下 PG 方法。对优化问题
minimize f(x)=g(x)+h(x) \text{minimize } f(x)=g(x)+h(x)
其中 gg 为光滑凸函数,而且为了保证收敛性需要满足 Lipschitz 光滑性质,hh 为非光滑函数,只要 hh 为闭凸函数,对于近似点算子 proxh(x)\text{prox}_{h}(x) 自然满足 firmly nonexpansive(co-coercivite) 性质,这个也等价于 Lipschitz continuous 性质
(proxh(x)proxh(y))T(xy)proxh(x)proxh(y)22 \left(\operatorname{prox}_{h}(x)-\operatorname{prox}_{h}(y)\right)^{T}(x-y) \geq\left\|\operatorname{prox}_{h}(x)-\operatorname{prox}_{h}(y)\right\|_{2}^{2}
迭代格式为
xk+1=proxth(xktkg(xk)) x_{k+1}=\text{prox}_{th}(x_k-t_k\nabla g(x_k))
这个表达式实际上可以等价表示为
x+=xtGt(x),Gt(x):=xx+th(x+)+g(x) x^+ = x-tG_t(x), \qquad G_t(x):=\frac{x-x^+}{t}\in \partial h(x^+)+\nabla g(x)
然后我们再回顾一下 APG 方法,实际上就是在 PG 的基础上引入了一个外差,直观理解就是加入了动量
xk+1=proxth(yktkg(yk))yk=xk+wk(xkxk1) \begin{aligned} x_{k+1} &= \text{prox}_{th}(y_k-t_k\nabla g(y_k)) \\ y_k &= x_k + w_k(x_k-x_{k-1}) \end{aligned}
好了复习结束!那么近似点方法 PPA 针对的优化问题是 minf\min f,其中 ff 为闭凸函数

迭代格式
xk+1=proxtkf(xk)=argminu(f(u)+12tkuxk22) \begin{aligned} x_{k+1} &= \text{prox}_{t_k f}(x_k) \\ &= \arg\min_u \left( f(u)+\frac{1}{2t_k}\Vert u-x_k\Vert_2^2 \right) \end{aligned}

这实际上可以看作是 PG 方法中取函数 g=0g=0,因此所有适用于 PG 的收敛性分析也都适用于 PPA 方法,而且由于 g=0g=0,因此也不需要对 ff 做 Lipschitz 光滑的假设,因此步长 tkt_k 可以是任意正实数,而不需要 0<tk<1/L0< t_k < 1/L。类比 PG 中的收敛性分析可以得到
ti(f(xi+1)f)12(xix22xi+1x22)f(xk)fx0x222i=0k1ti for k1 t_{i}\left(f\left(x_{i+1}\right)-f^{\star}\right) \leq \frac{1}{2}\left(\left\|x_{i}-x^{\star}\right\|_{2}^{2}-\left\|x_{i+1}-x^{\star}\right\|_{2}^{2}\right) \\ \Longrightarrow f\left(x_{k}\right)-f^{\star} \leq \frac{\left\|x_{0}-x^{\star}\right\|_{2}^{2}}{2 \sum_{i=0}^{k-1} t_{i}} \quad \text { for } k \geq 1
同样得,我们也可以引入外差进行加速
xk+1=proxtkf(xk+θk(1θk11)(xkxk1)) for k1 x_{k+1}=\operatorname{prox}_{t_{k} f}\left(x_{k}+\theta_{k}\left(\frac{1}{\theta_{k-1}}-1\right)\left(x_{k}-x_{k-1}\right)\right) \quad \text { for } k \geq 1
其中可以是任意 tk>0t_k> 0θk\theta_k 由以下方程解得
θk2tk=(1θk)θk12tk1 \frac{\theta_{k}^{2}}{t_{k}}=\left(1-\theta_{k}\right) \frac{\theta_{k-1}^{2}}{t_{k-1}}
并且可以证明加速后的方法收敛速度可以达到 O(1/k2)O(1/k^2)

PPA 的基本原理就没有了,这里简单总结一下, 实际上核心的地方只有一个迭代格式
xk+1=proxtkf(xk) x_{k+1} = \text{prox}_{t_k f}(x_k)
其他的收敛性分析以及加速算法都可以类比 PG 得到。

2. 增广拉格朗日方法

增广拉格朗日方法(也叫乘子法)一般是为了解决有约束优化问题,并且我们通常考虑等式约束,对于非等式约束可以通过引入松弛变量将其转化为等式约束。这里我们首先介绍一下基本的 ALM 形式。对于优化问题
minf(x)s.t.C(x)=0 \begin{aligned} \min\quad& f(x) \\ \text{s.t.}\quad& C(x)=0 \end{aligned}
增广拉格朗日函数(重要)
Lσ(x,ν)=f(x)+νTC(x)+σ2C(x)22,σ>0 L_\sigma(x,\nu) = f(x)+\nu^TC(x) + \frac{\sigma}{2}\Vert C(x)\Vert_2^2,\quad \sigma>0
就是在初始的拉格朗日函数后面加了一个等式约束的二次正则项

ALM 的迭代格式则为
xk+1=argminxLσ(x,νk)νk+1=νk+σC(xk+1) \begin{aligned} x^{k+1} &= \arg\min_{x} L_\sigma(x,\nu^k) \\ \nu^{k+1} &= \nu^k + \sigma C(x^{k+1}) \end{aligned}

一般会将增广拉格朗日函数化简成另一种形式(重要)
Lσ(x,ν)=f(x)+σ2C(x)+νσ22 L_\sigma(x,\nu) = f(x) + \frac{\sigma}{2}\Vert C(x)+\frac{\nu}{\sigma}\Vert_2^2
就是做了一个配方,但化简前后的两个函数并不完全等价,因为丢掉了 ν\nu 的二次项,不过对于迭代算法没有影响,因为迭代的第一步仅仅是针对 xx 求最小。

如果是不等式约束呢?比如优化问题
minxf(x)s.t.C(x)0    minx,sf(x)s.t.C(x)s=0,s0 \begin{aligned} \min_x\quad& f(x) \\ \text{s.t.}\quad& C(x)\ge0 \end{aligned} \iff \begin{aligned} \min_{x,s}\quad& f(x) \\ \text{s.t.}\quad& C(x)-s=0,\quad s\ge0 \end{aligned}
此时增广拉格朗日函数为
Lσ(x,s,ν)=f(x)νT(C(x)s)+σ2C(x)s2,s0 L_\sigma(x,s,\nu) = f(x)-\nu^T(C(x)-s)+\frac{\sigma}{2}\Vert C(x)-s\Vert^2,\quad s\ge0
迭代方程为
(xk+1,sk+1)=argminx,s0Lσ(x,s,νk)νk+1=νkσ(C(xk+1)sk+1) \begin{aligned} (x^{k+1},s^{k+1}) &= \arg\min_{x,s\ge0} L_\sigma(x,s,\nu^k) \\ \nu^{k+1} &= \nu^k - \sigma (C(x^{k+1})-s^{k+1}) \end{aligned}
第一步求极小要怎么计算呢?先把增广拉格朗日函数化为
minx{f(x)+mins0σ2C(x)sνσ2}=minx{f(x)+σ2C(x)νσΠ+(C(x)νσ)2} \min_x\left\{f(x)+\min_{s\ge0}\frac{\sigma}{2}\left\Vert C(x)-s-\frac{\nu}{\sigma}\right\Vert^2 \right\} \\ = \min_x\left\{f(x)+\frac{\sigma}{2}\left\Vert C(x)-\frac{\nu}{\sigma}-\Pi_+(C(x)-\frac{\nu}{\sigma})\right\Vert^2 \right\}
其中 Π+\Pi_+ 表示向 R+nR_+^n 空间的投影。

例子:这是一个应用 ALM 的例子,考虑优化问题 minf(x), s.t. AxC\min f(x),\text{ s.t. }Ax\in C,用 ALM 的迭代步骤为
x^=argminxf(x)+t2d(Ax+z/t)2z:=z+t(Ax^PC(Ax^+z/t)) \begin{aligned} \hat{x} &= \arg\min_{x} f(x)+\frac{t}{2}d( Ax+z/t)^2 \\ z :&= z + t(A\hat{x}-P_C(A\hat{x}+z/t)) \end{aligned}
其中 PCP_C 是向集合 CC 的投影,d(u)d(u)uu 到集合 CC 的欧氏距离。

3. PPA 与 ALM 的关系

这里先给出一个结论:对原始问题应用 ALM 等价于对对偶问题应用 PPA

下面看分析,考虑优化问题
(P) minimize f(x)+g(Ax)(D) maximize g(z)f(ATz) \begin{aligned} (P)\text { minimize }\quad& f(x)+g(A x)\\ (D)\text { maximize } \quad& -g^{\star}(z)-f^{\star}\left(-A^{T} z\right) \end{aligned}
我们就先来看看原始问题应用 ALM 会得到什么。原始问题等价于
minf(x)+g(y)s.t.Ax=y \begin{aligned} \min\quad& f(x)+g(y) \\ \text{s.t.}\quad& Ax=y \end{aligned}
拉格朗日函数为
Lt(x,y,z)=f(x)+g(y)+zT(Axy)+t2Axy2 L_t(x,y,z) = f(x)+g(y)+z^T(Ax-y)+\frac{t}{2}\Vert Ax-y\Vert^2
ALM 迭代方程为
(xk+1,yk+1)=argminx,yLt(x,y,zk)zk+1=zk+t(Axk+1yk+1) \begin{aligned} (x^{k+1},y^{k+1}) &= \arg\min_{x,y} L_t(x,y,z^k) \\ z^{k+1} &= z^k + t(Ax^{k+1}-y^{k+1}) \end{aligned}
对偶问题应用 PPA 的迭代方程是什么呢?首先我们令 h(z)=g(z)+f(ATz)h(z)=g^{\star}(z)+f^{\star}\left(-A^{T} z\right),那么就需要求解
z+=proxth(z)=argminu(f(ATu)+g(u)+12tuz22)    zz+th(z+)=t(Af(ATz+)+g(z+) z^{+} = \text{prox}_{th}(z) = \underset{u}{\operatorname{argmin}}\left(f^{\star}\left(-A^{T} u\right)+g^{\star}(u)+\frac{1}{2 t}\|u-z\|_{2}^{2}\right) \\ \iff z-z^+ \in t\partial h(z^+)=t\left(-A\partial f^\star(-A^Tz^+)+\partial g^\star(z^+\right)
这个 z+z^+ 乍一看跟 ALM 的 zk+1z^{k+1} 没有一点关系啊,为什么说他们俩等价呢?这就要引出下面一个等式了(先打个预防针,这个等式以及他的推导很不直观,我也没有想到一个很好的解释,但是这个等式以及推导又很重要!在后面章节中也会用到)

很重要的式子:
z+=proxth(z)=z+t(Ax^y^) z^+=\text{prox}_{th}(z) = z+t(A\hat{x}-\hat{y})
其中 x^,y^\hat{x},\hat{y}
(x^,y^)=argminx,y(f(x)+g(y)+zT(Axy)+t2Axy22) (\hat{x}, \hat{y})=\underset{x, y}{\operatorname{argmin}}\left(f(x)+g(y)+z^{T}(A x-y)+\frac{t}{2}\|A x-y\|_{2}^{2}\right)

先不管推导,这样看来对偶问题的 PPA 是不是就跟原始问题的 ALM 完全等价了呢?!然后我们来看一下证明(更多的是验证上面这两个等式成立,至于怎么推导出来我也不知道…)

增广拉格朗日函数可以转化为
(x^,y^)=argminx,y(f(x)+g(y)+t2Axy+z/t22) (\hat{x},\hat{y}) = \underset{x, y}{\operatorname{argmin}}\left(f(x)+g(y)+\frac{t}{2}\|A x-y+z/t\|_{2}^{2}\right)
我们把它表示成一个优化问题,并且引入等式约束
minimizex,y,wf(x)+g(y)+t2w22subject toAxy+z/t=w \begin{aligned} \text{minimize}_{x, y, w} \quad& f(x)+g(y)+\frac{t}{2}\|w\|_{2}^{2} \\ \text{subject to}\quad& A x-y+z / t=w \end{aligned}
他的 KKT 条件就是
Axy+1tz=w,ATuf(x),ug(y),tw=u A x-y+\frac{1}{t} z=w, \quad-A^{T} u \in \partial f(x), \quad u \in \partial g(y), \quad t w=u
我们把 x,y,wx,y,w 消掉就得到了 u=z+t(Axy)u = z+t(Ax-y),并且有
0Af(ATu)+g(u)+1t(uz) 0 \in-A \partial f^{*}\left(-A^{T} u\right)+\partial g^{*}(u)+\frac{1}{t}(u-z)
上面这个式子就等价于 u=proxth(z)u=\text{prox}_{th}(z)。因此就有 proxth(z)=z+t(Ax^y^)\text{prox}_{th}(z) = z+t(A\hat{x}-\hat{y})

4. Moreau–Yosida smoothing

这一部分是从另一个角度看待 PPA 算法。我们知道如果 ff 是光滑函数就可以直接用梯度下降了,如果是非光滑函数则可以用次梯度或者近似点算法,前面复习 PG 方法的时候提到了 PG 也可以看成是一种梯度下降,梯度为 Gt(x)G_t(x)
xk+1=proxth(xktkg(xk))    x+=xtGt(x) x_{k+1}=\text{prox}_{th}(x_k-t_k\nabla g(x_k)) \iff x^+ = x-tG_t(x)
这一部分要讲的就是从梯度下降的角度认识 PPA 方法。

这里再次先抛出结论:PPA 实际上就是对 ff 的某个光滑近似函数 f~\tilde{f} 做梯度下降

这个光滑近似函数是什么呢?对于闭凸函数 ff,我们定义
f(t)(x)=infu(f(u)+12tux22)( with t>0)=f(proxtf(x))+12tproxtf(x)x22 \begin{aligned} f_{(t)}(x) &=\inf _{u}\left(f(u)+\frac{1}{2 t}\|u-x\|_{2}^{2}\right) \quad(\text { with } t>0) \\ &=f\left(\operatorname{prox}_{t f}(x)\right)+\frac{1}{2 t}\left\|\operatorname{prox}_{t f}(x)-x\right\|_{2}^{2} \end{aligned}
为函数 ffMoreau Envelop 。这里是将 proxtf(x)\text{prox}_{tf}(x) 代回到了原函数中。在此之前我们需要首先研究一下这个函数的性质。

  1. f(t)f_{(t)}凸函数。取 G(x,u)=f(u)+12tux22G(x,u) = f(u)+\frac{1}{2t}\Vert u-x\Vert^2_2 是关于 (x,u)(x,u) 的联合凸函数,因此 f(t)(x)=infuG(x,u)f_{(t)}(x)=\inf_u G(x,u) 是凸的;
  2. domf(t)=Rn\text{dom}f_{(t)}=R^n。这是因为 proxtf(x)\text{prox}_{tf}(x) 对任意的 xx 都有唯一的定义;
  3. f(t)C1f_{(t)}\in C^1 连续

另外可以验证共轭函数为
(f(t))(y)=f(y)+t2y22 \left(f_{(t)}\right)^{\star}(y)=f^{\star}(y)+\frac{t}{2}\|y\|_{2}^{2}
因此还有性质

  1. (f(t))(y)\left(f_{(t)}\right)^{*}(y)t-强凸函数,等价的有 f(t)(x)f_{(t)}(x)1/t-smooth

既然这个 f(t)f_{(t)}C1C^1 连续的,那么他的梯度是什么呢?
f(t)(x)=(f(t)(x))=supy(xTyf(y)t2y22) f_{(t)}(x) = \left(f_{(t)}(x)\right)^{\star\star}=\sup _{y}\left(x^{T} y-f^{\star}(y)-\frac{t}{2}\|y\|_{2}^{2}\right)
根据 Legendre transform 有 yf(t)(x)y^\star\in\partial f_{(t)}(x),令上面式子关于 yy 的次梯度等于 0 可以得到
xtyf(y)    yf(xty)xty=proxtf(x) x-ty^\star \in \partial f^\star(y^\star) \iff y^\star\in\partial f(x-ty^\star) \\ \Longrightarrow x-ty^\star=\text{prox}_{tf}(x)
因此我们就有(重要)
y=f(t)(x)=1t(xproxtf(x)) y^\star=\nabla f_{(t)}(x) = \frac{1}{t}\left(x-\text{prox}_{tf}(x)\right)
变换一下就是 proxtf(x)=xtf(t)(x)\text{prox}_{tf}(x) = x-t\nabla f_{(t)}(x),注意这个式子左边就是 PPA 的迭代方程,右边就是光滑函数函数 f(t)(x)f_{(t)}(x) 应用梯度下降法的迭代方程,并且由于这个函数是 L=1/tL=1/t-smooth 的,因此我们取的步长为 tt 满足要求 0<t1/L0<t\le 1/L。也就是我们这一小节刚开始说的,PPA 等价于对一个光滑近似函数 f(t)(x)f_{(t)}(x) 的梯度下降方法。

例子 1:举个例子算一下 Moreau Envelop,假如函数 f(x)=δC(x)f(x)=\delta_C(x),则 f(t)(x)=12td(x)2f_{(t)}(x)=\frac{1}{2t}d(x)^2,这里 d(x)d(x)xx 到集合 CC 的欧氏距离。

例子 2:若 f(x)=x1f(x)=\Vert x\Vert_1,函数 f(t)(x)=kϕt(xk)f_{(t)}(x)=\sum_k \phi_t(x_k) 被称为 Huber penalty,其中
ϕt(z)={z2/(2t)ztzt/2zt \phi_{t}(z)=\left\{\begin{array}{ll} z^{2} /(2 t) & |z| \leq t \\ |z|-t / 2 & |z| \geq t \end{array}\right.
凸优化学习笔记 22:近似点算法 PPA

最后给我的博客打个广告,欢迎光临
https://glooow1024.github.io/
https://glooow.gitee.io/

前面的一些博客链接如下
凸优化专栏
凸优化学习笔记 1:Convex Sets
凸优化学习笔记 2:超平面分离定理
凸优化学习笔记 3:广义不等式
凸优化学习笔记 4:Convex Function
凸优化学习笔记 5:保凸变换
凸优化学习笔记 6:共轭函数
凸优化学习笔记 7:拟凸函数 Quasiconvex Function
凸优化学习笔记 8:对数凸函数
凸优化学习笔记 9:广义凸函数
凸优化学习笔记 10:凸优化问题
凸优化学习笔记 11:对偶原理
凸优化学习笔记 12:KKT条件
凸优化学习笔记 13:KKT条件 & 互补性条件 & 强对偶性
凸优化学习笔记 14:SDP Representablity
凸优化学习笔记 15:梯度方法
凸优化学习笔记 16:次梯度
凸优化学习笔记 17:次梯度下降法
凸优化学习笔记 18:近似点算子 Proximal Mapping
凸优化学习笔记 19:近似梯度下降
凸优化学习笔记 20:对偶近似点梯度下降法
凸优化学习笔记 21:加速近似梯度下降方法
凸优化学习笔记 22:近似点算法 PPA