日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ADMM优化算法

發布時間:2023/12/9 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ADMM优化算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接:http://www.cnblogs.com/breezedeus/p/3496819.html

----------------------------------------------------------------------------------

從等式約束的最小化問題說起:??????????????????????????????????

????????????????????????????????????????????????????? ?
上面問題的拉格朗日表達式為:
????????????????????????????????????????????? ?
也就是前面的最小化問題可以寫為:
???????????????????????????????????????????????。
它對應的對偶問題為:
??????????????????????????????????????????????。
下面是用來求解此對偶問題的 對偶上升迭代方法
??????????????????????????????????? ?
這個方法在滿足一些比較強的假設下可以證明收斂。

?

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

?

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

?

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

?

定義新變量,那么(3.2-3.4)中的迭代可以變為以下形式:
???????????????????????????
在真正求解時通常會使用所謂的over-relaxation方法,也即在和中使用下面的表達式代替其中的:
?????????????????????????????????????????,
其中為relaxation因子。有實驗表明可以改進收斂性([2])。

?

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

?

假設把個樣本分成份,每份可以導入內存。此時我們把上面的問題重寫為下面的形式:?
????????????????????????????????????????????
除了把目標函數分成塊,還額外加了個等式約束,使得利用每塊樣本計算出來的模型參數都相等。那么,ADMM中的求解步驟(3.2)-(3.4)變為:?
?????????????????????????????
例如求解L1懲罰的LR模型,其迭代步驟如下(,):?
????????????????????????????????????
其中,的定義類似。

?

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

?

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


[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.

stanford的比較好的一個源碼和實例鏈接

http://www.stanford.edu/~boyd/papers/admm/

總結

以上是生活随笔為你收集整理的ADMM优化算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。