座標下降法(Coordinate descent)和ADMM(交替方向乘子法)

座標下降法屬於一種非梯度優化的方法,它在每步迭代中沿一個座標的方向進行線性搜索(線性搜索是不需要求導數的),通過循環使用不同的座標方法來達到目標函數的局部極小值

假設目標函數是求解f(x)的極小值,其中x=(x_1,x_2,\ldots,x_n)是一個n維的向量,我們從初始點x^0開始(x^0是我們猜想的一個初值)對k進行循環:

相當於每次迭代都只是更新x的一個維度,即把該維度當做變量,剩下的n-1個維度當作常量,通過最小化f(x)來找到該維度對應的新的值。座標下降法就是通過迭代地構造序列x^0,x^1,x^2,\ldots來求解問題,即最終點收斂到期望的局部極小值點。通過上述操作,顯然有:

流程總結:

  1.  首先,我們把x向量隨機取一個初值。記爲x^0,上面的括號裏面的數字代表我們迭代的輪數,當前初始輪數爲0。
  2.  對於第k輪的迭代。我們從x^k_1開始,到x^k_n爲止,依次求x_i^{k}x_i^{k}的計算表達式如上文所描述。
  3. 檢查x^k向量和x^{k-1}向量在各個維度上的變化情況,如果在所有維度上變化都足夠小,那麼x^k即爲最終結果,否則轉入第二步,繼續第k+1輪的迭代。

座標軸下降法的求極值過程,可以和梯度下降做一個比較:

  1. 座標軸下降法在每次迭代中在當前點處沿一個座標方向進行一維搜索 ,固定其他的座標方向,找到一個函數的局部極小值。而梯度下降總是沿着梯度的負方向求函數的局部最小值。
  2. 座標軸下降優化方法是一種非梯度優化算法。在整個過程中依次循環使用不同的座標方向進行迭代,一個週期的一維搜索迭代過程相當於一個梯度下降的迭代。
  3. 梯度下降是利用目標函數的導數來確定搜索方向的,該梯度方向可能不與任何座標軸平行。而座標軸下降法法是利用當前座標方向進行搜索,不需要求目標函數的導數,只按照某一座標方向進行搜索最小值。
  4. 兩者都是迭代方法,且每一輪迭代,都需要O(mn)的計算量(m爲樣本數,n爲係數向量的維度)

參考文章:

Lasso迴歸算法: 座標軸下降法與最小角迴歸法小結

機器學習筆記——簡述座標下降法

座標下降法(Coordinate descent)

【機器學習】座標下降法(Coordinate descent)

 

ADMM(交替方向乘子法)

作者:大大大的v
鏈接:https://www.zhihu.com/question/36566112/answer/118715721
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
 

1) 優化問題是什麼:

最常見的優化問題長這樣(公式1):

min_x\quad f(x)\\

其中 x 是優化變量,也就是可以改變的數值,通過調節 x 的大小,使得目標函數 f(x) 的數值達到最小。

像(1)式那樣,只有函數,對於變量 x 沒有要求的話,其實是最簡單的一類優化問題:無約束優化問題(我們只考慮凸問題的情況下,如果你不知道什麼是凸問題的話,沒關係,那不重要,只要記住越凸越好=凸=)。

實際上我們對於優化變量 x 可能會有很多要求:

x 要滿足什麼集合啦, 什麼等式約束,不等式約束啦巴拉巴拉,這就好比我們希望通過學習升級打怪成爲高知女性就可以吊金龜婿一樣,這裏優化變量 x 暗指學歷,函數 f(x) 對應的是一個評分,也就是優質金龜婿不願意跟你處對象的評分(因爲是要最小化),金龜婿膚白貌美大長腿,那我小學學歷肯定是不夠的,初中文憑貌似也不太夠?所以我學啊學,學啊學,以爲學歷越高越好,結果好不容易讀了博,回頭一看,好嘞原來男神對另一半學歷是有要求的(也就是優化裏所說的約束):高中< x <=碩士。博士不做女人啦,這大概就是基於學歷的一個優化問題→_→

等式約束: subject. to  \quad Ax=b

不等式約束: subject. to \quad Ax\leqslant b

所以一個等式約束的優化問題長這樣(公式2):

min_x\quad f(x)\\sub.to \quad Ax=b

 

2)ADMM解決什麼優化問題:

min_{x,z}\quad f(x)+g(z)\\sub.to\quad Ax+Bz=c

也就意味着ADMM通常解決的是等式約束的優化問題,而且這個優化問題還有兩個優化變量 xz

回到剛剛找男朋友的問題上來,如果之前我們只考量學歷因素 x 的話,現在我們還要考量顏值因素 z!而且這兩個變量之間還是有等式關係的!(至於這個關係。。。大概就是那個什麼學歷越高,顏值就越。。。=凸=,荒謬,荒謬至極!)

事實上分佈式中的一致性優化問題(consensus),分享問題(sharing problem)等等都很好寫成這樣的形式,因爲每個節點的變量還要跟周圍節點變量產生關聯,但真正用ADMM的原因可能還是因爲ADMM又快又好用吧。。。

 

3)解決優化問題的方法:

方法中與ADMM最爲相關的大概就是原對偶方法中的增廣拉格朗日法(ALM)。

對偶方法:把公式2中的minimize問題與約束條件sub to通過一個對偶變量 \lambda 耦合在一起,形成一個叫做Lagrange函數的東西:

L(x,\lambda) = f(x)+\lambda^T(Ax-b)\\

原來帶約束求解 min_x f(x) ,現在求解對偶問題 \max_{\lambda}\min_{x}L(x,\lambda) ,兩個問題的最優解等價(原問題凸的情況下。爲什麼?公式好多,我再想想(查查)有沒有什麼直觀的解釋),而且現在沒了約束,豈不美哉(❁´◡`❁)*✲゚*

方法是對偶上升法:

step1:\ \ \ \ \ \ x^{k+1}=\arg\min_x \ L(x,\lambda^k)\\ step2: \ \ \ \lambda^{k+1} = \lambda^k+\rho(Ax^{k+1}-b)

對偶上升法其實很好理解,它把 \max_{\lambda}\min_{x}L(x,\lambda) ,也就是 \max_{\lambda}(\min_{x}L(x,\lambda)) 拆成了兩步:

第一步是固定對偶變量 \lambda ,求解\min_xL(x,\lambda)

第二步固定住變量 x ,像衆所周知的梯度下降法那樣操作,只不過這裏是arg max 問題所以變成了上升法。

 

後來有人嫌棄這個Lagrange函數還不夠凸,又對約束增加一個懲罰項,變成增廣拉格朗日函數

L(x,\lambda) = f(x)+\lambda^T(Ax-b)+\frac{\rho}{2}\|Ax-b\|^2\\

這樣就邁向更凸,算法也更強啦~

 

4)ADMM的流程:

ADMM的想法跟上面的思路就很一致啦,作爲一個primal-dual原對偶方法,首先,它要有個對偶函數,也就是增廣拉格朗日函數:

L(x,z,\lambda)=f(x)+g(z)+\lambda^T(Ax+Bz-c)+\frac{\rho}{2}\|Ax+Bz-c\|^2

然後,它像對偶上升法一樣分別固定另外兩個變量,更新其中一個變量:(也就是其名:交替方向)

step1:\ \ \ \ \ \ \  \  x^{k+1}=\arg\min_x \ L(x,z^{k},\lambda^k)\\  step2:\ \ \ \ \  z^{k+1}=\arg\min_z \ L(x^{k+1},z,\lambda^k)\\  step3: \lambda^{k+1} = \lambda^k+\rho(Ax^{k+1}+Bz^{k+1}-c)

重複直到不怎麼變化了,也就是收斂了。。。

至於怎麼求解 \arg\min L ,因爲無約束,梯度下降法啊,牛頓法啊等等都可以~其實就是大循環裏嵌套的小循環,step1~3是大循環,求解裏面的 \arg\min L 是小循環。

 

5)其他一些雜七雜八的話:

ADMM相當於把一個大的問題分成了兩個子問題,縮小了問題的規模,分而治之(?)

實際上有些算法用ADMM的思路,你看從ALM到ADMM相當於增加一個變量z,增加一個step就大大提升了算法性能,如果我再增加一個變量一個step呢~?但有工作指出理論上只有兩個block的ADMM能夠保證收斂(忘記在哪裏看到的,不對的話,我就把這句話刪掉!)

轉載自https://www.zhihu.com/question/36566112/answer/118715721

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章