ADMM算法简介
前言
這篇博客旨在介紹下最近在通信中經(jīng)常用到的 ADMM 算法。 算法的全稱(chēng)為 Alternating Direction Method of Multipliers, 中文直譯為: 交替方向乘子法。 本文的參考文獻(xiàn)為 Boyd 的經(jīng)典著作: Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers, 事實(shí)上從名字就可以看出, 正如Boyd在摘要中所提到的, ADMM算法的優(yōu)勢(shì)是可以將問(wèn)題進(jìn)行分布式優(yōu)化,從而解決大規(guī)模計(jì)算問(wèn)題。 然而在通信的應(yīng)用中, 更多時(shí)候則是把一個(gè)多變量問(wèn)題進(jìn)行解耦,通過(guò)對(duì)每個(gè)單變量進(jìn)行迭代求解來(lái)簡(jiǎn)化問(wèn)題本身。
對(duì)偶上升法與增廣拉格朗日乘數(shù)法
在介紹ADMM算法前, 我想先簡(jiǎn)要介紹下對(duì)偶上升法與增廣拉格朗日乘數(shù)法, 兩者可以視為ADMM算法的前身或簡(jiǎn)化版本, 而ADMM算法則又可視為兩者的結(jié)合體。
對(duì)偶上升法
對(duì)偶上升法,在之前的博客中有更為詳細(xì)的介紹, 對(duì)偶上升法 (Dual Ascent)。 這里我們只簡(jiǎn)述其核心。 對(duì)于一個(gè)等式約束的凸優(yōu)化問(wèn)題如下:
minimize?f(x)subject?to?Ax=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)為凸函數(shù)。我們可以通過(guò)拉格朗日乘子法將限制條件寫(xiě)入目標(biāo)函數(shù)中, 從而得到:
L(x,y)=f(x)+yT(Ax?b)L(x, y)=f(x)+y^{T}(A x-b) L(x,y)=f(x)+yT(Ax?b)
那么,其對(duì)偶函數(shù)為:
g(y)=inf?xL(x,y)g(y)=\inf _{x} L(x, y) g(y)=xinf?L(x,y)
相應(yīng)的對(duì)偶問(wèn)題為:
maximize?g(y)\text { maximize } g(y) ?maximize?g(y)
對(duì)偶上升法表示, 通過(guò)如下的步驟:
xk+1:=argmin?xL(x,yk)yk+1:=yk+αk(Axk+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:=xargmin?L(x,yk)yk+1:=yk+αk(Axk+1?b),?
等價(jià)于求解對(duì)偶問(wèn)題。這里 αk\alpha_kαk? 為步長(zhǎng)。 而從步驟的形式上看, 就是簡(jiǎn)單的先固定 yyy 優(yōu)化 xxx, 再固定 xxx 優(yōu)化 yyy。 但是是可以保證收斂的。 可以看到, 對(duì)偶上升法的優(yōu)點(diǎn)是可以將多變量解耦開(kāi)來(lái)。 值得一提的是, 迎合ADMM類(lèi)所期望的分布式優(yōu)化的特點(diǎn), 對(duì)偶上升法也可以通過(guò)將變量分解為多個(gè)維度較低的變量再進(jìn)行并行求解, 此時(shí)優(yōu)化步驟變?yōu)?#xff1a;
xik+1:=argmin?xiLi(xi,yk)yk+1:=yk+αk(Axk+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+1?yk+1?:=xi?argmin?Li?(xi?,yk):=yk+αk(Axk+1?b)?
即將原高維變量 xxx 拆分成了多個(gè) 低維變量 xix_ixi? 進(jìn)行依次優(yōu)化。 在多個(gè)變量之間交替優(yōu)化,迭代求解, 可以說(shuō)是ADMM類(lèi)算法貫徹的準(zhǔn)則。
增廣拉格朗日乘數(shù)法
增廣拉格朗日乘數(shù)法可以看做是對(duì)偶上升法的進(jìn)階, 但也不完全是。 他將拉格朗日函數(shù)寫(xiě)為:
Lρ(x,y)=f(x)+yT(Ax?b)+(ρ/2)∥Ax?b∥22L_{\rho}(x, y)=f(x)+y^{T}(A x-b)+(\rho / 2)\|A x-b\|_{2}^{2} Lρ?(x,y)=f(x)+yT(Ax?b)+(ρ/2)∥Ax?b∥22?
可以看到, 相比于普通的拉格朗日函數(shù)(比如剛剛對(duì)偶上升法中所給出的), 他多了第三項(xiàng),其中 ρ\rhoρ 為懲罰參數(shù)。 顯然當(dāng) xxx 為最優(yōu)值時(shí), Ax?b=0Ax-b=0Ax?b=0, 因此這兩個(gè)拉格朗日函數(shù)其實(shí)是相等的。 但是在迭代過(guò)程中, 有了這一項(xiàng)懲罰項(xiàng)后, 無(wú)論 f(x)f(x)f(x) 本身是否強(qiáng)凸, 由于增加了一個(gè)強(qiáng)凸懲罰項(xiàng), 因此這個(gè)增廣拉格朗日函數(shù)可視作xxx的強(qiáng)凸函數(shù), 從而對(duì)算法的收斂更有幫助。 增廣拉格朗日乘數(shù)法的步驟為:
xk+1:=argmin?xLρ(x,yk)yk+1:=yk+ρ(Axk+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?:=xargmin?Lρ?(x,yk):=yk+ρ(Axk+1?b)?
注意到,這幾乎和對(duì)偶上升的步驟完全一致。 但除了目標(biāo)函數(shù)的改變之外(增加了懲罰項(xiàng)), 另一個(gè)變化是步長(zhǎng)默認(rèn)為是懲罰參數(shù) ρ\rhoρ。 這樣的選取是有其道理的,具體可以參見(jiàn)boyd的書(shū), 是從收斂性的角度進(jìn)行了考慮。 總之, 增廣拉格朗日乘數(shù)法改善了收斂性能, 但同時(shí)由于增加了這一項(xiàng), 因此無(wú)法拆分為多個(gè)xix_ixi?進(jìn)行分布式并行求解。
ADMM算法
結(jié)合了對(duì)偶上升法的 可拆解性 和 增廣拉格朗日乘數(shù)法的 易收斂性, ADMM算法呼之欲出。 我們將優(yōu)化變量拆分為獨(dú)立的兩部分, xxx 和 zzz, 那么問(wèn)題可以改寫(xiě)為:
minimize?f(x)+g(z)subject?to?Ax+Bz=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?
這里 fff 和 ggg 都是凸函數(shù)。 此時(shí), 其對(duì)應(yīng)的增廣拉格朗日函數(shù)為:
Lρ(x,z,y)=f(x)+g(z)+yT(Ax+Bz?c)+(ρ/2)∥Ax+Bz?c∥22L_{\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+Bz?c)+(ρ/2)∥Ax+Bz?c∥22?
而其優(yōu)化步驟為:
xk+1:=argmin?xLρ(x,zk,yk)zk+1:=argmin?Lρ(xk+1,z,yk)yk+1:=yk+ρ(Axk+1+Bzk+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:=?xargmin?Lρ?(x,zk,yk)argminLρ?(xk+1,z,yk)yk+ρ(Axk+1+Bzk+1?c)?
可以清晰的看到, 這正是對(duì)偶上升法與增廣拉格朗日乘數(shù)法的結(jié)合體。 理論上可以進(jìn)一步把優(yōu)化變量拆分為更多的block, 如 xxx, zzz, z1z_1z1?, ?\cdots?。 如果我們將原問(wèn)題的最優(yōu)解表示為:
p?=inf?{f(x)+g(z)∣Ax+Bz=c}p^{\star}=\inf \{f(x)+g(z) \mid A x+B z=c\} p?=inf{f(x)+g(z)∣Ax+Bz=c}
那么ADMM算法在滿足很基本的假設(shè)的情況下, 可以確保:
f(xk)+g(zk)→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→∞
這也體現(xiàn)了算法的收斂性,即最終得到全局最優(yōu)解。 這在boyd的著作中給出了詳盡的證明。
ADMM算法的Scaled Form
ADMM算法還有另一種常見(jiàn)形式。 如果我們令 r=Ax+Bz?cr=A x+B z-cr=Ax+Bz?c 來(lái)代表當(dāng)前值與實(shí)際約束間的殘差, 那么我們有:
yTr+(ρ/2)∥r∥22=(ρ/2)∥r+(1/ρ)y∥22?(1/2ρ)∥y∥22=(ρ/2)∥r+u∥22?(ρ/2)∥u∥22\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)∥r∥22??=(ρ/2)∥r+(1/ρ)y∥22??(1/2ρ)∥y∥22?=(ρ/2)∥r+u∥22??(ρ/2)∥u∥22??
其中, u=(1/ρ)yu=(1 / \rho) yu=(1/ρ)y 代表被 scaled 后的 對(duì)偶變量, 這也是 所謂 scaled form的由來(lái)。 由此, ADMM步驟可以被簡(jiǎn)化寫(xiě)為:
xk+1:=argmin?x(f(x)+(ρ/2)∥Ax+Bzk?c+uk∥22)zk+1:=argmin?z(g(z)+(ρ/2)∥Axk+1+Bz?c+uk∥22)uk+1:=uk+Axk+1+Bzk+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+Bzk?c+uk∥∥?22?):=zargmin?(g(z)+(ρ/2)∥∥?Axk+1+Bz?c+uk∥∥?22?):=uk+Axk+1+Bzk+1?c.?
可以看到一次項(xiàng)已經(jīng)被寫(xiě)進(jìn)∥∥2\|\|^2∥∥2中了。
ADMM算法的收斂性
總結(jié)
- 上一篇: mysql解锁_mysql 解锁
- 下一篇: MATLAB在声学理论基础中的应用,MA