交替方向乘子法(ADMM)


交替方向乘子法(ADMM)

詳細請看:交替方向乘子法(Alternating Direction Method of Multipliers) - 凱魯嘎吉 - 博客園

參考1

參考2

經典的ADMM算法適用於求解如下2-block的凸優化問題( p^* 是最優值,令 x^*,z^* 表示一組最優解):

\begin{align} p^* = \min ~  & f(x)+g(z)\\ \text{s.t. } & Ax+Bz=c. \end{align}

Block指我們可以將決策域分塊,分成兩組變量, x\in \mathbb{R}^n,z\in \mathbb{R}^m. 這里面 A\in \mathbb{R}^{p\times n},B\in \mathbb{R}^{p\times m},c\in \mathbb{R}^p. f:\mathbb{R}^n\rightarrow \mathbb{R},g:\mathbb{R}^m\rightarrow \mathbb{R} 都是凸的。分成2-block是因為3-block及以上的問題性質會差一點,分析起來不太好說清楚(雖然實際當中基本上幾個block都可以用,一般都會收斂...)。

那么我們這里就可以寫出這個凸優化問題的增廣拉格朗日函數(augmented Lagrangian function):

L_{\rho}(x,z,y)=f(x)+g(z)+y^T(Ax+Bz-c)+(\rho/2)\|Ax+Bz-c\|_2^2.

注意到這個增廣的意思就是在原來的拉格朗日函數后面加了個平方的正則項(系數 \rho/2 ),這個主要是為了不需要 f 一定要是嚴格凸(strictly convex)/值域有限(只要是一般的凸函數就行了)然后也能保證收斂性。然后我們對 L_\rho 用dual ascent(對偶上升法),或者也就是拉格朗日乘子法就知道可以有這樣一個算法形式:

\begin{align} (x^{k+1},z^{k+1}):=~ & \arg\min_{x,z} L_{\rho}(x,z,y^k)\\ y^{k+1}:= ~ & y^k+\rho(Ax^{k+1}+Bz^{k+1}-c). \end{align}

其實dual ascent原理非常簡單,本質上來說就是primal variable迭代方向取拉格朗日函數對primal variable的次微分,dual variable迭代方向取拉格朗日函數對dual variable的次微分(這里的話就是 \frac{\partial L_{\rho}}{\partial y} )。這也是所謂拉格朗日乘子法的一般思路(method of multipliers)。當然這邊還有一些細節,比如對偶變量迭代步長選了 \rho 。所以如果你想從基礎打起的話,可以從比如S. Boyd and L. Vandenberghe的凸優化書第五章看起。

那么ADMM,也就是所謂“交替方向”的乘子法就是在原基礎上( x,z 一起迭代)改成 x,z 單獨交替迭代(如果有更多block也是類似)。即,我們的ADMM算法為

\begin{align} x^{k+1}:=~ & \arg\min_{x} L_{\rho}(x,z^k,y^k)\\ z^{k+1}:=~ & \arg\min_{z} L_{\rho}(x^{k+1},z,y^k)\\ y^{k+1}:= ~ & y^k+\rho(Ax^{k+1}+Bz^{k+1}-c). \end{align}

本節最后,我們指出ADMM算法形式的另一種等價形式。如果定義所謂的殘差(residual)為 r^k:=Ax^k+Bz^k-c ,那么注意到再定義 u^k:=(1/\rho)y^k 作為所謂scaled dual variable,我們有 (y^k)^Tr^k+(\rho/2)\|r^k\|_2^2=(\rho/2)\|r^k+u^k\|_2^2-(\rho/2)\|u^k\|_2^2. 即我們可以改寫ADMM算法形式為

\begin{align} x^{k+1}:=~ & \arg\min_{x} \left\{ f(x)+(\rho/2)\|Ax+Bz^k-c+u^k\|_2^2  \right\}\\ z^{k+1}:=~ & \arg\min_{z}  \left\{ g(z)+(\rho/2)\|Ax^{k+1}+Bz-c+u^k\|_2^2  \right\}\\ u^{k+1}:= ~ & u^k+Ax^{k+1}+Bz^{k+1}-c. \end{align}

嗯這個形式就比前面那個更簡潔些,我們一般叫前一種形式為ADMM的unscaled形式,而這種就自然是scaled形式了。很多ADMM分析都是基於這個scaled形式的。

參考文獻

覃含章:https://www.zhihu.com/question/309568920/answer/580226096

用ADMM實現統計學習問題的分布式計算 · MullOver :http://shijun.wang/2016/01/19/admm-for-distributed-statistical-learning/

《凸優化》中文版PDF+英文版PDF+習題題解:https://pan.baidu.com/s/1oRGp4_LfDVLo86r79pnXvg


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM