理解ADMM, ALF和Split Bregman

引言

在圖像去模糊,低光照圖像增強和去噪等任務時,我們都會引入各種先驗或約束項來緩解這些t逆問題(inverse problems)的病態性(ill-posedness)。比如,我們會用L2L_2, L1L_1等約束圖像的光滑性,或者梯度的稀疏性。在貝葉斯框架,如最大後驗估計(MAP), 變分法(variational method),求解這些問題都需要相關的優化算法。在很多文章中都會說,我用了啥方法求解,對於我這個優化理論的小白來說,實在是一頭霧水。我本來打算系統地學習優化理論,但是我發現,等自己什麼都瞭解一下再去做科研黃花菜都涼了。且不說都學不學得會,就算學會了也不一定都能用到。於是我決定不再做一個“倉鼠”, 總是收藏各種資源。我要把在解決具體問題過程中遇到的相關算法喫透。

以下介紹ADMM, ALF和Split Bergman,算作一個知識輸出。一方面有利於自己組織知識結構,另一方面也希望可以給同行做點微不足道的貢獻。

Alternating Direction Method of Multipliers

ADMM: 交替方向乘子法(Alternating Direction Method of Multipliers,ADMM)是求解約束問題的最優化算法框架, 通常解決的是等式優化問題。主要思路就是“各個擊破,分而治之”,將一個大的全局的問題分解爲幾個子問題(sub-problem):原始變量、分裂變量以及對偶變量(即拉格朗日系數,Lagrange coefficient)三種變量的交替更新^ 1。從其命名我們可以知道,“交替”是一個很重要的策略。這個算法是每個子問題就是求解一個分量,與此同時固定其他分量。整個優化就是一個大循環,大循環中有幾個小循環,這些小循環就是子問題的優化過程^ 2

Augmented Lagrangian Multipliers

ALM: 在談增廣拉格朗日函數(Augmented Lagrangian Multipliers, ALM)前,我們要講Lagrangian Multipliers,這就是高數課本中的那個拉格朗日(他來了!他來了!)函數,那時我們要求解一個目標函數f(x,y)f(x, y)的極值,另外要有一個限制條件g(x,y)=cg(x, y)=c

我們那個時候是怎麼做的呢?我們會構造一個新的函數L(x,y,λ)=f(x,y)+λ(g(x,y)c)L(x, y,\lambda)=f(x, y)+\lambda(g(x, y)-c)。值得注意的是λ\lambda就是上面所說的拉格朗日系數,也就是對偶變量。然後我們會分別對x,y,λx,y,\lambda求偏導: Lx=0,Ly=0,Lλ=0\frac{\partial L}{\partial x}=0,\frac{\partial L}{\partial y}=0,\frac{\partial L}{\partial \lambda}=0

對於ALM, 我們要關注的是"Augmented",所謂“增廣”,大白話就是加了東西嘛?在LF基礎上, ALM加了對約束增加一個懲罰項(這是一個二次懲罰項)。這篇博文中講,之所以加上這麼一個懲罰項,是因爲LF還不夠“凸”(越“凸”越強,我笑了!)。引入懲罰就是把約束問題變成非約束問題^ 3(”非約束“和”凸“是等價的概念嘛?如果你有相關理論解釋請留言吧!)。在另外一篇博文中分析了爲什麼加的是懲罰項是二次的原因:

至於爲什麼加的是二次懲罰項,主要因爲我們求解的問題有個前提:針對於等式約束或者小於等於型不等式約束,恰能用二次懲罰項建模

在某乎中有人評論道:

Lagrange Multiplier可以看成是linear penalty,Augmented Lagrangian可以看成是linear+quadratic penalty。Augmented Lagrangian等式約束更容易被滿足,即Augmented Lagrangian的收斂性更強,收斂速度也會快一些。

總而言之,針對於上面舉的一個LM例子,最終的ALF表示爲:

L(x,y,λ)=f(x,y)+λ(g(x,y)c)+ρ2g(x,y)c2L(x, y,\lambda)=f(x, y)+\lambda(g(x, y)-c)+\frac{\rho }{2}\left \| g(x, y)-c\right \|^2

針對於這個ALF函數,ADMM的流程如下:

  1. 求解xx(同時固定y,λy,\lambda),xk+1=arg minxL(x,yk,λk)x^{k+1}= \underset{x}{\argmin}L(x,y^k,\lambda^k)
  2. 求解yy(同時固定x,λx,\lambda),yk+1=arg minyL(xk+1,y,λk)y^{k+1}= \underset{y}{\argmin}L(x^{k+1},y,\lambda^k)
  3. 求解λ\lambda(上面已經得到了xk+1,yk+1x^{k+1},y^{k+1}),λk+1=λk+ρ(g(xk+1,yk+1)c)\lambda^{k+1}= \lambda^k+\rho(g(x^{k+1},y^{k+1})-c)

小結

我們針對ALM和ADMM做一個小小的總結:

  • LF收斂困難,但是函數幾個方向是可以分解的。
  • 爲提高收斂性,ALF在LF基礎上引入二次懲罰項,但二次懲罰項破壞了LF的可分解特性
  • ADMM就是爲了解耦同時又可以保證ALF的收斂性而被提出(只是衆多方法中的一種,歡迎補充)。因此有人總結道:ADMM=Augmented Lagrangian+Alternating Direction Minimization, 即ALF早就有了,ADMM只是一種交替優化的一種方式^ 4

Splitt Bregman

Splitt Bregman: 在約束圖像梯度方面,L1L_1L2L_2更稀疏,但也更難以求解。分裂Bregman迭代算法是爲了求解L1L_1正則約束的優化問題的(這篇文章談到ADMM也可以求解L1L_1正則約束問題)。本質上與ADMM一樣, 並無區別,這篇博文談到分裂Bregman只是縮放版的ADMM(截至本文完成時,我只是一個門外漢,先蹲個坑,以後會比較兩者區別)。

最後貼一個S. Boyd的論文中ADMM的Matlab代碼網頁,這裏有許多examples.

這裏還有一篇文章對S. Boyd的2011年的文章《Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers》翻譯和總結,推薦閱讀:
[1] http://joegaotao.github.io/cn/2014/02/admm

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