[本文链接:http://blog.csdn.net/shanglianlm/article/details/45919679,转载请注明出处]
最近开始对凸优化(convex optimization)开始感兴趣,接下来我会写一系列关于凸优化(convex optimization)的内容。
文章目录
本文主要对ADMM(Alternating Direction Method of Multipliers)交替方向乘子算法做一个简要的介绍:
1. 对偶上升法(Dual Ascent) 和 对偶分解法(Dual Decomposition)
在介绍ADMM之前我们首先介绍两种优化算法:对偶上升法(Dual Ascent) 和 对偶分解法(Dual Decomposition)。
1.1 对偶上升法(Dual Ascent)
设有如下优化问题:
min
f
(
x
)
s.t.
A
x
=
b
(1)
\text{min} f(x) \ \ \ \text{s.t. } \ \ \ Ax = b \ \ \ \ \ \ \ \ \ \text{(1)}
minf(x) s.t. Ax=b (1)
它的拉格朗日形式为:
L
(
x
,
λ
)
=
f
(
x
)
+
λ
T
(
A
x
−
b
)
(2)
L(x, \lambda) = f(x) + \lambda^{T}(Ax - b) \ \ \ \ \ \ \ \ \text{(2)}
L(x,λ)=f(x)+λT(Ax−b) (2)
对偶形式为:
g
(
λ
)
=
inf
x
L
(
x
,
λ
)
=
−
f
∗
(
−
A
T
λ
)
−
b
T
λ
(3)
g(\lambda) = \text{inf}_x L(x, \lambda) = -f^{*}(-A^{T}\lambda) - b^{T}\lambda \ \ \ \ \ \ \ \ \text{(3)}
g(λ)=infxL(x,λ)=−f∗(−ATλ)−bTλ (3)
其中
f
∗
f^*
f∗ 是 f 的共轭函数。
对偶问题为:
max
g
(
λ
)
(4)
\text{max} \ g(\lambda) \ \ \ \ \ \ \ \text{(4)}
max g(λ) (4)
对偶上升法的迭代更新为:
x
k
+
1
=
argmin
x
L
(
x
,
λ
k
)
(5) x-最小化
x^{k+1} = \text{argmin}_{x}L(x, \lambda^{k}) \ \ \ \ \ \ \ \ \ \ \ \ \ \text{(5)}\ \ \ \ \text{x-最小化}
xk+1=argminxL(x,λk) (5) x-最小化
λ
k
+
1
=
λ
k
+
α
k
(
A
x
k
+
1
−
b
)
(6) 对偶变量更新
\lambda^{k+1} = \lambda^{k} + \alpha^{k}(Ax^{k+1} - b) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \text{(6)} \ \ \ \ \ \text{对偶变量更新}
λk+1=λk+αk(Axk+1−b) (6) 对偶变量更新
其中
α
k
>
0
\alpha^{k} > 0
αk>0是步长。
1.2 对偶分解法(Dual Decomposition)
假设目标函数是可以分解的,即
f
(
x
)
=
∑
i
=
1
N
f
i
(
x
i
)
(7)
f(x) = \sum_{i=1}^{N}f_{i}(x_{i})\ \ \ \ \ \ \ \ \text{(7)}
f(x)=i=1∑Nfi(xi) (7)
因此,拉格朗日函数可以改写为:
L
(
x
,
λ
)
=
∑
i
=
1
N
L
i
(
x
i
,
λ
)
=
∑
i
=
1
N
(
f
i
(
x
i
)
+
λ
T
A
i
x
i
−
(
1
/
N
)
λ
T
b
)
(8)
L(x, \lambda) = \sum_{i=1}^{N}L_{i}(x_{i}, \lambda) = \sum_{i=1}^{N}(f_{i}(x_{i}) + \lambda^{T}A_{i}x_{i} - (1/N)\lambda^{T}b)\ \ \ \ \ \ \ \ \text{(8)}
L(x,λ)=i=1∑NLi(xi,λ)=i=1∑N(fi(xi)+λTAixi−(1/N)λTb) (8)
所以它的迭代更新为:
x
i
k
+
1
=
argmin
x
i
L
i
(
x
i
,
λ
k
)
(9)
x_{i}^{k+1} = \text{argmin}_{x_{i}}L_{i}(x_{i}, \lambda^{k}) \ \ \ \ \ \ \ \ \text{(9)}
xik+1=argminxiLi(xi,λk) (9)
λ
k
+
1
=
λ
k
+
α
k
(
A
x
k
+
1
−
b
)
(10)
\lambda^{k+1} = \lambda^{k} + \alpha^{k}(Ax^{k+1} - b) \ \ \ \ \ \ \ \ \text{(10)}
λk+1=λk+αk(Axk+1−b) (10)
2. 增广拉格朗日(Augmented Lagrangians)和乘子法(Method of Multipliers)
接着我们引入增广拉格朗日(Augmented Lagrangians)和乘子法(Method of Multipliers)。
2.1 增广拉格朗日(Augmented Lagrangians)形式
为了增加对偶上升法的鲁棒性和放松函数f的强凸约束,我们引入增广拉格朗日(Augmented Lagrangians)形式:
L
ρ
(
x
,
λ
)
=
f
(
x
)
+
λ
T
(
A
x
−
b
)
+
(
ρ
/
2
)
∣
∣
A
x
−
b
∣
∣
2
2
(11)
L_{\rho}(x, \lambda) = f(x) + \lambda^{T}(Ax - b) + (\rho/2)||Ax - b||_{2}^{2}\ \ \ \ \ \ \ \ \text{(11)}
Lρ(x,λ)=f(x)+λT(Ax−b)+(ρ/2)∣∣Ax−b∣∣22 (11)
其中惩罚因子
ρ
>
0
\rho>0
ρ>0。
与 (2) 式相比,(11) 式只是增加了一个惩罚项,
2.2 乘子法(Method of Multipliers)
对应于的迭代公式为:
x
k
+
1
=
argmin
x
L
ρ
(
x
,
λ
k
)
(12)
x^{k+1} = \text{argmin}_{x}L_{\rho}(x, \lambda^{k}) \ \ \ \ \ \ \ \ \text{(12)}
xk+1=argminxLρ(x,λk) (12)
λ
k
+
1
=
λ
k
+
ρ
(
A
x
k
+
1
−
b
)
(13)
\lambda^{k+1} = \lambda^{k} + \rho(Ax^{k+1} - b) \ \ \ \ \ \ \ \ \text{(13)}
λk+1=λk+ρ(Axk+1−b) (13)
我们称之为乘子法(Method of Multipliers)。
将拉格朗日应用于对偶上升法可以极大地增加它的收敛属性,但是它要求一些代价。当f可以分解,而拉格朗日 L ρ L_{\rho} Lρ不能分解的,因此 (13) 式不能对每个 x i x_{i} xi并行最小化。这意味着乘子法不能被用来分解。
3. ADMM(Alternating Direction Method of Multipliers)
如前文所述,ADMM是一个旨在将对偶上升法的可分解性和乘子法的上界收敛属性融合在一起的算法。
2.1 具体描述
设有如下优化问题:
min
f
(
x
)
+
g
(
z
)
s.t.
A
x
+
B
z
=
c
(14)
\text{min} \ f(x) + g(z) \ \ \text{s.t.} \ \ Ax + Bz = c\ \ \ \ \ \ \ \ \text{(14)}
min f(x)+g(z) s.t. Ax+Bz=c (14)
如同乘子法中一样,我们获得它的增广拉格朗日形式为:
L
ρ
(
x
,
z
,
λ
)
=
f
(
x
)
+
g
(
z
)
+
y
T
(
A
x
+
B
z
−
c
)
+
(
ρ
/
2
)
∣
∣
A
x
+
B
z
−
c
∣
∣
2
2
(15)
L_{\rho}(x, z, \lambda) = f(x) + g(z) + y^{T}(Ax + Bz - c) + (\rho/2)||Ax + Bz - c||_{2}^{2}\ \ \ \ \ \ \ \ \text{(15)}
Lρ(x,z,λ)=f(x)+g(z)+yT(Ax+Bz−c)+(ρ/2)∣∣Ax+Bz−c∣∣22 (15)
那么它的迭代方式为:
x
k
+
1
=
argmin
x
L
ρ
(
x
,
z
k
,
λ
k
)
(16)
x^{k+1} = \text{argmin}_{x}L_{\rho}(x, z^{k}, \lambda^{k})\ \ \ \ \ \ \ \ \text{(16)}
xk+1=argminxLρ(x,zk,λk) (16)
z
k
+
1
=
argmin
z
L
ρ
(
x
k
+
1
,
z
,
λ
k
)
(17)
z^{k+1} = \text{argmin}_{z}L_{\rho}(x^{k+1}, z, \lambda^{k})\ \ \ \ \ \ \ \ \text{(17)}
zk+1=argminzLρ(xk+1,z,λk) (17)
λ
k
+
1
=
λ
k
+
ρ
(
A
x
k
+
1
+
B
z
k
+
1
−
c
)
(18)
\lambda^{k+1} = \lambda^{k} + \rho(Ax^{k+1} + Bz^{k+1} - c)\ \ \ \ \ \ \ \ \text{(18)}
λk+1=λk+ρ(Axk+1+Bzk+1−c) (18)
其中增广拉格朗日参数
ρ
>
0
\rho>0
ρ>0。
2.2 优化条件和停止准则
原始残差:$r_{k+1} = Ax^{k+1} + Bz^{k+1} - c < \epsilon^{\text{primal}} $
对偶残差:
s
k
+
1
=
ρ
A
T
B
(
z
k
+
1
−
z
k
)
<
ϵ
dual
s^{k+1} = \rho A^{T}B(z^{k+1} - z^{k}) < \epsilon^{\text{dual}}
sk+1=ρATB(zk+1−zk)<ϵdual
2.3 收敛速度
- 收敛到一个高的精度要求很多次迭代;
- 但几十次迭代就可以达到一个合理的精度(类似于共轭梯度法(conjugate gradient method));
- 可以和其他算法组合来产生一个高的精度。
参考或延伸材料:
[1] Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers
[2] 凸优化讲义
[3] A Note on the Alternating Direction Method of Multipliers
[4] Convex Relaxation, Convex Conjugate, L1 & L0 norm, rank & nuclear norm