首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 25-03-03 22:42
  • 2266
  • 8590
blog.csdn.net

[本文链接:http://blog.csdn.net/shanglianlm/article/details/45919679,转载请注明出处]

最近开始对凸优化(convex optimization)开始感兴趣,接下来我会写一系列关于凸优化(convex optimization)的内容。

文章目录

    • 1. 对偶上升法(Dual Ascent) 和 对偶分解法(Dual Decomposition)
      • 1.1 对偶上升法(Dual Ascent)
      • 1.2 对偶分解法(Dual Decomposition)
    • 2. 增广拉格朗日(Augmented Lagrangians)和乘子法(Method of Multipliers)
      • 2.1 增广拉格朗日(Augmented Lagrangians)形式
      • 2.2 乘子法(Method of Multipliers)
    • 3. ADMM(Alternating Direction Method of Multipliers)
      • 2.1 具体描述
      • 2.2 优化条件和停止准则
      • 2.3 收敛速度

本文主要对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(λ)=infx​L(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=argminx​L(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∑N​fi​(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∑N​Li​(xi​,λ)=i=1∑N​(fi​(xi​)+λTAi​xi​−(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​=argminxi​​Li​(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=argminx​Lρ​(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=argminx​Lρ​(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=argminz​Lρ​(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

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览60791 人正在系统学习中
注:本文转载自blog.csdn.net的mingo_敏的文章"https://blog.csdn.net/shanglianlm/article/details/45919679"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top