用ADMM求解大型機器學習問題


[本文鏈接:http://www.cnblogs.com/breezedeus/p/3496819.html,轉載請注明出處]

 

從等式約束的最小化問題說起:                                 
                                                     image
上面問題的拉格朗日表達式為:
                                             image
也就是前面的最小化問題可以寫為:
                                              \(
\min\limits_{x} \max\limits_{y} L(x, y)
\) 。
它對應的對偶問題為:
                                             \(
\max\limits_{y}  \min\limits_{x} L(x, y)
\) 。
下面是用來求解此對偶問題的對偶上升迭代方法
                                   image
這個方法在滿足一些比較強的假設下可以證明收斂。

 

為了弱化對偶上升方法的強假設性,一些研究者在上世紀60年代提出使用擴展拉格朗日表達式(augmented Lagrangian)代替原來的拉格朗日表達式:
                                 image
其中\(\rho > 0\)。對應上面的對偶上升方法,得到下面的乘子法(method of multipliers)
                                                    image

 

注意,乘子法里把第二個式子里的\(\alpha^k\)改成了擴展拉格朗日表達式中引入的\(\rho\)。這不是一個隨意行為,而是有理論依據的。利用\(L(x, y)\)可以導出上面最小化問題對應的原始和對偶可行性條件分別為(\( \frac{\partial L} {\partial y} = 0\),\( \frac{\partial L} {\partial x} = 0\)):
                                              image
既然\(x^{k+1}\) 最小化 \( L_{\rho}(x, y^{k})\),有:
                                      image 
上面最后一個等式就是利用了\( y^{k+1} = y^{k} + \rho(A x^{k+1}-b) \)。從上面可知,這種\(y^{k+1}\)的取法使得\( (x^{k+1}, y^{k+1}) \)滿足對偶可行條件\( \frac{\partial L} {\partial x} = 0 \)。而原始可行條件在迭代過程中逐漸成立。

 

乘子法弱化了對偶上升法的收斂條件,但由於在x-minimization步引入了二次項而導致無法把x分開進行求解(詳見[1])。而接下來要講的Alternating Direction Method of Multipliers (ADMM)就是期望結合乘子法的弱條件的收斂性以及對偶上升法的可分解求解性。ADMM求解以下形式的最小化問題:
                                             image
其對應的擴展拉格朗日表達式為:
                   image
ADMM包括以下迭代步驟:
                                       image
ADMM其實和乘子法很像,只是乘子法里把\(x\)和\(z\)放一塊求解,而ADMM是分開求解,類似迭代一步的Gauss-Seidel方法。其中(3.4)中的推導類似於乘子法,只是使用了\(z^{k+1}\)最小化\( L_{\rho}(x^{k+1}, z, y^k) \):
                                    image  
其中用到了\(z\)對應的對偶可行性式子:
                                                   \(
\frac{\partial L} {\partial z} = \nabla g(z) + B^Ty = 0
\)

 

定義新變量\( u=\frac{1}{\rho}y \),那么(3.2-3.4)中的迭代可以變為以下形式:
                          image
在真正求解時通常會使用所謂的over-relaxation方法,也即在\(z\)和\(u\)中使用下面的表達式代替其中的\( Ax^{k+1} \):
                                         \(
\alpha^k A x^{k+1} - (1-\alpha^k)(B z^k - c)
\),
其中\(\alpha^k\)為relaxation因子。有實驗表明\(\alpha^k \in [1.5, 1.8]\)可以改進收斂性([2])。

 

下面讓我們看看ADMM怎么被用來求解大型的機器學習模型。所謂的大型,要不就是樣本數太多,或者樣本的維數太高。下面我們只考慮第一種情況,關於第二種情況感興趣的讀者可以參見最后的參考文獻[1, 2]。樣本數太多無法一次全部導入內存,常見的處理方式是使用分布式系統,把樣本分塊,使得每塊樣本能導入到一台機器的內存中。當然,我們要的是一個最終模型,它的訓練過程利用了所有的樣本數據。常見的機器學習模型如下:
                                    \(
\text{minimize }_{x} \sum_{j=1}^{J} f_j(x) + g(x)
\),
其中\(x\)為模型參數,\(f_j(x)\)對應第\(j\)個樣本的損失函數,而\(g(x)\)為懲罰系數,如\(g(x) = ||x||_1\)。

 

假設把\(J\)個樣本分成\(N\)份,每份可以導入內存。此時我們把上面的問題重寫為下面的形式:
                                           image
除了把目標函數分成\(N\)塊,還額外加了\(N\)個等式約束,使得利用每塊樣本計算出來的模型參數\(x_i\)都相等。那么,ADMM中的求解步驟(3.2)-(3.4)變為:
                            image
例如求解L1懲罰的LR模型,其迭代步驟如下(\( u=\frac{1}{\rho}y \),\(g(z)=\lambda ||z||_1\)):
                                   image
其中\(\bar{x} \doteq \frac1N \sum_{i}^N x_i\),\(\bar{y}\)的定義類似。

 

在分布式情況下,為了計算方便通常會把\(u\)的更新步驟挪在最前面,這樣\(u\)和\(x\)的更新可以放在一塊:
                                     image

 

ADMM的框架確實很牛逼,把一個大問題分成可分布式同時求解的多個小問題。理論上,ADMM的框架可以解決大部分實際中的大尺度問題。我自己全部實現了一遍這個框架,主要用於求解LR問題,下面說說我碰到的一些問題:
1. 收斂不夠快,往往需要迭代幾十步。整體速度主要依賴於\(x_i\)更新時所使用的優化方法,個人建議使用liblinear里算法,但是不能直接拿來就用,需要做一些調整。
2. 停止准則和\(\rho\)的選取:停止准則主要考量的是\(x_i\)和\(z\)之間的差異和它們本身的變動情況,但這些值又受\(\rho\)的取值的影響。它們之間如何權衡並無定法。個人建議使用模型在測試集上的效果來確定是否停止迭代。
3. 不適合MapReduce框架實現:需要保證對數據的分割自始至終都一致;用MPI實現的話相對於其他算法又未必有什么優勢(如L-BFGS、OwLQN等)。
4. relaxation步驟要謹慎:\(\alpha\)的取值依賴於具體的問題,很多時候的確可以加快收斂速度,但對有些問題甚至可能帶來不收斂的后果。用的時候不論是用x -> z -> u的更新步驟,還是用u -> x -> z的更新步驟,在u步使用的x_hat要和在z步使用的相同(使用舊的z),而不是使用z步剛更新的z重算。
5. warm start 和子問題求解逐漸精確的策略可以降低\(x_i\)更新時的耗時,但也使得算法更加復雜,需要設定的參數也增加了。


[References]
[1] S. Boyd. Alternating Direction Method of Multipliers (Slides).
[2] S. Boyd et al. Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers, 2010.


免責聲明!

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



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