交替方向乘子法(ADMM)
詳細請看:交替方向乘子法(Alternating Direction Method of Multipliers) - 凱魯嘎吉 - 博客園
參考1
參考2
經典的ADMM算法適用於求解如下2-block的凸優化問題( 是最優值,令
表示一組最優解):
Block指我們可以將決策域分塊,分成兩組變量, 這里面
都是凸的。分成2-block是因為3-block及以上的問題性質會差一點,分析起來不太好說清楚(雖然實際當中基本上幾個block都可以用,一般都會收斂...)。
那么我們這里就可以寫出這個凸優化問題的增廣拉格朗日函數(augmented Lagrangian function):
注意到這個增廣的意思就是在原來的拉格朗日函數后面加了個平方的正則項(系數 ),這個主要是為了不需要
一定要是嚴格凸(strictly convex)/值域有限(只要是一般的凸函數就行了)然后也能保證收斂性。然后我們對
用dual ascent(對偶上升法),或者也就是拉格朗日乘子法就知道可以有這樣一個算法形式:
其實dual ascent原理非常簡單,本質上來說就是primal variable迭代方向取拉格朗日函數對primal variable的次微分,dual variable迭代方向取拉格朗日函數對dual variable的次微分(這里的話就是 )。這也是所謂拉格朗日乘子法的一般思路(method of multipliers)。當然這邊還有一些細節,比如對偶變量迭代步長選了
。所以如果你想從基礎打起的話,可以從比如S. Boyd and L. Vandenberghe的凸優化書第五章看起。
那么ADMM,也就是所謂“交替方向”的乘子法就是在原基礎上( 一起迭代)改成
單獨交替迭代(如果有更多block也是類似)。即,我們的ADMM算法為
本節最后,我們指出ADMM算法形式的另一種等價形式。如果定義所謂的殘差(residual)為 ,那么注意到再定義
作為所謂scaled dual variable,我們有
即我們可以改寫ADMM算法形式為
嗯這個形式就比前面那個更簡潔些,我們一般叫前一種形式為ADMM的unscaled形式,而這種就自然是scaled形式了。很多ADMM分析都是基於這個scaled形式的。
參考文獻
ADMM :http://web.stanford.edu/~boyd/admm.html
許浩鋒. 基於交替方向乘子法的分布式在線學習算法[D]. 中國科學技術大學, 2015.
用ADMM實現統計學習問題的分布式計算 · MullOver :http://shijun.wang/2016/01/19/admm-for-distributed-statistical-learning/
《凸優化》中文版PDF+英文版PDF+習題題解:https://pan.baidu.com/s/1oRGp4_LfDVLo86r79pnXvg