[转]交替方向乘子法(ADMM)算法的流程和原理

交替方向乘子法(ADMM)算法的流程和原理

1. ADMM算法的基本形式

经典的ADMM算法适用于求解如下2-block的凸优化问题( p^* 是最优值,令 x^*,z^* 表示一组最优解):

\begin{align} p^* = \min ~  & f(x)+g(z)\\ \text{s.t. } & Ax+Bz=c. \end{align}

Block指我们可以将决策域分块,分成两组变量, x\in \mathbb{R}^n,z\in \mathbb{R}^m. 这里面 A\in \mathbb{R}^{p\times n},B\in \mathbb{R}^{p\times m},c\in \mathbb{R}^p. f:\mathbb{R}^n\rightarrow \mathbb{R},g:\mathbb{R}^m\rightarrow \mathbb{R} 都是凸的。分成2-block是因为3-block及以上的问题性质会差一点,分析起来不太好说清楚(虽然实际当中基本上几个block都可以用,一般都会收敛...)。

那么我们这里就可以写出这个凸优化问题的增广拉格朗日函数(augmented Lagrangian function):

L_{\rho}(x,z,y)=f(x)+g(z)+y^T(Ax+Bz-c)+(\rho/2)\|Ax+Bz-c\|_2^2.

注意到这个增广的意思就是在原来的拉格朗日函数后面加了个平方的正则项(系数 \rho/2 ),这个主要是为了不需要 f 一定要是严格凸(strictly convex)/值域有限(只要是一般的凸函数就行了)然后也能保证收敛性。然后我们对 L_\rho 用dual ascent(对偶上升法),或者也就是拉格朗日乘子法就知道可以有这样一个算法形式:

\begin{align} (x^{k+1},z^{k+1}):=~ & \arg\min_{x,z} L_{\rho}(x,z,y^k)\\ y^{k+1}:= ~ & y^k+\rho(Ax^{k+1}+Bz^{k+1}-c). \end{align}

题主的意思似乎是对这个式子怎么来的有所困惑,其实dual ascent原理非常简单,本质上来说就是primal variable迭代方向取拉格朗日函数对primal variable的次微分,dual variable迭代方向取拉格朗日函数对dual variable的次微分(这里的话就是 \frac{\partial L_{\rho}}{\partial y} )。这也是所谓拉格朗日乘子法的一般思路(method of multipliers)。当然这边还有一些细节,比如对偶变量迭代步长选了 \rho 。所以如果你想从基础打起的话,可以从比如S. Boyd and L. Vandenberghe的凸优化书第五章看起。我们这边只讨论ADMM形式的收敛证明。

那么ADMM,也就是所谓“交替方向”的乘子法就是在原基础上( x,z 一起迭代)改成 x,z 单独交替迭代(如果有更多block也是类似)。即,我们的ADMM算法为

\begin{align} x^{k+1}:=~ & \arg\min_{x} L_{\rho}(x,z^k,y^k)\\ z^{k+1}:=~ & \arg\min_{z} L_{\rho}(x^{k+1},z,y^k)\\ y^{k+1}:= ~ & y^k+\rho(Ax^{k+1}+Bz^{k+1}-c). \end{align}

本节最后,我们指出ADMM算法形式的另一种等价形式。如果定义所谓的残差(residual)为 r^k:=Ax^k+Bz^k-c ,那么注意到再定义 u^k:=(1/\rho)y^k 作为所谓scaled dual variable,我们有 (y^k)^Tr^k+(\rho/2)\|r^k\|_2^2=(\rho/2)\|r^k+u^k\|_2^2-(\rho/2)\|u^k\|_2^2. 即我们可以改写ADMM算法形式为

扫描二维码关注公众号,回复: 5319008 查看本文章

\begin{align} x^{k+1}:=~ & \arg\min_{x} \left\{ f(x)+(\rho/2)\|Ax+Bz^k-c+u^k\|_2^2  \right\}\\ z^{k+1}:=~ & \arg\min_{z}  \left\{ g(z)+(\rho/2)\|Ax^{k+1}+Bz-c+u^k\|_2^2  \right\}\\ u^{k+1}:= ~ & u^k+Ax^{k+1}+Bz^{k+1}-c. \end{align}

嗯这个形式就比前面那个更简洁些,我们一般叫前一种形式为ADMM的unscaled形式,而这种就自然是scaled形式了。很多ADMM分析都是基于这个scaled形式的。

2. ADMM的收敛性证明思路

在两个不太强的假设前提下,本节给出ADMM基本形式的收敛性证明的思路。

假设1: 凸函数f,g 是closed和proper的。

假设2:(非增广)拉格朗日函数 L_0 至少有一个鞍点(saddle point)。

假设1等价于epigraph \{(x,t)\in \mathbb{R}^n\times\mathbb{R}:f(x)\leq t\}, \{(z,s)\in \mathbb{R}^m\times\mathbb{R}:g(z)\leq s\} 都是非空的闭凸集(closed nonempty convex set),也就是说 \arg\min_{x} L_{\rho}(x,z^k,y^k) \arg\min_{z} L_{\rho}(x^{k+1},z,y^k) 的解一定是存在的。注意,这个假设仍然没有限制 f,g 一定要是可微(differentiable)的。

假设2主要是为了保证强对偶(strong duality)对这个问题成立(在假设1成立的基础上),即原问题和对偶问题的最优值相等。熟悉凸优化理论的同学应该一下子就能明白,这边就留给大家作为思考。注意假设2也没有怎么限制 A,B ,比如它们都可以不是满秩(full rank)的。

基于这两个假设,我们证明如下结果:

  • 残差收敛。随着 k\rightarrow\infty, ~ r^k\rightarrow 0. 也就是说最终我们的解是可行(feasible)的。
  • 目标函数值收敛。随着 k\rightarrow\infty, ~ f(x^k)+g(z^k)\rightarrow p^*. 也就是说最终我们的目标函数值是最优的。
  • 对偶变量收敛。随着 k\rightarrow\infty, ~ y^k\rightarrow y^*. 也就是最终对偶变量的值收敛到某个对偶变量的最优解。

注意这里隐含了一个ADMM的有意思的特性,即原变量,primal variable, x^k,z^k 不一定会收敛到一个最优解 x^*,z^*!

好了,为了说明思路,一开始我们先定义一个李雅普诺夫函数(Lyapunov function),

V^k:=(1/\rho)\|y^k-y^*\|_2^2+\rho\|B(z^k-z^*)\|_2^2

和对偶空间上的残差

s^k:=\rho A^TB(z^{k}-z^{k-1})

证明的思路主要由三个不等式组成。

\begin{align} & V^{k+1}\leq  V^k-\rho\|r^{k+1}\|_2^2-\rho\|B(z^{k+1}-z^k)\|_2^2 \tag{*}.\\ & p^{k+1}-p^*\leq  -(y^{k+1})^T r^{k+1}-\rho(B(z^{k+1}-z^k))^T(-r^{k+1}+B(z^{k+1}-z^*)) \tag{**}\\ & p^*-p^{k+1}\leq  (y^*)^Tr^{k+1}\tag{***}. \end{align}

注意不等式 (*) 说明 \{V^k\} 的序列是单调递减的(利用李雅普诺夫函数的证明思想最初来自于控制领域,这里可能看的不是很明显,熟悉控制理论的同学就应该觉得trivial了),这样我们就知道 \{y^k\}\{Bz^k\} 序列都是有上界的。因此对 k 求和我们就有

\rho\sum_{k=0}^\infty\left(  \|r^{k+1}\|_2^2+\|B(z^{k+1}-z^k)\|_2^2  \right)\leq V_0

这就直接表明了随着 k\rightarrow \infty:r^k\rightarrow 0,B(z^{k+1}-z^k)\rightarrow 0, s^k\rightarrow 0. 然后,基于 (*) 我们知道 (**)(***) 的右边项随着 k\rightarrow\infty 都是趋近于0的,这样就得到了随着 k\rightarrow \infty:p^k\rightarrow p^*. 因此我们就知道,证明了这三个不等式就能直接推出我们所要的收敛性结果。

下一节就给出三个不等式的证明。顺序是先证明 (**),(***) ,再证明 (*).

3. 三个不等式的证明

证明 (***) 

利用鞍点的性质,

L_0(x^*,z^*,y^*)\leq L_0(x^{k+1},z^{k+1},y^*).

因为 Ax^*+Bz^*=c, 所以左端项就等于 p^* 。因为 p^{k+1}=f(x^{k+1})+g(z^{k+1}), 我们就得到了

p^*\leq p^{k+1}+(y^*)^T r^{k+1}.

证明 (**) 

根据定义, x^{k+1} 最小化了 L_\rho(x,z^k,y^k). 因此,根据最优性条件我们有

0\in \left. \frac{\partial L_{\rho}(x,z^k,y^k)}{\partial x}  \right|_{x=x^{k+1}}=\partial f(x^{k+1})+A^Ty+\rho A^T(Ax^{k+1}+Bz^k-c).

因为 y^{k+1}=y^k+\rho r^{k+1}, 我们简化上式得到

0\in \partial f(x^{k+1})+A^T(y^{k+1}-\rho B(z^{k+1}-z^k)).

也就是说 x^{k+1}=\arg\min_x f(x)+(y^{k+1}-\rho B(z^{k+1}-z^k))Ax.

类似地,我们可以得到 z^{k+1}=\arg\min_z g(z)+(y^{k+1})^TBz.

于是我们就有

f(x^{k+1})+(y^{k+1}-\rho B(z^{k+1}-z^k))^TAx^{k+1}\leq f(x^*)+(y^{k+1}-\rho B(z^{k+1}-z^k))Ax^*,

 g(z^{k+1})+(y^{k+1})^TBz^{k+1}\leq  g(z^*)+(y^{k+1})^TBz^*.

将这两个不等式相加,再利用 Ax^*+Bz^*=c, 我们就能得到 (**).

证明 (*) 

(**),(***) 相加并两边乘以2,

2(y^{k+1}-y^*)^T r^{k+1}-2\rho(B(z^{k+1}-z^k) )^Tr^{k+1}+2\rho (B(z^{k+1}-z^k))^T (B(z^{k+1}-z^*)) \leq 0.

(*) 这个不等式可以直接由上面这个不等式变形得到。emmm这个时候脑中想起了那句名言:“同学们注意,我要开始变形了!”

先变形第一项。利用 y^{k+1}=y^k+\rho r^{k+1}, 变形得

2(y^k-y^*)^T r^{k+1}+\rho\|r^{k+1}\|_2^2+\rho\|r^{k+1}\|_2^2.

然后把上式前两项代入 r^{k+1}=(1/\rho)(y^{k+1}-y^k), 变形得

\begin{align} & (2/\rho)(y^k-y^*)^T(y^{k+1}-y^k)+(1/\rho)\|y^{k+1}-y^k\|_2^2+\rho\|r^{k+1}\|_2^2\\ = & (1/\rho)\left( \|y^{k+1}-y^*\|_2^2-\|y^k-y^*\|_2^2 \right)+\rho\|r^{k+1}\|_2^2. \end{align}

参照 (*) 式, V^{k+1}-V^k 关于 y 的部分已经变形出来了。接下来我们就变形剩余的项,具体来说,我们要变形

\rho\|r^{k+1}\|_2^2-2\rho(B(z^{k+1}-z))^Tr^{k+1}+2\rho(B(z^{k+1}-z^k))^T(B(z^{k+1}-z^*)).

先利用 z^{k+1}-z^*=(z^{k+1}-z^k)+(z^k-z^*) 代入上式最后一项,变形得

\begin{align} & \rho\|r^{k+1}-B(z^{k+1}-z^k)\|_2^2+\rho\|B(z^{k+1}-z^k)\|_2^2+2\rho(B(z^{k+1}-z^k))^T(B(z^k-z^*))\\ = & \rho\|r^{k+1}-B(z^{k+1}-z^k)\|_2^2+\rho\left(\|B(z^{k+1}-z^*)\|_2^2-\|B(z^k-z^*)\|_2^2\right). \end{align}

变形完毕!

所以我们看到其实掌握了证明的主要思路,具体证明其实没什么技术难度,顶多就是algebra稍微有点绕。这也是ADMM算法分析的一般特点,我们这还是最基本的情况,复杂情况的分析就是绕得多了(主要是因为迭代的时候各种“交替”)。。

作者:覃含章
链接:https://www.zhihu.com/question/309568920/answer/580226096
来源:知乎

猜你喜欢

转载自www.cnblogs.com/kailugaji/p/10433774.html