8.6 交替方向乘子法
本节首先介绍交替方向乘子法的基本算法;在介绍了 Douglas-Rachford Splitting 方法之后,说明将其应用在对偶问题上与将交替方向乘子法应用在原始问题上等价;然后给出交替方向乘子法的一些变形技巧,以及它和其他一些算法的关系;接着给出大量实际问题中的例子,并展示如何用交替方向乘子法来求解这些问题 ;最后给出交替方向乘子法的收敛性证明.
8.6.1 交替方向乘子法
本节考虑如下凸问题:
min
x
1
,
x
2
f
1
(
x
1
)
+
f
2
(
x
2
)
s
.
t
.
A
1
x
1
+
A
2
x
2
=
b
(
8.6.1
)
\begin{aligned} \min_{x_1,x_2}\quad &f_1(x_1)+f_2(x_2)\\\mathrm{s.t.}\quad & A_1x_1+A_2x_2=b\end{aligned}\qquad(8.6.1)
x1,x2mins.t.f1(x1)+f2(x2)A1x1+A2x2=b(8.6.1)
其中 f 1 , f 2 f_1,f_2 f1,f2 是适当的闭凸函数,但不要求是光滑的, x 1 ∈ R n , x 2 ∈ R m x_1\in\mathbb{R}^n, x_2\in\mathbb{R}^m x1∈Rn,x2∈Rm, A 1 ∈ R p × n , A 2 ∈ R p × m , b ∈ R p A_1\in\mathbb{R}^{p\times n}, A_2\in\mathbb{R}^{p\times m}, b\in\mathbb{R}^p A1∈Rp×n,A2∈Rp×m,b∈Rp. 这个问题的特点是目标函数可以分成彼此分离的两块,但是变量被线性约束结合在一起. 常见的一些无约束和带约束的优化问题都可以表示成这一形式. 下面的一些例子将展示如何把某些一般的优化问题转化为适用交替方向乘子法求解的标准形式.
例 8.19 可以分成两块的无约束优化问题
min x f 1 ( x ) + f 2 ( x ) \min_x\quad f_1(x)+f_2(x) xminf1(x)+f2(x)为了将此问题转化为标准形式 (8.6.1),需要将目标函数改成可分的形式.可以通过引入一个新的变量 z z z 并令 x = z x = z x=z,将问题转化为
min x , z f 1 ( x ) + f 2 ( z ) s . t . x − z = 0 \begin{aligned}\min_{x,z}\quad &f_1(x)+f_2(z)\\\mathrm{s.t.}\quad &x-z=0\end{aligned} x,zmins.t.f1(x)+f2(z)x−z=0
例 8.20 带线性变换的无约束优化问题
min x f 1 ( x ) + f 2 ( A x ) \min_x\quad f_1(x)+f_2(Ax) xminf1(x)+f2(Ax)类似地,我们可以引入一个新的变量 z z z,令 z = A x z = Ax z=Ax,则问题变为
min x , z f 1 ( x ) + f 2 ( z ) s . t . A x − z = 0 \begin{aligned}\min_{x,z}\quad &f_1(x)+f_2(z)\\\mathrm{s.t.}\quad &Ax-z=0\end{aligned} x,zmins.t.f1(x)+f2(z)Ax−z=0对比问题 (8.6.1) 可知 A 1 = A A_1 = A A1=A 和 A 2 = − I A_2 = −I A2=−I.
例 8.21 凸集上的约束优化问题
min x f ( x ) s . t . A x ∈ C \begin{aligned}\min_x\quad& f(x)\\ \mathrm{s.t.}\quad& Ax\in C\end{aligned} xmins.t.f(x)Ax∈C其中 C ⊂ R n C\subset\mathbb{R}^n C⊂Rn 为凸集. 对于集合约束 A x ∈ C Ax\in C Ax∈C, 可以用示性函数 I C ( ⋅ ) I_C(\cdot) IC(⋅) 将其添加到目标函数中,那么问题可以转化为:
min x f ( x ) + I C ( A x ) \min_x\quad f(x)+I_C(Ax) xminf(x)+IC(Ax)其中 I C ( z ) I_C(z) IC(z) 是集合 C C C 的示性函数,即
I C ( z ) = { 0 , z ∈ C , + ∞ , 其他 . I_C(z)=\begin{cases}0,&z\in C,\\[2ex]+\infty,&\text{其他}.\end{cases} IC(z)=⎩ ⎨ ⎧0,+∞,z∈C,其他.再引入约束 z = A x z = Ax z=Ax,那么问题转化为
min x , z f ( x ) + I C ( z ) s . t . A x − z = 0 \min_{x,z}\quad f(x)+I_C(z)\\ \mathrm{s.t.}\quad Ax-z=0 x,zminf(x)+IC(z)s.t.Ax−z=0
例 8.22 全局一致性问题 (global consensus problem)
min x ∑ i = 1 N ϕ i ( x ) \min_x\quad\sum_{i=1}^N\phi_i(x) xmini=1∑Nϕi(x)令 x = z x=z x=z, 并将 x x x 复制 N N N 份,分别为 x i x_i xi, 那么问题转化为
min x i , z ∑ i = 1 N ϕ i ( x i ) s . t . x i − z = 0 , i = 1 , 2 , ⋯ , N \begin{aligned}&\min_{x_{i},z}&&\sum_{i=1}^{N}\phi_{i}(x_{i})\\&\mathrm{s.t.}&&x_{i}-z=0,\:i=1,2,\cdots,N\end{aligned} xi,zmins.t.i=1∑Nϕi(xi)xi−z=0,i=1,2,⋯,N在这里注意,从形式上看全局一致性问题仍然具有问题 (8.6.1) 的结构:如果令
x = ( x 1 T , x 2 T , ⋯ , x N T ) T x=(x_1^\mathrm{T},x_2^\mathrm{T},\cdots,x_N^\mathrm{T})^\mathrm{T} x=(x1T,x2T,⋯,xNT)T以及
f 1 ( x ) = ∑ i = 1 N ϕ i ( x i ) , f 2 ( z ) = 0 , f_1(x)=\sum_{i=1}^N\phi_i(x_i),\quad f_2(z)=0, f1(x)=i=1∑Nϕi(xi),f2(z)=0,则此问题可以化为
min x , z f 1 ( x ) + f 2 ( z ) , s . t . A 1 x − A 2 z = 0 , \begin{aligned}&\min_{x,z}\quad f_{1}(x)+f_{2}(z),\\&\mathrm{s.t.}\quad A_{1}x-A_{2}z=0,\end{aligned} x,zminf1(x)+f2(z),s.t.A1x−A2z=0,其中矩阵 A 1 , A 2 A_1,A_2 A1,A2 定义为:
A 1 = [ I I ⋱ I ] , A 2 = [ I I ⋮ I ] . A_1=\begin{bmatrix}I&&&&\\&I&&&\\&&\ddots&&\\&&&I\end{bmatrix},\quad A_2=\begin{bmatrix}I\\I\\\vdots\\I\end{bmatrix}. A1= II⋱I ,A2= II⋮I .在全局一致性问题的例子中,我们将问题重写为具有两个变量块的形式,而不是简单地将问题 (8.6.1) 推广为多个变量块的形式.
例 8.23 共享问题 (Sharing Problem)
min x i ∑ i = 1 N f i ( x i ) + g ( ∑ i = 1 N x i ) \min_{x_i}\quad\sum_{i=1}^Nf_i(x_i)+g\left(\sum_{i=1}^Nx_i\right) ximini=1∑Nfi(xi)+g(i=1∑Nxi)为了使目标函数可分,我们将 g g g 的变量 x i x_i xi 分别复制一份为 z i z_i zi, 那么该问题转化为
min x i , z i ∑ i = 1 N f i ( x i ) + g ( ∑ i = 1 N z i ) s . t . x i − z i = 0 , i = 1 , 2 , ⋯ , N . \min\limits_{x_i,z_i}\quad\sum\limits_{i=1}^Nf_i(x_i)+g\left(\sum\limits_{i=1}^Nz_i\right)\\ \mathrm{s.t.}\quad x_i-z_i=0,\:i=1,2,\cdots,N. xi,zimini=1∑Nfi(xi)+g(i=1∑Nzi)s.t.xi−zi=0,i=1,2,⋯,N.
下面给出交替方向乘子法(alternating direction method of multipliers, ADMM) 的迭代格式,首先写出问题 (8.6.1) 的增广拉格朗日函数
L
ρ
(
x
1
,
x
2
,
y
)
=
f
1
(
x
1
)
+
f
2
(
x
2
)
+
y
T
(
A
1
x
1
+
A
2
x
2
−
b
)
+
ρ
2
∥
A
1
x
1
+
A
2
x
2
−
b
∥
2
2
(
8.6.2
)
\begin{aligned}L_{\rho}(x_{1},x_{2},y)=f_{1}(x_{1})+f_{2}(x_{2})+y^{\mathrm{T}}(A_{1}x_{1}+A_{2}x_{2}-b)+\frac{\rho}{2}\|A_{1}x_{1}+A_{2}x_{2}-b\|_{2}^{2}\end{aligned}\qquad(8.6.2)
Lρ(x1,x2,y)=f1(x1)+f2(x2)+yT(A1x1+A2x2−b)+2ρ∥A1x1+A2x2−b∥22(8.6.2)
其中
ρ
>
0
\rho>0
ρ>0 是二次罚项的系数. 常见的求解带约束问题的增广拉格朗日函数法为如下更新:
(
x
1
k
+
1
,
x
2
k
+
1
)
=
arg min
x
1
,
x
2
L
ρ
(
x
1
,
x
2
,
y
k
)
(
8.6.3
)
y
k
+
1
=
y
k
+
τ
ρ
(
A
1
x
1
k
+
1
+
A
2
x
2
k
+
1
−
b
)
(
8.6.4
)
\begin{aligned}(x_1^{k+1},x_2^{k+1})&=\argmin_{x_1,x_2}L_\rho(x_1,x_2,y^k)\qquad(8.6.3) \\y^{k+1}&=y^k+\tau\rho(A_1x_1^{k+1}+A_2x_2^{k+1}-b)\qquad(8.6.4)\end{aligned}
(x1k+1,x2k+1)yk+1=x1,x2argminLρ(x1,x2,yk)(8.6.3)=yk+τρ(A1x1k+1+A2x2k+1−b)(8.6.4)
其中
τ
\tau
τ 为步长.
交替方向乘子法的基本思路:第一步迭代 (8.6.3) 同时对
x
1
x_1
x1 和
x
2
x_2
x2 进行优化有时候比较困难,而固定一个变量求解关于另一个变量的极小问题可能比较简单,因此我们可以考虑对
x
1
x_1
x1 和
x
2
x_2
x2 交替求极小. 其迭代格式可以总结如下:
x
1
k
+
1
=
arg min
x
1
L
ρ
(
x
1
,
x
2
k
,
y
k
)
(
8.6.5
)
x
2
k
+
1
=
arg min
x
2
L
ρ
(
x
1
k
+
1
,
x
2
,
y
k
)
(
8.6.6
)
y
k
+
1
=
y
k
+
τ
ρ
(
A
1
x
1
k
+
1
+
A
2
x
2
k
+
1
−
b
)
(
8.6.7
)
\begin{aligned}&x_{1}^{k+1}=\argmin_{x_{1}}L_{\rho}(x_{1},x_{2}^{k},y^{k})&\qquad(8.6.5)\\&x_{2}^{k+1}=\argmin_{x_{2}}L_{\rho}(x_{1}^{k+1},x_{2},y^{k})&\qquad(8.6.6)\\&y^{k+1}=y^{k}+\tau\rho(A_{1}x_{1}^{k+1}+A_{2}x_{2}^{k+1}-b)&\qquad(8.6.7)\end{aligned}
x1k+1=x1argminLρ(x1,x2k,yk)x2k+1=x2argminLρ(x1k+1,x2,yk)yk+1=yk+τρ(A1x1k+1+A2x2k+1−b)(8.6.5)(8.6.6)(8.6.7)
其中 τ \tau τ 为步长,通常取值于 ( 0 , 1 + 5 2 ] \left(0,\displaystyle\frac{1+\sqrt{5}}{2}\right] (0,21+5].
观察交替方向乘子法的迭代格式,第一步固定
x
2
,
y
x_2,y
x2,y 对
x
1
x_1
x1 求极小;第二步固定
x
1
,
y
x_1,y
x1,y 对
x
2
x_2
x2 求极小;第三步更新拉格朗日乘子
y
y
y. 这一迭代格式和之前讨论的交替极小化方法 (8.5.9) 非常相似. 它们的区别是交替极小化方法的第一步是针对拉格朗日函数求极小,而 ADMM 的第一步将其换成了增广拉格朗日函数. 虽然从形式上看两个算法只是略有差别,但这种改变会带来截然不同的算法表现. ADMM 的一个最直接的改善就是去掉了目标函数
f
1
(
x
)
f_1(x)
f1(x) 强凸的要求,其本质还是由于它引入了二次罚项. 而在交替极小化方法中我们要求
f
(
x
)
f(x)
f(x) 为强凸函数.
需要注意的是,虽然交替方向乘子法引入了二次罚项,但对一般的闭凸函数
f
1
f_1
f1 和
f
2
f_2
f2, 迭代格式 (8.6.5) 和迭代格式 (8.6.6) 在某些特殊情况下仍然不是良定义的. 本节假设每个子问题的解均是存在且唯一的,注意这个假设对一般的闭凸函数是不成立的.
与无约束优化问题不同,交替方向乘子法针对的问题 (8.6.1) 是带约束的优化问题,因此算法的收敛准则应当借助约束优化问题的最优性条件 (KKT 条件). 因为
f
1
,
f
2
f_1,f_2
f1,f2 均为闭凸函数,约束为线性约束,所以当 Slater 条件成立时,可以使用凸优化问题的 KKT 条件来作为交替方向乘子法的收敛准则. 问题 (8.6.1) 的拉格朗日函数为
L
(
x
1
,
x
2
,
y
)
=
f
1
(
x
1
)
+
f
2
(
x
2
)
+
y
T
(
A
1
x
1
+
A
2
x
2
−
b
)
L(x_1,x_2,y)=f_1(x_1)+f_2(x_2)+y^\mathrm{T}(A_1x_1+A_2x_2-b)
L(x1,x2,y)=f1(x1)+f2(x2)+yT(A1x1+A2x2−b)
根据最优性条件定理, 若
x
1
∗
,
x
2
∗
x_1^*,x_2^*
x1∗,x2∗ 为问题 (8.6.1) 的最优解,
y
∗
y^*
y∗ 为对应的拉格朗日乘子,则以下条件满足:
0
∈
∂
x
1
L
(
x
1
∗
,
x
2
∗
,
y
∗
)
=
∂
f
1
(
x
1
∗
)
+
A
1
T
y
∗
(
8.6.8
a
)
0
∈
∂
x
2
L
(
x
1
∗
,
x
2
∗
,
y
∗
)
=
∂
f
2
(
x
2
∗
)
+
A
2
T
y
∗
(
8.6.8
b
)
A
1
x
1
∗
+
A
2
x
2
∗
=
b
(
8.6.8
c
)
\begin{aligned}0\in\partial_{x_{1}}L(x_{1}^{*},x_{2}^{*},y^{*})&=\partial f_{1}(x_{1}^{*})+A_{1}^{\mathrm{T}}y^{*}&\qquad(8.6.8a) \\0\in\partial_{x_{2}}L(x_{1}^{*},x_{2}^{*},y^{*})&=\partial f_{2}(x_{2}^{*})+A_{2}^{\mathrm{T}}y^{*}&\qquad(8.6.8b) \\A_1x_1^*+A_2x_2^*&=b&\qquad(8.6.8c)\end{aligned}
0∈∂x1L(x1∗,x2∗,y∗)0∈∂x2L(x1∗,x2∗,y∗)A1x1∗+A2x2∗=∂f1(x1∗)+A1Ty∗=∂f2(x2∗)+A2Ty∗=b(8.6.8a)(8.6.8b)(8.6.8c)
在这里条件 (8.6.8c) 又称为原始可行性条件,条件 (8.6.8a) 和条件 (8.6.8b) 又称为对偶可行性条件.由于问题中只含等式约束,KKT 条件中的互补松弛条件可以不加考虑.在 ADMM 迭代中,我们得到的迭代点实际为
(
x
1
k
,
x
2
k
,
y
k
)
(x_1^k,x_2^k,y^k)
(x1k,x2k,yk), 因此收敛准则应当针对
(
x
1
k
,
x
2
k
,
y
k
)
(x_1^k,x_2^k,y^k)
(x1k,x2k,yk) 检测条件 (8.6.8).接下来讨论如何具体计算这些收敛准则.
一般来说,原始可行性条件 (8.6.8c) 在迭代中是不满足的,为了检测这个条件,需要计算原始可行性残差的模长,这一计算是比较容易的.
r
k
=
A
1
x
1
k
+
A
2
x
2
k
−
b
r^k=A_1x_1^k+A_2x_2^k-b
rk=A1x1k+A2x2k−b
下面来看两个对偶可行性条件.考虑 ADMM 迭代更新
x
2
x_2
x2 的步骤
x
2
k
=
arg min
x
{
f
2
(
x
)
+
ρ
2
∥
A
1
x
1
k
+
A
2
x
−
b
+
y
k
−
1
ρ
∥
2
}
x_2^k=\argmin\limits_x\left\{f_2(x)+\frac{\rho}{2}\left\|A_1x_1^k+A_2x-b+\frac{y^{k-1}}{\rho}\right\|^2\right\}
x2k=xargmin{f2(x)+2ρ
A1x1k+A2x−b+ρyk−1
2}
假设这一子问题有显式解或能够精确求解,根据最优性条件推出
0
∈
∂
f
2
(
x
2
k
)
+
A
2
T
[
y
k
−
1
+
ρ
(
A
1
x
1
k
+
A
2
x
2
k
−
b
)
]
(
8.6.9
)
0\in\partial f_2(x_2^k)+A_2^\mathrm{T}[y^{k-1}+\rho(A_1x_1^k+A_2x_2^k-b)]\qquad(8.6.9)
0∈∂f2(x2k)+A2T[yk−1+ρ(A1x1k+A2x2k−b)](8.6.9)
注意到当 ADMM 步长
τ
=
1
\tau=1
τ=1 时,根据迭代 (8.6.7) 可知上式方括号中的表达式就是
y
k
y^k
yk, 最终有
0
∈
∂
f
2
(
x
2
k
)
+
A
2
T
y
k
0\in\partial f_2(x_2^k)+A_2^\mathrm{T}y^k
0∈∂f2(x2k)+A2Tyk
这恰好就是条件 (8.6.8b). 上面的分析说明在 ADMM 迭代过程中,若
x
2
x_{2}
x2 的更新能取到精确解且步长
τ
=
1
\tau=1
τ=1, 对偶可行性条件 (8.6.8b) 是自然成立的,因此无需针对条件 (8.6.8b) 单独验证最优性条件. 然而,在迭代过程中条件 (8.6.8a) 却不能自然满足. 实际上,由
x
1
x_1
x1 的更新公式
x
1
k
=
arg min
x
{
f
1
(
x
)
+
ρ
2
∥
A
1
x
+
A
2
x
2
k
−
1
−
b
+
y
k
−
1
ρ
∥
2
}
x_1^k=\argmin\limits_x\left\{f_1(x)+\frac{\rho}{2}\|A_1x+A_2x_2^{k-1}-b+\frac{y^{k-1}}{\rho}\|^2\right\}
x1k=xargmin{f1(x)+2ρ∥A1x+A2x2k−1−b+ρyk−1∥2}
假设子问题能精确求解,根据最优性条件
0
∈
∂
f
1
(
x
1
k
)
+
A
1
T
[
ρ
(
A
1
x
1
k
+
A
2
x
2
k
−
1
−
b
)
+
y
k
−
1
]
0\in\partial f_1(x_1^k)+A_1^\mathrm{T}[\rho(A_1x_1^k+A_2x_2^{k-1}-b)+y^{k-1}]
0∈∂f1(x1k)+A1T[ρ(A1x1k+A2x2k−1−b)+yk−1]
注意,这里
x
2
x_{2}
x2 上标是
k
−
1
k-1
k−1, 因此根据 ADMM 的第三式 (8.6.7), 同样取
τ
=
1
\tau=1
τ=1, 有
0
∈
∂
f
1
(
x
1
k
)
+
A
1
T
(
y
k
+
ρ
A
2
(
x
2
k
−
1
−
x
2
k
)
)
(
8.6.10
)
0\in\partial f_1(x_1^k)+A_1^\mathrm{T}(y^k+\rho A_2(x_2^{k-1}-x_2^k))\qquad(8.6.10)
0∈∂f1(x1k)+A1T(yk+ρA2(x2k−1−x2k))(8.6.10)
对比条件 (8.6.8a) 可知多出来的项为
ρ
A
1
T
A
2
(
x
2
k
−
1
−
x
2
k
)
\rho A_1^{\mathrm{T}}A_2(x_2^{k-1}-x_2^k)
ρA1TA2(x2k−1−x2k), 因此要检测对偶可行性只需要检测残差
s
k
=
A
1
T
A
2
(
x
2
k
−
1
−
x
2
k
)
s^k=A_1^\mathrm{T}A_2(x_2^{k-1}-x_2^k)
sk=A1TA2(x2k−1−x2k)
是否充分小. 综上,当
x
2
x_2
x2 更新取到精确解且
τ
=
1
\tau=1
τ=1 时,判断 ADMM 是否收敛只需要检测前述两个残差
r
k
,
s
k
r^k,s^k
rk,sk 是否充分小:
0
≈
∥
r
k
∥
=
∥
A
1
x
1
k
+
A
2
x
2
k
−
b
∥
(
原始可行性
)
0
≈
∥
s
k
∥
=
∥
A
1
T
A
2
(
x
2
k
−
1
−
x
2
k
)
∥
(
对偶可行性
)
(
8.6.11
)
\begin{aligned}0\approx \| r^k\| = \| A_1x_1^k+ A_2x_2^k- b\|\quad(原始可行性) \\0\approx \| s^k\| = \| A_1^{\mathrm{T}}A_2( x_2^{k- 1}- x_2^k) \|\quad(对偶可行性)\end{aligned}\qquad(8.6.11)
0≈∥rk∥=∥A1x1k+A2x2k−b∥(原始可行性)0≈∥sk∥=∥A1TA2(x2k−1−x2k)∥(对偶可行性)(8.6.11)
8.6.2 Douglas-Rachford Splitting 算法
Douglas-Rachford Splitting (DRS) 算法是一类非常重要的算子分裂算法. 它可以用于求解下面的无约束优化问题:
min
x
ψ
(
x
)
=
f
(
x
)
+
h
(
x
)
(
8.6.12
)
\min_x\quad\psi(x)=f(x)+h(x)\qquad(8.6.12)
xminψ(x)=f(x)+h(x)(8.6.12)
其中
f
f
f 和
h
h
h 是闭凸函数. DRS 算法的迭代格式是
x
k
+
1
=
p
r
o
x
t
h
(
z
k
)
(
8.6.13
)
y
k
+
1
=
p
r
o
x
t
f
(
2
x
k
+
1
−
z
k
)
(
8.6.14
)
z
k
+
1
=
z
k
+
y
k
+
1
−
x
k
+
1
(
8.6.15
)
\begin{aligned}&x^{k+1}=\mathrm{prox}_{th}(z^{k})&\qquad(8.6.13)\\&y^{k+1}=\mathrm{prox}_{tf}(2x^{k+1}-z^{k})&\qquad(8.6.14)\\&z^{k+1}=z^{k}+y^{k+1}-x^{k+1}&\qquad(8.6.15)\end{aligned}
xk+1=proxth(zk)yk+1=proxtf(2xk+1−zk)zk+1=zk+yk+1−xk+1(8.6.13)(8.6.14)(8.6.15)
其中
t
t
t 是一个正的常数. 我们还可以通过一系列变形来得到 DRS 格式的等价迭代. 首先在原始 DRS 格式中按照
y
,
z
,
x
y,z,x
y,z,x 的顺序进行更新,则有
y
k
+
1
=
p
r
o
x
t
f
(
2
x
k
−
z
k
)
z
k
+
1
=
z
k
+
y
k
+
1
−
x
k
x
k
+
1
=
p
r
o
x
t
h
(
z
k
+
1
)
\begin{aligned}&y^{k+1}=\mathrm{prox}_{tf}(2x^{k}-z^{k})\\&z^{k+1}=z^{k}+y^{k+1}-x^{k}\\&x^{k+1}=\mathrm{prox}_{th}(z^{k+1})\end{aligned}
yk+1=proxtf(2xk−zk)zk+1=zk+yk+1−xkxk+1=proxth(zk+1)
引入辅助变量
w
k
=
z
k
−
x
k
w^k=z^k-x^k
wk=zk−xk, 并注意到上面迭代中变量
z
k
,
z
k
+
1
z^k,z^{k+1}
zk,zk+1 可以消去,则得到 DRS 算法的等价迭代格式
y
k
+
1
=
p
r
o
x
t
f
(
x
k
−
w
k
)
(
8.6.16
)
x
k
+
1
=
p
r
o
x
t
h
(
w
k
+
y
k
+
1
)
(
8.6.17
)
w
k
+
1
=
w
k
+
y
k
+
1
−
x
k
+
1
(
8.6.18
)
\begin{aligned}y^{k+1}&=\mathrm{prox}_{tf}(x^{k}-w^{k})&\qquad(8.6.16)\\x^{k+1}&=\mathrm{prox}_{th}(w^{k}+y^{k+1})&\qquad(8.6.17)\\w^{k+1}&=w^{k}+y^{k+1}-x^{k+1}&\qquad(8.6.18)\end{aligned}
yk+1xk+1wk+1=proxtf(xk−wk)=proxth(wk+yk+1)=wk+yk+1−xk+1(8.6.16)(8.6.17)(8.6.18)
DRS 格式还可以写成关于
z
k
z^k
zk 的不动点迭代的形式
z
k
+
1
=
T
(
z
k
)
(
8.6.19
)
z^{k+1}=T(z^k)\qquad(8.6.19)
zk+1=T(zk)(8.6.19)
其中 T ( z ) = z + p r o x t f ( 2 p r o x t h ( z ) − z ) − p r o x t h ( z ) T(z)=z+\mathrm{prox}_{tf}\left(2\mathrm{prox}_{th}(z)-z\right)-\mathrm{prox}_{th}(z) T(z)=z+proxtf(2proxth(z)−z)−proxth(z)
将 DRS 格式写成不动点迭代的形式是有好处的:第一,它去掉了迭代中的 x k , y k x^k,y^k xk,yk 变量,使得算法形式更加简洁;第二,对不动点迭代的收敛性研究有一些常用的工具和技术手段,例如泛函分析中的压缩映射原理;第三,针对不动点迭代可写出很多种不同类型的加速算法.
下面的定理给出 T T T 的不动点与 f + h f+h f+h 的极小值之间的关系:
定理8.14 (1) 若 z z z 是 (8.6.19) 中 T T T 的一个不动点,即 z = T ( z ) z=T(z) z=T(z), 则 x = p r o x t h ( z ) x=\mathrm{prox}_{th}(z) x=proxth(z) 是问题 (8.6.12) 的一个最小值点.
(2) 若 x x x 是问题 (8.6.12) 的一个最小值点,则存在 u ∈ t ∂ f ( x ) ∩ ( − t ∂ h ( x ) ) u\in t\partial f(x)\cap(-t\partial h(x)) u∈t∂f(x)∩(−t∂h(x)), 且 x − u = T ( x − u ) x-u=T(x-u) x−u=T(x−u), 即 x − u x-u x−u 是 T T T 的一个不动点.
证明
(1) 如果 z z z 是 T T T 的一个不动点,即
z = T ( z ) = z + p r o x t f ( 2 p r o x t h ( z ) − z ) − p r o x t h ( z ) z=T(z)=z+\mathrm{prox}_{tf}\left(2\mathrm{prox}_{th}(z)-z\right)-\mathrm{prox}_{th}(z) z=T(z)=z+proxtf(2proxth(z)−z)−proxth(z)令 x = p r o x t h ( z ) x=\mathrm{prox}_{th}(z) x=proxth(z), 则
p r o x t f ( 2 x − z ) = x = p r o x t h ( z ) \mathrm{prox}_{tf}(2x-z)=x=\mathrm{prox}_{th}(z) proxtf(2x−z)=x=proxth(z)由邻近算子的定义和最优性条件得
x − z ∈ t ∂ f ( x ) , z − x ∈ t ∂ h ( x ) . x-z\in t\partial f(x),\quad z-x\in t\partial h(x). x−z∈t∂f(x),z−x∈t∂h(x).因此,
0 ∈ t ∂ f ( x ) + t ∂ h ( x ) . 0\in t\partial f(x)+t\partial h(x). 0∈t∂f(x)+t∂h(x).根据凸优化问题的一阶充要条件知 x = p r o x t h ( z ) x=\mathrm{prox}_{th}(z) x=proxth(z) 是问题 (8.6.12) 的一个最小值点.
(2) 因为 x x x 是问题 (8.6.12) 一个最小值点,根据一阶充要条件,
0 ∈ t ∂ f ( x ) + t ∂ h ( x ) 0\in t\partial f(x)+t\partial h(x) 0∈t∂f(x)+t∂h(x)这等价于存在 u ∈ t ∂ f ( x ) ∩ ( − t ∂ h ( x ) ) u\in t\partial f(x)\cap(-t\partial h(x)) u∈t∂f(x)∩(−t∂h(x)). 由定理 8.2,
u ∈ t ∂ f ( x ) ⟺ x = p r o x t f ( x + u ) u ∈ ( − t ∂ h ( x ) ) ⟺ x = p r o x t h ( x − u ) \begin{aligned}u\in t\partial f(x)&\Longleftrightarrow x=\mathrm{prox}_{tf}(x+u) \\u\in(-t\partial h(x))&\Longleftrightarrow x=\mathrm{prox}_{th}(x-u)\end{aligned} u∈t∂f(x)u∈(−t∂h(x))⟺x=proxtf(x+u)⟺x=proxth(x−u)然后可以得到
p r o x t f ( 2 p r o x t h ( x − u ) − ( x − u ) ) − p r o x t h ( x − u ) = p r o x t f ( 2 x − x + u ) − x = x − x = 0 \begin{aligned} &\mathrm{prox}_{tf}\left(2\ \mathrm{prox}_{th}(x-u)-(x-u)\right)-\mathrm{prox}_{th}(x-u)\\=&\mathrm{prox}_{tf}(2x-x+u)-x=x-x=0\end{aligned} =proxtf(2 proxth(x−u)−(x−u))−proxth(x−u)proxtf(2x−x+u)−x=x−x=0即
x − u = T ( x − u ) x-u=T(x-u) x−u=T(x−u)
对于不动点迭代,我们可以通过添加松弛项来加快收敛速度,即
z
k
+
1
=
z
k
+
ρ
(
T
(
z
k
)
−
z
k
)
z^{k+1}=z^k+\rho(T(z^k)-z^k)
zk+1=zk+ρ(T(zk)−zk)
其中,当
1
<
ρ
<
2
1<\rho<2
1<ρ<2 时是超松弛,
0
<
ρ
<
1
0<\rho<1
0<ρ<1 是欠松弛. 从而得到 DRS 算法的松弛版本
x
k
+
1
=
p
r
o
x
t
h
(
z
k
)
y
k
+
1
=
p
r
o
x
t
f
(
2
x
k
+
1
−
z
k
)
z
k
+
1
=
z
k
+
ρ
(
y
k
+
1
−
x
k
+
1
)
\begin{aligned}&x^{k+1}=\mathrm{prox}_{th}(z^{k})\\&y^{k+1}=\mathrm{prox}_{tf}(2x^{k+1}-z^{k})\\&z^{k+1}=z^{k}+\rho(y^{k+1}-x^{k+1})\end{aligned}
xk+1=proxth(zk)yk+1=proxtf(2xk+1−zk)zk+1=zk+ρ(yk+1−xk+1)
其等价形式为
y
k
+
1
=
p
r
o
x
t
f
(
x
k
−
w
k
)
x
k
+
1
=
p
r
o
x
t
h
(
(
1
−
ρ
)
x
k
+
ρ
y
k
+
1
+
w
k
)
w
k
+
1
=
w
k
+
ρ
y
k
+
1
+
(
1
−
ρ
)
x
k
−
x
k
+
1
\begin{aligned}&y^{k+1}=\mathrm{prox}_{tf}(x^{k}-w^{k})\\&x^{k+1}=\mathrm{prox}_{th}((1-\rho)x^{k}+\rho y^{k+1}+w^{k})\\&w^{k+1}=w^{k}+\rho y^{k+1}+(1-\rho)x^{k}-x^{k+1}\end{aligned}
yk+1=proxtf(xk−wk)xk+1=proxth((1−ρ)xk+ρyk+1+wk)wk+1=wk+ρyk+1+(1−ρ)xk−xk+1
DRS 算法和 ADMM 有一定的等价关系. 考虑本章开始引入的可分的凸问题 (8.6.1):
min
x
1
,
x
2
f
1
(
x
1
)
+
f
2
(
x
2
)
s
.
t
.
A
1
x
1
+
A
2
x
2
=
b
\begin{aligned}&\min_{x_{1},x_{2}}\quad f_{1}(x_{1})+f_{2}(x_{2}) \\&\mathrm{s.t.}\quad A_{1}x_{1}+A_{2}x_{2}=b\end{aligned}
x1,x2minf1(x1)+f2(x2)s.t.A1x1+A2x2=b
它的对偶问题为无约束复合优化问题
min
z
b
T
z
+
f
1
∗
(
−
A
1
T
z
)
⏟
f
(
z
)
+
f
2
∗
(
−
A
2
T
z
)
⏟
h
(
z
)
(
8.6.20
)
\min_z\quad\underbrace{b^\mathrm{T}z+f_1^*(-{A_1}^\mathrm{T}z)}_{f(z)}+\underbrace{f_2^*(-{A_2}^\mathrm{T}z)}_{h(z)}\qquad(8.6.20)
zminf(z)
bTz+f1∗(−A1Tz)+h(z)
f2∗(−A2Tz)(8.6.20)
根据问题 (8.6.20) 的结构拆分出 f ( z ) f(z) f(z) 和 h ( z ) h(z) h(z), 我们对该问题使用 DRS 算法求解. 下面这个定理表明,对原始问题 (8.6.1) 使用 ADMM 求解就等价于将 DRS 算法应用在对偶问题 (8.6.20) 上.
定理 8.15 如果 w 1 = − t A 2 x 2 0 w^1=-tA_2x_2^0 w1=−tA2x20, 那么对问题 (8.6.20) 应用迭代格式 (8.6.16)-(8.6.18) 等价于运用 ADMM 到问题 (8.6.1).
证明
对于迭代格式 (8.6.16) y k + 1 = p r o x t f ( x k − w k ) , y^{k+1}=\mathrm{prox}_{tf}(x^{k}-w^{k}), yk+1=proxtf(xk−wk),其最优性条件为
0 ∈ ∂ ( 1 2 t ∥ y − ( x k − w k ) ∥ 2 2 + f ( y ) ) ∣ y = y k + 1 0\in\partial\left.\left(\frac{1}{2t}\|y-(x^k-w^k)\|_2^2+f(y)\right)\right|_{y=y^{k+1}} 0∈∂(2t1∥y−(xk−wk)∥22+f(y)) y=yk+1简化为: 0 ∈ 1 t ( y k + 1 − ( x k − w k ) ) + ∂ f ( y k + 1 ) 0\in\frac 1t(y^{k+1}-(x^k-w^k))+\partial f(y^{k+1}) 0∈t1(yk+1−(xk−wk))+∂f(yk+1)
由于 f ( z ) = b T z + f 1 ∗ ( − A 1 T z ) f(z)=b^\mathrm{T}z+f_1^*(-A_1^\mathrm{T}z) f(z)=bTz+f1∗(−A1Tz), 有 ∂ f ( z ) = b − A 1 ∂ f 1 ∗ ( − A 1 T z ) \partial f(z)=b-A_1\partial f_1^*(-A_1^\text{T}z) ∂f(z)=b−A1∂f1∗(−A1Tz)
因此, 最优性条件变为:
0 ∈ 1 t ( y k + 1 − ( x k − w k ) ) + b − A 1 ∂ f 1 ∗ ( − A 1 T y k + 1 ) 0\in\frac{1}{t}(y^{k+1}-(x^{k}-w^{k}))+b-A_{1}\partial f_{1}^{*}(-A_{1}^{\mathrm{T}}y^{k+1}) 0∈t1(yk+1−(xk−wk))+b−A1∂f1∗(−A1Tyk+1)即得到
0 ∈ t b − t A 1 ∂ f 1 ∗ ( − A 1 T y k + 1 ) − x k + w k + y k + 1 0\in tb-tA_1\partial f_1^*(-A_1^\mathrm{T}y^{k+1})-x^k+w^k+y^{k+1} 0∈tb−tA1∂f1∗(−A1Tyk+1)−xk+wk+yk+1上式等价于存在 x 1 k ∈ ∂ f 1 ∗ ( − A 1 T y k + 1 ) x_1^k\in\partial f_1^*(-A_1^{\mathrm{T}}y^{k+1}) x1k∈∂f1∗(−A1Tyk+1), 使得
y k + 1 = x k − w k + t ( A 1 x 1 k − b ) ( 8.6.21 ) y^{k+1}=x^k-w^k+t(A_1x_1^k-b)\qquad(8.6.21) yk+1=xk−wk+t(A1x1k−b)(8.6.21)根据命题 8.2, − A 1 T y k + 1 ∈ ∂ f 1 ( x 1 k ) -A_1^{\mathrm{T}}y^{k+1}\in\partial f_1(x_1^k) −A1Tyk+1∈∂f1(x1k), 故
− A 1 T ( x k − w k + t ( A 1 x 1 k − b ) ) ∈ ∂ f 1 ( x 1 k ) -A_1^\mathrm{T}(x^k-w^k+t(A_1x_1^k-b))\in\partial f_1(x_1^k) −A1T(xk−wk+t(A1x1k−b))∈∂f1(x1k)这就是如下更新
x 1 k = arg min x 1 { f 1 ( x 1 ) + ( x k ) T ( A 1 x 1 − b ) + t 2 ∥ A 1 x 1 − b − w k t ∥ 2 2 } x_1^k=\argmin_{x_1}\left\{f_1(x_1)+{(x^k)}^\mathrm{T}(A_1x_1-b)+\frac{t}{2}\|A_1x_1-b-\frac{w^k}{t}\|_2^2\right\} x1k=x1argmin{f1(x1)+(xk)T(A1x1−b)+2t∥A1x1−b−twk∥22}的最优性条件.
类似地,迭代 (8.6.17) 的最优性条件为
0 ∈ t A 2 ∂ f 2 ∗ ( − A 2 T x k + 1 ) + w k + y k + 1 − x k + 1 0\in tA_2\partial f_2^*(-A_2^\mathrm{T}x^{k+1})+w^k+y^{k+1}-x^{k+1} 0∈tA2∂f2∗(−A2Txk+1)+wk+yk+1−xk+1其等价于存在 x 2 k ∈ ∂ f 2 ∗ ( − A 2 T x k + 1 ) x_2^k\in\partial f_2^*(-A_2^{\mathrm{T}}x^{k+1}) x2k∈∂f2∗(−A2Txk+1), 使得
x k + 1 = x k + t ( A 1 x 1 k + A 2 x 2 k − b ) ( 8.6.22 ) x^{k+1}=x^k+t(A_1x_1^k+A_2x_2^k-b)\qquad(8.6.22) xk+1=xk+t(A1x1k+A2x2k−b)(8.6.22)同样地,根据命题 8.2, − A 2 T x k + 1 ∈ ∂ f 2 ( x 2 k ) -A_2^{\mathrm{T}}x^{k+1}\in\partial f_2(x_2^k) −A2Txk+1∈∂f2(x2k), 所以可得
− A 2 T ( x k + t ( A 1 x 1 k + A 2 x 2 k − b ) ) ∈ ∂ f 2 ( x 2 k ) -A_2^\mathrm{T}(x^k+t(A_1x_1^k+A_2x_2^k-b))\in\partial f_2(x_2^k) −A2T(xk+t(A1x1k+A2x2k−b))∈∂f2(x2k)其等价于
x 2 k = arg min x 2 { f 2 ( x 2 ) + ( x k ) T ( A 2 x 2 ) + t 2 ∥ A 1 x 1 k + A 2 x 2 − b ∥ 2 2 } x_2^k=\argmin_{x_2}\left\{f_2(x_2)+{(x^k)}^{\mathrm{T}}(A_2x_2)+\frac{t}{2}\|A_1x_1^k+A_2x_2-b\|_2^2\right\} x2k=x2argmin{f2(x2)+(xk)T(A2x2)+2t∥A1x1k+A2x2−b∥22}由 (8.6.21) 式和 (8.6.22) 式可得 w w w- 更新转化为 w k + 1 = − t A 2 x 2 k w^{k+1}=-tA_{2}x_{2}^{k} wk+1=−tA2x2k. 令 z k = x k + 1 z^k=x^{k+1} zk=xk+1, 总结上面的更新,可得
x 1 k = arg min x 1 { f 1 ( x 1 ) + ( z k − 1 ) T A 1 x 1 + t 2 ∥ A 1 x 1 + A 2 x 2 k − 1 − b ∥ 2 } x 2 k = arg min x 2 { f 2 ( x 2 ) + ( z k − 1 ) T A 2 x 2 + t 2 ∥ A 1 x 1 k + A 2 x 2 − b ∥ 2 } z k = z k − 1 + t ( A 1 x 1 k + A 2 x 2 k − b ) \begin{aligned} &x_1^k =\argmin_{x_1}\left\{f_{1}(x_{1})+(z^{k-1})^{\mathrm{T}}A_{1}x_{1}+\frac{t}{2}\|A_{1}x_{1}+A_{2}x_{2}^{k-1}-b\|^{2}\right\}\\ &x_2^k =\argmin_{x_2}\left\{f_{2}(x_{2})+(z^{k-1})^{\mathrm{T}}A_{2}x_{2}+\frac{t}{2}\|A_{1}x_{1}^{k}+A_{2}x_{2}-b\|^{2}\right\}\\ &z^{k} =z^{k-1}+t\left(A_{1}x_{1}^{k}+A_{2}x_{2}^{k}-b\right) \end{aligned} x1k=x1argmin{f1(x1)+(zk−1)TA1x1+2t∥A1x1+A2x2k−1−b∥2}x2k=x2argmin{f2(x2)+(zk−1)TA2x2+2t∥A1x1k+A2x2−b∥2}zk=zk−1+t(A1x1k+A2x2k−b)这就是交替方向乘子法应用到问题 (8.6.1),其中罚因子 ρ = t \rho = t ρ=t,步长 τ = 1 \tau = 1 τ=1.
以上论证过程均可以反推,因此等价性成立.
8.6.3 常见变形和技巧
本小节将给出交替方向乘子法的一些变形以及实现交替方向乘子法的一些技巧.
1. 线性化
我们构造 ADMM 的初衷是将自变量拆分,最终使得关于
x
1
x_1
x1 和
x
2
x_2
x2 的子问题有显式解.但是在实际应用中,有时子问题并不容易求解,或者没有必要精确求解. 下面介绍如何寻找子问题的近似.
不失一般性,我们考虑第一个子问题,即
min
x
1
f
1
(
x
1
)
+
ρ
2
∥
A
1
x
1
−
v
k
∥
2
(
8.6.23
)
\min\limits_{x_1}\quad f_1(x_1)+\frac{\rho}{2}\|A_1x_1-v^k\|^2\qquad(8.6.23)
x1minf1(x1)+2ρ∥A1x1−vk∥2(8.6.23)
其中
v
k
=
b
−
A
2
x
2
k
−
1
ρ
y
k
(
8.6.24
)
v^k=b-A_2x_2^k-\frac{1}{\rho}y^k\qquad(8.6.24)
vk=b−A2x2k−ρ1yk(8.6.24)
当子问题不能显式求解时,可采用线性化的方法近似求解问题 (8.6.23). 线性化技巧实际上是使用近似点项对子问题目标函数进行二次近似. 当子问题目标函数可微时,线性化将问题 (8.6.23) 变为
x
1
k
+
1
=
arg min
x
1
{
(
∇
f
1
(
x
1
k
)
+
ρ
A
1
T
(
A
1
x
1
k
−
v
k
)
)
T
x
1
+
1
2
η
k
∥
x
1
−
x
k
∥
2
2
}
x_1^{k+1}=\argmin_{x_1}\left\{\left(\nabla f_1(x_1^k)+\rho A_1^\mathrm{T}\left(A_1x_1^k-v^k\right)\right)^\mathrm{T}x_1+\frac{1}{2\eta_k}\|x_1-x^k\|_2^2\right\}
x1k+1=x1argmin{(∇f1(x1k)+ρA1T(A1x1k−vk))Tx1+2ηk1∥x1−xk∥22}
其中
η
k
\eta_k
ηk 是步长参数,这等价于做一步梯度下降. 当目标函数不可微时,可以考虑只将二次项线性化,即
x
1
k
+
1
=
arg min
x
1
{
f
1
(
x
1
)
+
ρ
(
A
1
T
(
A
1
x
1
k
−
v
k
)
)
T
x
1
+
1
2
η
k
∥
x
1
−
x
k
∥
2
2
}
x_1^{k+1}=\argmin\limits_{x_1}\left\{f_1(x_1)+\rho\left(A_1^\mathrm{T}(A_1x_1^k-v^k)\right)^\mathrm{T}x_1+\frac{1}{2\eta_k}\|x_1-x^k\|_2^2\right\}
x1k+1=x1argmin{f1(x1)+ρ(A1T(A1x1k−vk))Tx1+2ηk1∥x1−xk∥22}
这等价于求解子问题 (8.6.23) 时做一步近似点梯度步. 若 f 1 ( x 1 ) f_1(x_1) f1(x1) 是可微函数与不可微函数的和时,也可将其可微部分线性化.
2. 缓存分解
如果目标函数中含二次函数,例如
f
1
(
x
1
)
=
1
2
∥
C
x
1
−
d
∥
2
2
f_1(x_1)=\displaystyle\frac{1}{2}\|Cx_1-d\|_2^2
f1(x1)=21∥Cx1−d∥22, 那么针对
x
1
x_1
x1 的更新 (8.6.5) 等价于求解线性方程组
(
C
T
C
+
ρ
A
1
T
A
1
)
x
1
=
C
T
d
+
ρ
A
1
T
v
k
(C^\mathrm{T}C+\rho A_1^\mathrm{T}A_1)x_1=C^\mathrm{T}d+\rho A_1^\mathrm{T}v^k
(CTC+ρA1TA1)x1=CTd+ρA1Tvk
虽然子问题有显式解,但是每步求解的复杂度仍然比较高,这时候可以考虑用缓存分解的方法. 首先对 C T C + ρ A 1 T A 1 C^\mathrm{T}C+\rho A_1^\mathrm{T}A_1 CTC+ρA1TA1 进行 Cholesky 分解并缓存分解的结果,在每步迭代中只需要求解简单的三角形方程组;当 ρ \rho ρ 发生更新时,就要重新进行分解. 特别地,当 C T C + ρ A 1 T A 1 C^\mathrm{T}C+\rho A_1^\mathrm{T}A_1 CTC+ρA1TA1 一部分容易求逆,另一部分是低秩的情形时,可以用 SMW 公式来求逆.
3. 优化转移
有时候为了方便求解子问题,可以用一个性质好的矩阵
D
D
D 近似二次项
A
1
T
A
1
A_1^\mathrm{T}A_1
A1TA1, 此时子问题 (8.6.23) 替换为
x
1
k
+
1
=
arg min
x
1
{
f
1
(
x
1
)
+
ρ
2
∥
A
1
x
1
−
v
k
∥
2
2
+
ρ
2
(
x
1
−
x
k
)
T
(
D
−
A
1
T
A
1
)
(
x
1
−
x
k
)
}
x_1^{k+1}=\argmin\limits_{x_1}\left\{f_1(x_1)+\frac{\rho}{2}\|A_1x_1-v^k\|_2^2+\frac{\rho}{2}(x_1-x^k)^{\mathrm{T}}(D-A_1^{\mathrm{T}}A_1)(x_1-x^k)\right\}
x1k+1=x1argmin{f1(x1)+2ρ∥A1x1−vk∥22+2ρ(x1−xk)T(D−A1TA1)(x1−xk)}
这种方法也称为优化转移. 通过选取合适的 D D D, 当计算 arg min x 1 { f 1 ( x 1 ) + ρ 2 x 1 T D x 1 } \argmin\limits_{x_1}\left\{f_1(x_1)+\displaystyle\frac{\rho}{2}x_1^\mathrm{T}Dx_1\right\} x1argmin{f1(x1)+2ρx1TDx1} 明显比计算 arg min x 1 { f 1 ( x 1 ) + ρ 2 x 1 T A 1 T A 1 x 1 } \argmin\limits_{x_1}\{f_1(x_1)+\displaystyle\frac{\rho}{2}x_{1}^{\mathrm{T}}A_{1}^{\mathrm{T}}A_{1}x_{1}\} x1argmin{f1(x1)+2ρx1TA1TA1x1} 要容易时,优化转移可以极大地简化子问题的计算. 特别地,当 D = η k ρ I D=\displaystyle\frac{\eta_{k}}{\rho}I D=ρηkI 时,优化转移等价于做单步的近似点梯度步.
4. 二次罚项系数的动态调节
在介绍 ADMM 时我们引入了原始可行性和对偶可行性 (分别用
∥
r
k
∥
\|r^k\|
∥rk∥ 和
∥
s
k
∥
\|s^k\|
∥sk∥ 度量), 见 (8.6.11) 式. 在实际求解过程中,二次罚项系数
ρ
\rho
ρ 太大会导致原始可行性
∥
r
k
∥
\|r^k\|
∥rk∥ 下降很快,但是对偶可行性
∥
s
k
∥
\|s^k\|
∥sk∥ 下降很慢;二次罚项系数太小,则会有相反的效果. 这样都会导致收敛比较慢或得到的解的可行性很差.
一个自然的想法是在每次迭代时动态调节惩罚系数
ρ
\rho
ρ 的大小,从而使得原始可行性和对偶可行性能够以比较一致的速度下降到零. 这种做法通常可以改善算法在实际中的收敛效果,以及使算法表现更少地依赖于惩罚系数的初始选择. 一个简单有效的方式是令
ρ
k
+
1
=
{
γ
p
ρ
k
,
∥
r
k
∥
>
μ
∥
s
k
∥
ρ
k
γ
d
,
∥
s
k
∥
>
μ
∥
r
k
∥
ρ
k
,
其他
\rho^{k+1}=\begin{cases}\gamma_p\rho^k,&\|r^k\|>\mu\|s^k\| \\\dfrac{\rho^k}{\gamma_d},&\|s^k\|>\mu\|r^k\| \\\rho^k,&\text{其他}\end{cases}
ρk+1=⎩
⎨
⎧γpρk,γdρk,ρk,∥rk∥>μ∥sk∥∥sk∥>μ∥rk∥其他
其中
μ
>
1
,
γ
p
>
1
,
γ
d
>
1
\mu>1,\gamma_{p}>1,\gamma_{d}>1
μ>1,γp>1,γd>1 是参数. 常见的选择为
μ
=
10
,
γ
p
=
γ
d
=
2
\mu=10,\gamma_{p}=\gamma_{d}=2
μ=10,γp=γd=2. 该惩罚参数更新方式背后的想法是在迭代过程中,将原始可行性
∥
r
k
∥
\left\|r^k\right\|
rk
和对偶可行性
∥
s
k
∥
\|s^k\|
∥sk∥ 保持在彼此的
μ
\mu
μ 倍内. 如果发现
∥
r
k
∥
\|r^k\|
∥rk∥ 或
∥
s
k
∥
\|s^k\|
∥sk∥ 下降过慢就应该相应增大或减小二次罚项系数
ρ
k
\rho^k
ρk. 但在改变
ρ
k
\rho^k
ρk 的时候需要注意,若之前利用了缓存分解的技巧,此时分解需要重新计算.
更一般地,我们可以考虑对每一个约束给一个不同的惩罚系数,甚至可以将增广拉格朗日函数 (8.6.2) 中的二次项
ρ
2
∥
r
∥
2
\displaystyle\frac{\rho}{2}\|r\|^2
2ρ∥r∥2 替换为
ρ
2
r
T
P
r
\displaystyle\frac{\rho}{2}r^\mathrm{T}Pr
2ρrTPr, 其中
P
P
P 是一个对称正定矩阵. 如果
P
P
P 在整个迭代过程中是不变的,我们可以将这个一般的交替方向乘子法解释为将标准的交替方向乘子法应用在修改后的初始问题上——等式约束
A
1
x
1
+
A
2
x
2
−
b
=
0
A_{1}x_{1}+A_{2}x_{2}-b=0
A1x1+A2x2−b=0 替换为
F
(
A
1
x
1
+
A
2
x
2
−
b
)
=
0
F(A_1x_{1}+A_{2}x_{2}-b)=0
F(A1x1+A2x2−b)=0, 其中
F
F
F 为
P
P
P 的 Cholesky 因子,即
F
T
F
=
P
F^{\mathrm{T}}F=P
FTF=P, 且
F
F
F 是对角元为正数的上三角矩阵.
5. 超松弛
另外一种想法是用超松弛的技巧,在 (8.6.6) 式与 (8.6.7) 式中,
A
1
x
1
k
+
1
A_1x_1^{k+1}
A1x1k+1 可以被替换为
α
k
A
1
x
1
k
+
1
−
(
1
−
α
k
)
(
A
2
x
2
k
−
b
)
\alpha_kA_1x_1^{k+1}-(1-\alpha_k)(A_2x_2^k-b)
αkA1x1k+1−(1−αk)(A2x2k−b)
其中 α k ∈ ( 0 , 2 ) \alpha_k\in(0,2) αk∈(0,2) 是一个松弛参数. 当 α k > 1 \alpha_k>1 αk>1 时,这种技巧称为超松弛;当 α k < 1 \alpha_{k}<1 αk<1 时,这种技巧称为欠松弛. 实验表明 α k ∈ [ 1.5 , 1.8 ] \alpha_k\in[1.5,1.8] αk∈[1.5,1.8] 的超松弛可以提高收敛速度.
6. 多块与非凸问题的 ADMM
在引入问题 (8.6.1) 时,我们提到了有两块变量
x
1
,
x
2
x_1,x_2
x1,x2. 这个问题推广到有多块变量的情形:
min
x
1
,
x
2
,
⋯
,
x
N
f
1
(
x
1
)
+
f
2
(
x
2
)
+
⋯
+
f
N
(
x
N
)
s
.
t
.
A
1
x
1
+
A
2
x
2
+
⋯
+
A
N
x
N
=
b
(
8.6.25
)
\begin{aligned}\min_{x_{1},x_{2},\cdots,x_{N}}\quad &f_{1}(x_{1})+f_{2}(x_{2})+\cdots+f_{N}(x_{N}) \\\mathrm{s.t.}\quad &A_{1}x_{1}+A_{2}x_{2}+\cdots+A_{N}x_{N}=b\end{aligned}\qquad(8.6.25)
x1,x2,⋯,xNmins.t.f1(x1)+f2(x2)+⋯+fN(xN)A1x1+A2x2+⋯+ANxN=b(8.6.25)
这里
f
i
(
x
i
)
f_i(x_i)
fi(xi) 是闭凸函数
,
x
i
∈
R
n
i
,
A
i
∈
R
m
×
n
i
.
,x_i\in\mathbb{R}^{n_i},A_i\in\mathbb{R}^{m\times n_i}.
,xi∈Rni,Ai∈Rm×ni. 同样可以写出问题 (8.6.25) 的增广拉格朗日函数
L
ρ
(
x
1
,
x
2
,
⋯
,
x
N
,
y
)
L_\rho(x_1,x_2,\cdots,x_N,y)
Lρ(x1,x2,⋯,xN,y), 相应的多块 ADMM 迭代格式为
x
1
k
+
1
=
arg min
x
L
ρ
(
x
,
x
2
k
,
⋯
,
x
N
k
,
y
k
)
,
x
2
k
+
1
=
arg min
x
L
ρ
(
x
1
k
+
1
,
x
,
⋯
,
x
N
k
,
y
k
)
,
…
x
N
k
+
1
=
arg min
x
L
ρ
(
x
1
k
+
1
,
x
2
k
+
1
,
⋯
,
x
,
y
k
)
,
y
k
+
1
=
y
k
+
τ
ρ
(
A
1
x
1
k
+
1
+
A
2
x
2
k
+
1
+
⋯
+
A
N
x
N
k
+
1
−
b
)
,
\begin{aligned}&x_{1}^{k+1}=\argmin_{x}L_{\rho}(x,x_{2}^{k},\cdots,x_{N}^{k},y^{k}),\\&x_{2}^{k+1}=\argmin_{x}L_{\rho}(x_{1}^{k+1},x,\cdots,x_{N}^{k},y^{k}),\\&\ldots\\&x_{N}^{k+1}=\argmin_{x}L_{\rho}(x_{1}^{k+1},x_{2}^{k+1},\cdots,x,y^{k}),\\&y^{k+1}=y^{k}+\tau\rho(A_{1}x_{1}^{k+1}+A_{2}x_{2}^{k+1}+\cdots+A_{N}x_{N}^{k+1}-b),\end{aligned}
x1k+1=xargminLρ(x,x2k,⋯,xNk,yk),x2k+1=xargminLρ(x1k+1,x,⋯,xNk,yk),…xNk+1=xargminLρ(x1k+1,x2k+1,⋯,x,yk),yk+1=yk+τρ(A1x1k+1+A2x2k+1+⋯+ANxNk+1−b),
其中 τ ∈ ( 0 , 5 + 1 2 ) \tau\in\left(0,\displaystyle\frac{\sqrt{5}+1}{2}\right) τ∈(0,25+1) 为步长参数。
针对非凸问题,ADMM 格式可能不是良定义的,即每个子问题可能不存在最小值或最小值点不唯一. 若只考虑子问题解存在的情形,我们依然可以形式上利用 ADMM 格式 (8.6.5)-(8.6.7) 对非凸问题进行求解. 这里
arg min
\argmin
argmin 应该理解为选取子问题最小值点中的一个.
和有两块变量的凸问题上的 ADMM 格式相比,多块(非凸) ADMM 可能不具有收敛性. 但在找到有效算法之前,这两种 ADMM 算法的变形都值得一试. 它们在某些实际问题上也有不错的效果.