凸优化:ADMM(Alternating Direction Method of Multipliers)交替方向乘子算法

[本文链接: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(Axb)        (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+1b)                (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=1Nfi(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=1NLi(xi,λ)=i=1N(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+1b)        (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(Axb)+(ρ/2)Axb22        (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+1b)        (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+Bzc)+(ρ/2)Ax+Bzc22        (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+1c)        (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+1zk)<ϵ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

  • 49
    点赞
  • 348
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mingo_敏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值