關於ADMM的研究(二)


關於ADMM的研究(二)

4. Consensus and Sharing

本節講述的兩個優化問題,是非常常見的優化問題,也非常重要,我認為是ADMM算法通往並行和分布式計算的一個途徑:consensus和sharing,即一致性優化問題與共享優化問題。

Consensus

4.1 全局變量一致性優化(Global variable consensus optimization)(切割數據,參數(變量)維數相同)

所謂全局變量一致性優化問題,即目標函數根據數據分解成N子目標函數(子系統),每個子系統和子數據都可以獲得一個參數解xi,但是全局解只有一個z,於是就可以寫成如下優化命題:

mins.t.i=1Nfi(xi),xiRnxiz=0

注意,此時fi:RnR+仍是凸函數,而xi並不是對參數空間進行划分,這里是對數據而言,所以xi維度一樣xi,zRn,與之前的問題並不太一樣。這種問題其實就是所謂的並行化處理,或分布式處理,希望從多個分塊的數據集中獲取相同的全局參數解。

在ADMM算法框架下(先返回最初從擴增lagrangian導出的ADMM),這種問題解法相當明確:

Lρ(x1,,xN,z,y)=i=1N(fi(xi)+yTi(xiz)+(ρ/2)xiz22)s.t.C={(x1,,xN)|x1==xN}
xk+1izk+1yk+1i=argminx(fi(xi)+(yki)T(xizk)+(ρ/2)xiz22))=1Ni=1N(xk+1i+(1ρyki))=yki+ρ(xk+1izk+1)

y-update和z-update的yk+1izk+1i分別求個平均,易得y¯k+1=0,於是可以知道z-update步其實可以簡化為zk+1=x¯k+1,於是上述ADMM其實可以進一步化簡為如下形式:

xk+1iyk+1i=argminx(fi(xi)+(yki)T(xix¯k)+(ρ/2)xix¯k22))=yki+ρ(xk+1ix¯k+1)

這種迭代算法寫出來了,並行化那么就是輕而易舉了,各個子數據分別並行求最小化,然后將各個子數據的解匯集起來求均值,整體更新對偶變量yk,然后再繼續回帶求最小值至收斂。當然也可以分布式部署(hadoop化),但是說起來容易,真正工程實施起來又是另外一回事,各個子節點機器間的通信更新是一個需要細細揣摩的問題。

另外,對於全局一致性優化,也需要給出相應的終止迭代准則,與一般的ADMM類似,看primal和dual的residuals即可

rk22=i=1Nxkix¯k22,sk22=Nρx¯kix¯k122

4.2 帶正則項的全局一致性問題

下面就是要將之前所談到的經典的機器學習算法並行化起來。想法很簡單,就是對全局變量加上正則項即可,因此ADMM算法只需要改變下z-update步即可

mins.t.i=1Nfi(xi)+g(z),xiRnxiz=0xk+1izk+1yk+1i=argminx+i(fi(xi)+(yki)T(xizk)(ρ/2)xiz22))=argminz(g(z)+i=1N((yki)Tz+(ρ/2)xk+1iz22))=yki+ρ(xk+1izk+1)

同樣的,我們仍對z做一個平均處理,於是就有

zk+1=argminz(g(z)+(Nρ/2)zx¯k+1(1/ρ)y¯k22)

上述形式都取得是最原始的ADMM形式,簡化處理,寫成scaled形式即有

xk+1izk+1uk+1i=argminx(fi(xi)+(ρ/2)xizk+uki22))=argminz(g(z)+(Nρ/2)zxk+1iu¯k22)=uki+xk+1izk+1

這樣對於后續處理問題就清晰明了多了。可以看到如果g(z)=λ|z|1,即lasso問題,那么z-update步就用軟閾值operator即可。因此,對於大規模數據,要想用lasso等算法,只需要對數據做切塊(切塊也最好切均勻點),納入到全局變量一致性的ADMM框架中,即可並行化處理。下面給出一些實例。

切割大樣本數據,並行化計算

在經典的統計估計中,我們處理的多半是大樣本低維度的數據,現在則多是是大樣本高維度的數據。對於經典的大樣本低維度數據,如果機器不夠好,那么就抽樣部分數據亦可以實現較好估計,不過如果沒有很好的信息,就是想要對大樣本進行處理,那么切割數據,並行計算是一個好的選擇。現在的社交網絡、網絡日志、無線感應網絡等都可以這么實施。下面的具體模型都在受約束的凸優化問題中以及1-norm問題中提過,此處只不過切割數據,做成分布式模型,思想很簡單,與帶正則項的global consensus問題一樣的處理。經典問題lasso、sparse logistic lasso、SVM都可以納入如下框架處理。

有觀測陣ARm×n和響應值bRm,可以對應切分,即對矩陣A和向量b橫着切,

A=⎛⎝⎜⎜A1AN⎞⎠⎟⎟b=⎛⎝⎜⎜b1bN⎞⎠⎟⎟

於是原來帶正則項的優化問題就可以按照數據分解到多個子系統上去分別優化,然后匯集起來,形成一個global consensus問題。

mins.t.i=1Nli(Aixibi)+r(z)xiz=0,i=1,,Nxi,zRn

結合受約束的凸優化問題時所給出來的具體的ADMM算法解的形式,下面直接給出這些問題的ADMM迭代算法公式

(1)Lasso

xk+1izk+1uk+1i=(ATiAi+ρI)1(ATibi+ρ(zkuki))=S1/ρN(x¯k+1b+u¯k)=uki+xk+1izk+1

如果切割的數據量小於維數mi<n,那么求解時分解小的矩陣AiATi+ρI即可;其他求逆采用矩陣加速技巧即可。

(2)Sparse Logistic Regression

xk+1izk+1uk+1i=argminxi(li(Aixibi)+(ρ/2)xizk+uki22=S1/ρN(x¯k+1b¯+u¯k)=uki+xk+1izk+1

x-update步是需要用一些有效的算法來解決2正則的logistic回歸,比如L-BFGS,其他的優化算法應該問題不大吧。

(3)SVM

注意分類問題和回歸問題的損失函數不同,一般都是用l(sign(t)y)形式來尋求最優的分類權重使得分類正確。SVM使用Hinge Loss:(y)=max(0,1ty),即將預測類別與實際分類符號相反的損失給凸顯出來。分布式的ADMM形式

xk+1izk+1uk+1i=argminxi(1T(Aixi+1)++(ρ/2)xizk+uki22=ρ(1/λ)+Nρ(x¯k+1+u¯k)=uki+xk+1izk+1

4.3 一般形式的一致性優化問題(切割參數到各子系統,但各子系統目標函數參數維度不同,可能部分重合)

上述全局一致性優化問題,我們可以看到,所做的處理不過是對數據分塊,然后並行化處理。但是更一般的優化問題是,參數空間也是分塊的,即每個子目標函數fi(xi)的參數維度不同xi,Rni,我們稱之為局部變量。而局部變量所對應的的也將不再是全局變量z,而是全局變量中的一部分zg,並且不是像之前的順序對應,而可能是隨便對應到z的某個位置。可令g=G(i,),即將xi映射到z的某部位

(xi)j=zG(i,j)=z^i

如果對所有i有G(i,j)=j,那么xiz就是順序映射,也就是全局一致性優化問題,否則就不是。結合下圖就比較好理解

consensus

雖然如果用其他方法來做感覺會復雜,但是納入到上述ADMM框架,其實只不過是全局一致性優化問題的一個局部化變形,不過此時不是對數據進行分塊,是對參數空間進行分塊

mins.t.i=1Nfi(xi)+g(z),xiRnixiz^i=0,i=1,Nxk+1izk+1yk+1i=argminx(fi(xi)+(yki)Txi(ρ/2)xiz^ki22))=argminz(i=1N((yki)Tz^i+(ρ/2)xk+1iz^i22)))=yki+ρ(xk+1iz^k+1i)

后續想做平均化處理,即中間會發生重合的參數zi取值一樣的,那么z-update將只能找他對應的那些x進行平均化,也就是變成局部了,因為不是所有值都是要全局保持一致的。比如上面那個圖中的z1,z2,z3,z4都分別只要求在部分xi發生了共享需要保持一樣,而不是像之前全局要求每個xi對應的都是z。即

zk+1g=G(i,j)=g((xk+1i)j+(1/ρ)(yki)j)G(x,y)=g1

該式子表示就是z的第g個變量的平均值來源於所有映射到該變量的x與y的平均值。與之前的global類似,此時對於y的取均值會為0,因此z-update就變成了更簡單的形式

zk+1g=1kgG(i,j)=g(xk+1i)

同全局一致性優化問題一樣,我們可以加上正則項,然后也可以變成帶正則項的一般形式的一致性優化問題。此處不贅述,與全局基本類似。

Sharing

4.4 共享問題(sharing)(橫向切割數據,也可縱向切變量)

與之前的全局變量一致性優化問題類似,共享問題也是一個非常一般而且常見的問題。他的形式如下:

mini=1Nfi(xi)+g(i=1Nxi)

這里的第一部分局部損失fi(xi)與全局一致性優化是一樣的,即所有的xiRn,i=1,,N同維度,而對於一個共享的目標函數g則是新加入的。在實際中,我們常常需要優化每個子數據集上的損失函數,同時還要加上全局數據所帶來的損失;或者需要優化每個子系統的部分變量,同時還要優化整個變量。共享問題是一個非常重要而靈活的問題,它也可以納入到ADMM框架中,形式如下:

mins.t.i=1Nfi(xi)+g(i=1Nzi)xizi=0,ziRn,i=1,,N,xk+1izk+1uk+1i=argminxi(fi(xi)+(ρ/2)xizki+uki22))=argminz(g(i=1Nzi)+ρ/2i=1Nzixk+1iuki22)=uki+xk+1izk+1i

上述形式當然還不夠簡潔,需要進一步化簡。因為x-update可以不用擔心,分機並行處理優化求解即可,而對於z-update這里面需要對Nn個變量求解,想加快速度,就減少變量個數。於是想辦法通過和之前那種平均方式一樣來簡化形式解。

對於z-update步,令ai=uki+xk+1i,於是z-update步優化問題轉化為

mins.t.g(Nz¯)+(ρ/2)i=1Nziai22z¯=1Ni=1Nzi

z¯固定時,那么后面的最優解(類似回歸)為zi=ai+z¯a¯,帶入上式后於是后續優化就開始整體更新(均值化)

xk+1izk+1uk+1=argminxi(fi(xi)+(ρ/2)xixki+x¯kz¯k+uk22))=argminz(g(Nz¯)+Nρ/2z¯x¯k+1uk22)=uki+x¯k+1z¯k+1

另外,有證明如果強對偶性存在,那么global consensus問題與sharing問題是可以相互轉化的,可以同時達到最優,兩者存在着很緊密的對偶關系。

本節開頭提過,sharing問題用來切分數據做並行化,也可以切分參數空間做並行化。這對於高維、超高維問題是非常有好處的。因為高維統計中,大樣本是一方面問題,而高維度才是重中之重,如果能切分特征到低緯度中去求解,然后在合並起來,那么這將是一個很美妙的事情。上面利用regularized global consensus問題解決了切分大樣本數據的並行化問題,下面利用sharing思想解決常見的高維數據並行化問題

切割變量(特征)空間,並行化處理

同樣假設面對還是一個觀測陣ARm×n和響應觀測bRn,此時有n»m,那么要么就降維處理,要么就切分維度去處理,或者對於超高維矩陣,切分維度后再降維。此時A矩陣就不是像之前橫着切分,而是豎着切分,這樣對應着參數空間的切分:

A=[A1,,AN],AiRm×ni,x=(x1,,xN),xRni,Ax=i=1NAixi

於是正則項也可以切分為r(x)=Ni=1ri(xi)。那么最初的minl(Axb)+r(x)形式就變成了

minl(i=1NAixib)+i=1Nri(xi)

這個與sharing問題非常接近了,做點變化那就是sharing問題了

mins.t.l(i=1Nzib)+i=1Nri(xi)Aixizi=0,i=1,,Nxk+1izk+1uk+1=argminxi(ri(xi)+(ρ/2)AixiAixki+Ax¯¯¯¯¯kz¯k+uk22))=argminz(l(Nz¯b)+Nρ/2z¯Ax¯¯¯¯¯k+1uk22)=uki+Ax¯¯¯¯¯k+1z¯k+1

與之前的global consensus問題相比,ADMM框架x-update與z-update似乎是反過來了。於是將此形式直接套到Lasso等高維問題即有很具體的形式解了。

(1)Lasso

xk+1iz¯k+1uk+1=argminxi(λxi1+(ρ/2)AixiAixki+Ax¯¯¯¯¯kz¯k+uk22))=1N+ρ(b+ρAx¯¯¯¯¯k+1+ρuk)=uk+Ax¯¯¯¯¯k+1z¯k+1

|ATi(Aixki+z¯kAx¯¯¯¯¯kuk)|2λ/ρxk+1i=0(第i塊特征不需要用),這樣加快了x-update速度,不過這個對串行更有效,對並行起來也沒有多大用..

(2)Group Lasso 與lasso基本一樣,只是在x-update上有一個正則項的不同,有1-norm變成了2-norm

xk+1i=argminxi(λxi2+(ρ/2)AixiAixki+Ax¯¯¯¯¯kz¯k+uk22)

該問題其實就是按組最小化(ρ/2)|Aixiv|22+λ|xi|2,解為

ifATiv2λ/ρ,otherwisethenxi=0xi=(ATiAi+vI)1ATiv

涉及矩陣長短計算時,再看矩陣小技巧。

(3)Sparse Logstic Regression 也與lasso區別不大,只是z-update的損失函數不同,其余相同於是

z¯k+1=argminz¯(l(Nz¯)+(ρ/2)z¯Ax¯¯¯¯¯k+1uk22)

(4)SVM

SVM與之前的global consensus時候優化順序反了過來,與logistic rgression只是在z-update步不同(損失函數不同):

xk+1iz¯k+1uk+1=argminxi(λxi22+(ρ/2)AixiAixki+Ax¯¯¯¯¯kz¯k+uk22))=argminz¯(1T(Nz¯+1)++(ρ/2)z¯Ax¯¯¯¯¯k+1uk+1)=uk+Ax¯¯¯¯¯k+1z¯k+1

z-update解析解可以寫成軟閾值算子

(z¯k+1)i=⎧⎩⎨⎪⎪viN/ρ,1/N,vi,vi>1/N+N/ρvi[1/N,1/N+N/ρ]vi<1/Nvi=(Ax¯¯¯¯¯k+1+u¯k)i

(5)Generalized Additive Models

廣義可加模型是一個很適合sharing框架的問題。它本身就是對各個各個特征做了變化后(非參方法),重新表示觀測的方式

bj=1nfj(xj)

fi是線性變化時,則退化成普通線性回歸。此時我們目標優化的問題是

mini=1mli(j=1nfj(xij)bi)+j=1nrj(fj)

其中有m個觀測,n維特征(變量)。rj此時是對一個functional的正則,此時這個問題看起來似乎既可以對數據切分,也可以對特征切分,不過此時仍用sharing問題來做,相當於對特征切分為一個特征為一個子系統,於是有

fk+1jz¯k+1uk+1=argminfiFj(rj(fj)+(ρ/2)i=1m(fj(xij)fkj(xij)+z¯ki+f¯ki)+uki=argminz¯(i=1mli(Nz¯bi)+ρ/2j=1nz¯f¯k+1uk,f¯k=1nj=1nfkj(xij)=uk+f¯k+1z¯k+1

fj是一個2正則的損失,有直接求解的算法求解,z可以一塊一塊的求解?

最后再說一個經濟學中很重要的sharing問題的特例,即交換問題(exchange problem):

mins.t.i=1Nfi(xi)i=1Nxi=0,xiRn,i=1,N

此時共享目標函數g=0xi可以表示不同物品在N個系統上的交換數量,(xi)j可以表示物品j從子系統i上收到的交換數目,約束條件就可以看做在這些系統中物品交換是保持均衡穩定的。於是轉化為sharing問題,就有很簡單的ADMM解法(或者當做之前講過的受約束的凸優化問題來解,做投影):

xk+1iuk+1=argminxi(fi(xi)+(ρ/2)xixki+x¯k+uk22))=uki+x¯k+1

4.4 應用小總結

感覺上通過consensus problem和general consensus problem,我們可以看到並行和分布式部署優化方案的可行性。我們可以切分數據以及相應的目標函數,也可以切分變量到各個子系統上去,分別作優化,甚至我們可以大膽想象對不同類型數據塊用不同的優化算法,結合consensus問題和ADMM算法,達到同一個global variable的優化目的;或者對不同變量在不同類型數據塊上優化,即使有重疊,也可以結合general consensus思想和ADMM算法來解決這個問題。當然前提是能夠定義好需要估計的參數和優化的目標函數!大規模部署的前景還是很不錯的。下面具體分布式統計模型的構建便是ADMM算法非常好的應用。切分數據、切分變量(不過每個子系統的目標函數基本都是一樣的,其實應該可以不同)

5. Nonconvex問題

5.1 變量選擇(Regressor Selection)

5.2 因子模型(Factor Model Fitting)

5.3 雙凸優化(Bi-convex Problem)

非負矩陣分解(Nonnegative Matrix Factorization)

6. 具體實施與實際計算結果

這塊真的很實際,需要明白MPI的機理和Mapreduce、Graphlab等通信運作的機理,這樣才好部署ADMM算法,因為中間有很多迭代,需要做好子節點間參數與整體參數的通信,保持迭代時能同步更新參數。看實際運作,MPI和GraphLab可能更適合這種框架,Hadoop也是可以的,不過畢竟不是為迭代算法所生,要做好需要進行一些優化。Boyd提到Hadoop其中的Hbase更適合這種框架,因為Hbase是一種大表格,帶有時間戳,適合記錄迭代的記錄,這樣就不容易導致分布計算時候搞不清是哪一步的迭代結果了,導致通信調整比較復雜。不過在MapReduce框架下實施ADMM算法是沒有什么問題的,只要熟稔Hadoop的一些細節部分,基本沒有太大問題。

8. 總結

一個好的一般性算法,我個人覺得是易實施,並可大規模應用許多問題。可以讓統計學家卡在搞算法的瓶頸中解放出來,使得他們能快速用模擬,驗證自己構建可能較為復雜的模型。只有當看到一個令人感到欣慰的結果時,那些模型的統計性質的證明才可能是有意義的,如果事先連希望都看不到,那證明起來都可能底氣不足,讓人難以信服,更難以大規模應用統計學家所構建的模型。現在是一個高維數據、海量數據的年代,算法的重要性更會凸顯出來,一個好的模型如果沒有一個有效的算法支撐,那么他將可能什么都不是,Lasso頭幾年所遭遇的冷遇也充分證明了這一點,再比如在沒有計算機年代,Pearson的矩估計應用反而遠多於Fisher的MLE估計方法也是一個道理。好的一般性的解決方案,我想這不管是優化理論,還是統計等其他應用學科,雖然知道沒有最牛最終極的方法,但是能涌現一些大范圍適用的方法,那就是再好不過了。一招鮮吃遍天,人還都是喜歡簡單、安逸愛偷懶的嘛..

 

 

原文出處:http://joegaotao.github.io/cn/2014/02/admm/


免責聲明!

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



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