ADMM算法简介

前言

这篇博客旨在介绍下最近在通信中经常用到的 ADMM 算法。 算法的全称为 Alternating Direction Method of Multipliers, 中文直译为: 交替方向乘子法。 本文的参考文献为 Boyd 的经典著作: Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers, 事实上从名字就可以看出, 正如Boyd在摘要中所提到的, ADMM算法的优势是可以将问题进行分布式优化,从而解决大规模计算问题。 然而在通信的应用中, 更多时候则是把一个多变量问题进行解耦,通过对每个单变量进行迭代求解来简化问题本身。

对偶上升法与增广拉格朗日乘数法

在介绍ADMM算法前, 我想先简要介绍下对偶上升法与增广拉格朗日乘数法, 两者可以视为ADMM算法的前身或简化版本, 而ADMM算法则又可视为两者的结合体。

对偶上升法

对偶上升法,在之前的博客中有更为详细的介绍, 对偶上升法 (Dual Ascent)。 这里我们只简述其核心。 对于一个等式约束的凸优化问题如下:
minimize ⁡ f ( x )  subject to  A x = b , \begin{array}{ll} \operatorname{minimize} & f(x) \\ \text { subject to } & A x=b, \end{array} minimize subject to f(x)Ax=b,
其中, f ( x ) f(x) f(x)为凸函数。我们可以通过拉格朗日乘子法将限制条件写入目标函数中, 从而得到:
L ( x , y ) = f ( x ) + y T ( A x − b ) L(x, y)=f(x)+y^{T}(A x-b) L(x,y)=f(x)+yT(Axb)

那么,其对偶函数为:
g ( y ) = inf ⁡ x L ( x , y ) g(y)=\inf _{x} L(x, y) g(y)=xinfL(x,y)
相应的对偶问题为:
 maximize  g ( y ) \text { maximize } g(y)  maximize g(y)
对偶上升法表示, 通过如下的步骤:
x k + 1 : = argmin ⁡ x L ( x , y k ) y k + 1 : = y k + α k ( A x k + 1 − b ) , \begin{aligned} &x^{k+1}:=\underset{x}{\operatorname{argmin}} L\left(x, y^{k}\right) \\ &y^{k+1}:=y^{k}+\alpha^{k}\left(A x^{k+1}-b\right), \end{aligned} xk+1:=xargminL(x,yk)yk+1:=yk+αk(Axk+1b),
等价于求解对偶问题。这里 α k \alpha_k αk 为步长。 而从步骤的形式上看, 就是简单的先固定 y y y 优化 x x x, 再固定 x x x 优化 y y y。 但是是可以保证收敛的。 可以看到, 对偶上升法的优点是可以将多变量解耦开来。 值得一提的是, 迎合ADMM类所期望的分布式优化的特点, 对偶上升法也可以通过将变量分解为多个维度较低的变量再进行并行求解, 此时优化步骤变为:
x i k + 1 : = argmin ⁡ x i L i ( x i , y k ) y k + 1 : = y k + α k ( A x k + 1 − b ) \begin{aligned} x_{i}^{k+1} &:=\underset{x_{i}}{\operatorname{argmin}} L_{i}\left(x_{i}, y^{k}\right) \\ y^{k+1} &:=y^{k}+\alpha^{k}\left(A x^{k+1}-b\right) \end{aligned} xik+1yk+1:=xiargminLi(xi,yk):=yk+αk(Axk+1b)
即将原高维变量 x x x 拆分成了多个 低维变量 x i x_i xi 进行依次优化。 在多个变量之间交替优化,迭代求解, 可以说是ADMM类算法贯彻的准则。

增广拉格朗日乘数法

增广拉格朗日乘数法可以看做是对偶上升法的进阶, 但也不完全是。 他将拉格朗日函数写为:
L ρ ( x , y ) = f ( x ) + y T ( A x − b ) + ( ρ / 2 ) ∥ A x − b ∥ 2 2 L_{\rho}(x, y)=f(x)+y^{T}(A x-b)+(\rho / 2)\|A x-b\|_{2}^{2} Lρ(x,y)=f(x)+yT(Axb)+(ρ/2)Axb22
可以看到, 相比于普通的拉格朗日函数(比如刚刚对偶上升法中所给出的), 他多了第三项,其中 ρ \rho ρ 为惩罚参数。 显然当 x x x 为最优值时, A x − b = 0 Ax-b=0 Axb=0, 因此这两个拉格朗日函数其实是相等的。 但是在迭代过程中, 有了这一项惩罚项后, 无论 f ( x ) f(x) f(x) 本身是否强凸, 由于增加了一个强凸惩罚项, 因此这个增广拉格朗日函数可视作 x x x的强凸函数, 从而对算法的收敛更有帮助。 增广拉格朗日乘数法的步骤为:
x k + 1 : = argmin ⁡ x L ρ ( x , y k ) y k + 1 : = y k + ρ ( A x k + 1 − b ) \begin{aligned} x^{k+1} &:=\underset{x}{\operatorname{argmin}} L_{\rho}\left(x, y^{k}\right) \\ y^{k+1} &:=y^{k}+\rho\left(A x^{k+1}-b\right) \end{aligned} xk+1yk+1:=xargminLρ(x,yk):=yk+ρ(Axk+1b)
注意到,这几乎和对偶上升的步骤完全一致。 但除了目标函数的改变之外(增加了惩罚项), 另一个变化是步长默认为是惩罚参数 ρ \rho ρ。 这样的选取是有其道理的,具体可以参见boyd的书, 是从收敛性的角度进行了考虑。 总之, 增广拉格朗日乘数法改善了收敛性能, 但同时由于增加了这一项, 因此无法拆分为多个 x i x_i xi进行分布式并行求解。

ADMM算法

结合了对偶上升法的 可拆解性 和 增广拉格朗日乘数法的 易收敛性, ADMM算法呼之欲出。 我们将优化变量拆分为独立的两部分, x x x z z z, 那么问题可以改写为:
minimize ⁡ f ( x ) + g ( z )  subject to  A x + B z = c \begin{array}{ll} \operatorname{minimize} & f(x)+g(z) \\ \text { subject to } & A x+B z=c \end{array} minimize subject to f(x)+g(z)Ax+Bz=c
这里 f f f g g g 都是凸函数。 此时, 其对应的增广拉格朗日函数为:
L ρ ( x , z , y ) = f ( x ) + g ( z ) + y T ( A x + B z − c ) + ( ρ / 2 ) ∥ A x + B z − c ∥ 2 2 L_{\rho}(x, z, y)=f(x)+g(z)+y^{T}(A x+B z-c)+(\rho / 2)\|A x+B z-c\|_{2}^{2} Lρ(x,z,y)=f(x)+g(z)+yT(Ax+Bzc)+(ρ/2)Ax+Bzc22
而其优化步骤为:
x k + 1 : = argmin ⁡ x L ρ ( x , z k , y k ) z k + 1 : = argmin ⁡ L ρ ( x k + 1 , z , y k ) y k + 1 : = y k + ρ ( A x k + 1 + B z k + 1 − c ) \begin{aligned} x^{k+1}:=& \underset{x}{\operatorname{argmin}} L_{\rho}\left(x, z^{k}, y^{k}\right) \\ z^{k+1}:=& \operatorname{argmin} L_{\rho}\left(x^{k+1}, z, y^{k}\right) \\ y^{k+1}:=& y^{k}+\rho\left(A x^{k+1}+B z^{k+1}-c\right) \end{aligned} xk+1:=zk+1:=yk+1:=xargminLρ(x,zk,yk)argminLρ(xk+1,z,yk)yk+ρ(Axk+1+Bzk+1c)
可以清晰的看到, 这正是对偶上升法与增广拉格朗日乘数法的结合体。 理论上可以进一步把优化变量拆分为更多的block, 如 x x x, z z z, z 1 z_1 z1, ⋯ \cdots 。 如果我们将原问题的最优解表示为:
p ⋆ = inf ⁡ { f ( x ) + g ( z ) ∣ A x + B z = c } p^{\star}=\inf \{f(x)+g(z) \mid A x+B z=c\} p=inf{f(x)+g(z)Ax+Bz=c}
那么ADMM算法在满足很基本的假设的情况下, 可以确保
f ( x k ) + g ( z k ) → p ⋆  as  k → ∞ f\left(x^{k}\right)+g\left(z^{k}\right) \rightarrow p^{\star} \text { as } k \rightarrow \infty f(xk)+g(zk)p as k
这也体现了算法的收敛性,即最终得到全局最优解。 这在boyd的著作中给出了详尽的证明。

ADMM算法的Scaled Form

ADMM算法还有另一种常见形式。 如果我们令 r = A x + B z − c r=A x+B z-c r=Ax+Bzc 来代表当前值与实际约束间的残差, 那么我们有:
y T r + ( ρ / 2 ) ∥ r ∥ 2 2 = ( ρ / 2 ) ∥ r + ( 1 / ρ ) y ∥ 2 2 − ( 1 / 2 ρ ) ∥ y ∥ 2 2 = ( ρ / 2 ) ∥ r + u ∥ 2 2 − ( ρ / 2 ) ∥ u ∥ 2 2 \begin{aligned} y^{T} r+(\rho / 2)\|r\|_{2}^{2} &=(\rho / 2)\|r+(1 / \rho) y\|_{2}^{2}-(1 / 2 \rho)\|y\|_{2}^{2} \\ &=(\rho / 2)\|r+u\|_{2}^{2}-(\rho / 2)\|u\|_{2}^{2} \end{aligned} yTr+(ρ/2)r22=(ρ/2)r+(1/ρ)y22(1/2ρ)y22=(ρ/2)r+u22(ρ/2)u22
其中, u = ( 1 / ρ ) y u=(1 / \rho) y u=(1/ρ)y 代表被 scaled 后的 对偶变量, 这也是 所谓 scaled form的由来。 由此, ADMM步骤可以被简化写为:

x k + 1 : = argmin ⁡ x ( f ( x ) + ( ρ / 2 ) ∥ A x + B z k − c + u k ∥ 2 2 ) z k + 1 : = argmin ⁡ z ( g ( z ) + ( ρ / 2 ) ∥ A x k + 1 + B z − c + u k ∥ 2 2 ) u k + 1 : = u k + A x k + 1 + B z k + 1 − c . \begin{aligned} x^{k+1} &:=\underset{x}{\operatorname{argmin}}\left(f(x)+(\rho / 2)\left\|A x+B z^{k}-c+u^{k}\right\|_{2}^{2}\right) \\ z^{k+1} &:=\underset{z}{\operatorname{argmin}}\left(g(z)+(\rho / 2)\left\|A x^{k+1}+B z-c+u^{k}\right\|_{2}^{2}\right) \\ u^{k+1} &:=u^{k}+A x^{k+1}+B z^{k+1}-c . \end{aligned} xk+1zk+1uk+1:=xargmin(f(x)+(ρ/2)Ax+Bzkc+uk22):=zargmin(g(z)+(ρ/2)Axk+1+Bzc+uk22):=uk+Axk+1+Bzk+1c.
可以看到一次项已经被写进 ∥ ∥ 2 \|\|^2 2中了。

ADMM算法的收敛性

  • 29
    点赞
  • 191
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
ADMM是交替方向乘子法(Alternating Direction Method of Multipliers)的缩写。它是一种优化算法,常用于求解凸优化问题,特别是具有结构化约束的问题。在Matlab中,ADMM算法常用于信号处理、图像处理、路径规划等多个领域。 在引用中提到了一篇关于ADMM算法在大规模MIMO系统中的无穷范数检测的文章。该算法是基于ADMM的,并且提出了相应的VLSI架构,用于实现无穷范数检测。这篇文章对ADMM在无线通信系统中的应用进行了深入研究。 另外,在引用中提到了在Matlab代码中使用ADMM算法进行无穷范数检测的情况。具体来说,这是一种基于ADMM的无穷范数检测方法。 综上所述,ADMM是交替方向乘子法的缩写,它是一种常用于解决凸优化问题的优化算法。在Matlab中,ADMM算法被广泛应用于多个领域,如信号处理、图像处理、路径规划等。其中,引用提到了在大规模MIMO系统中应用ADMM算法进行无穷范数检测的研究,而引用则提到了在Matlab代码中使用ADMM算法进行无穷范数检测的情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【通信】基于 ADMM 的大规模 MIMO 无穷范数检测附matlab代码](https://blog.csdn.net/matlab_dingdang/article/details/126969692)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

B417科研笔记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值