交替方向乘子法(ADMM)的原理和流程的白話總結
作者:大大大的v
鏈接:https://www.zhihu.com/question/36566112/answer/118715721
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
多年前第一次接觸到ADMM時候我關於優化的基礎知識少的可憐(雖然現在也少得可憐),那些公式是什么鬼。當然如果有優化基礎的話直接看S.Boyd的那本專著就好啦。我試着寫給多年前一窮二白的自己,理一下思路。
1) 優化問題是什么:
最常見的優化問題長這樣(公式1):
其中 是優化變量,也就是可以改變的數值,通過調節
的大小,使得目標函數
的數值達到最小。
像(1)式那樣,只有函數,對於變量 沒有要求的話,其實是最簡單的一類優化問題:無約束優化問題(我們只考慮凸問題的情況下,如果你不知道什么是凸問題的話,沒關系,那不重要,只要記住越凸越好=凸=)。
實際上我們對於優化變量 可能會有很多要求:
要滿足什么集合啦, 什么等式約束,不等式約束啦巴拉巴拉,這就好比我們希望通過學習升級打怪成為高知女性就可以吊金龜婿一樣,這里優化變量
暗指學歷,函數
對應的是一個評分,也就是優質金龜婿不願意跟你處對象的評分(因為是要最小化),金龜婿膚白貌美大長腿,那我小學學歷肯定是不夠的,初中文憑貌似也不太夠?所以我學啊學,學啊學,以為學歷越高越好,結果好不容易讀了博,回頭一看,好嘞原來男神對另一半學歷是有要求的(也就是優化里所說的約束):高中<
<=碩士。博士不做女人啦,這大概就是基於學歷的一個優化問題→_→
等式約束:
不等式約束:
所以一個等式約束的優化問題長這樣(公式2):
2)ADMM解決什么優化問題:
也就意味着ADMM通常解決的是等式約束的優化問題,而且這個優化問題還有兩個優化變量 跟
!
回到剛剛找男朋友的問題上來,如果之前我們只考量學歷因素 的話,現在我們還要考量顏值因素
!而且這兩個變量之間還是有等式關系的!(至於這個關系。。。大概就是那個什么學歷越高,顏值就越。。。=凸=,荒謬,荒謬至極!)
事實上分布式中的一致性優化問題(consensus),分享問題(sharing problem)等等都很好寫成這樣的形式,因為每個節點的變量還要跟周圍節點變量產生關聯,但真正用ADMM的原因可能還是因為ADMM又快又好用吧。。。
3)解決優化問題的方法:
方法中與ADMM最為相關的大概就是原對偶方法中的增廣拉格朗日法(ALM)。
對偶方法:把公式2中的minimize問題與約束條件sub to通過一個對偶變量 耦合在一起,形成一個叫做Lagrange函數的東西:
原來帶約束求解 ,現在求解對偶問題
,兩個問題的最優解等價(原問題凸的情況下。為什么?公式好多,我再想想(查查)有沒有什么直觀的解釋),而且現在沒了約束,豈不美哉(❁´◡`❁)*✲゚*
方法是對偶上升法:
對偶上升法其實很好理解,它把 ,也就是
拆成了兩步:
第一步是固定對偶變量 ,求解
。
第二步固定住變量 ,像眾所周知的梯度下降法那樣操作,只不過這里是arg max 問題所以變成了上升法。
后來有人嫌棄這個Lagrange函數還不夠凸,又對約束增加一個懲罰項,變成增廣拉格朗日函數
這樣就邁向更凸,算法也更強啦~
所以老師那句話什么來着,我凸了,也變強了。。。。
4)ADMM的流程:
ADMM的想法跟上面的思路就很一致啦,作為一個primal-dual原對偶方法,首先,它要有個對偶函數,也就是增廣拉格朗日函數:
然后,它像對偶上升法一樣分別固定另外兩個變量,更新其中一個變量:(也就是其名:交替方向)
重復直到不怎么變化了,也就是收斂了。。。
至於怎么求解 ,因為無約束,梯度下降法啊,牛頓法啊等等都可以~其實就是大循環里嵌套的小循環,step1~3是大循環,求解里面的
是小循環。
5)其他一些雜七雜八的話:
ADMM相當於把一個大的問題分成了兩個子問題,縮小了問題的規模,分而治之(?)
實際上有些算法用ADMM的思路,你看從ALM到ADMM相當於增加一個變量z,增加一個step就大大提升了算法性能,如果我再增加一個變量一個step呢~?但有工作指出理論上只有兩個block的ADMM能夠保證收斂(忘記在哪里看到的,不對的話,我就把這句話刪掉!)