關於ADMM的研究(一)


關於ADMM的研究(一)

最近在研究正則化框架如何應用在大數據平台上。找到了《Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers》這篇文章,感覺很適合現在的研究。下面轉載的一篇博客,寫的很細致,很有用。

業界一直在談論大數據,對於統計而言,大數據其實意味着要不是樣本量增加n,要不就是維度的增加p,亦或者兩者同時增加,並且維度與樣本量的增長速度呈線性或者指數型增長。在稀疏性的假設條件下,再加上一些正則性方法,統計學家可以證明各種加penalty的模型所給出的參數估計具有良好的統計性質,收斂速度也有保證,同時還會給出一些比較好的迭代算法,但是,他們並沒有考慮真實環境下的所消耗的計算時間。雖然統計學家也希望盡量尋求迭代數目比較少的算法(比如one-step估計),但是面對真實的Gb級別以上的數據,很多時候我們還是無法直接用這些算法,原因是一般的硬件都無法支撐直接對所有數據進行運算的要求。如果想減少抽樣誤差,不想抽樣,又想提高估計的精度,那么還是需要尋求其他思路,結合已有的模型思想來解決這些問題。在目前條件下,並行化、分布式計算是一種比較好的解決思路,利用多核和多機器的優勢,這些好算法便可以大規模應用,處理大數據優勢便體現出來了。對於統計而言,數據量越大當然信息越可能充分(假設冗余成分不是特別多),因為大樣本性質本身就希望樣本越多越好嘛。

本文是基於Stephen Boyd 2011年的文章《Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers》進行的翻譯和總結。Boyd也給出了利用matlab的CVX包實現的多種優化問題的matlab示例

1. 優化的一些基本算法思想

ADMM算法並不是一個很新的算法,他只是整合許多不少經典優化思路,然后結合現代統計學習所遇到的問題,提出了一個比較一般的比較好實施的分布式計算框架。因此必須先要了解一些基本算法思想。

1.1 Dual Ascent

對於凸函數的優化問題,對偶上升法核心思想就是引入一個對偶變量,然后利用交替優化的思路,使得兩者同時達到optimal。一個凸函數的對偶函數其實就是原凸函數的一個下界,因此可以證明一個較好的性質:在強對偶性假設下,即最小化原凸函數(primal)等價於最大化對偶函數(dual),兩者會同時達到optimal。這種轉化可以將原來很多的參數約束條件變得少了很多,以利於做優化。具體表述如下:

mins.t.f(x)Ax=bL(x,y)=f(x)+yT(Axb)g(y)=infxL(x,y)

在強對偶性的假設下,primal和dual問題同時達到最優。

x=argminxL(x,y)

因此,若對偶函數g(y)可導,便可以利用梯度上升法,交替更新參數,使得同時收斂到最優。迭代如下:

xk+1:yk+1:=argminxL(x,yk)(x-最小化步)=yk+αkg(y)=yk+αk(Axk+1b)(對偶變量更新,αk是步長)

g不可微的時候也可以將其轉化下,成為一個所謂的subgradient的方法,雖然看起來不錯,簡單證明下即可知道xkyk同時可達到optimal,但是上述條件要求很苛刻:f(x)要求嚴格凸,並且要求α選擇有比較合適。一般應用中都不會滿足(比如f(x)是一個非零的仿射函數),因此dual ascent不會直接應用。

1.2 Dual Decomposition

雖然dual ascent方法有缺陷,要求有些嚴格,但是他有一個非常好的性質,當目標函數f是可分的(separable)時候(參數抑或feature可分),整個問題可以拆解成多個子參數問題,分塊優化后匯集起來整體更新。這樣非常有利於並行化處理。形式化闡述如下:

mins.t.f(x)=i=1Nfi(xi),xiRni,xRnAx=i=1NAixi=b,(對A矩陣按列切分開)L(x,y)=i=1NLi(xi,y)=i=1N(fi(xi)+yTAixi1NyTb)

因此可以看到其實下面在迭代優化時,x-minimization步即可以拆分為多個子問題的並行優化,對偶變量更新不變這對於feature特別多時還是很有用的。

xk+1i:yk+1:=argminxLi(xi,yk)(多個xi並行最小化步)=yk+αkg(y)=yk+αk(Axk+1b)(匯集整體的x,然后對偶變量更新)

對偶分解是非常經典的優化方法,可追溯到1960年代。但是這種想法對后面的分布式優化方法影響較大,比如近期的graph-structure優化問題。

1.3 Augmented Lagrangians and the Method of Multipliers

從上面可以看到dual ascent方法對於目標函數要求比較苛刻,為了放松假設條件,同時比較好優化,於是就有了Augmented Lagrangians方法,目的就是放松對於f(x)嚴格凸的假設和其他一些條件,同時還能使得算法更加穩健。

Lρ(x,y)=f(x)+yT(Axb)+ρ2Axb22mins.t.f(x)+ρ2Axb22Ax=b

從上面可以看到該問題等價於最初的問題,因為只要是可行解對目標函數就沒有影響。但是加了后面的(ρ/2)Axb22懲罰項的好處是使得對偶函數gρ(y)=infxLρ(x,y)在更一般的條件下可導。計算過程與之前的dual ascent基本一樣,除了最小化x時候加了擴增項。

xk+1yk+1=argminxLρ(x,yk)=yk+ρ(Axk+1b)

上述也稱作method of multipliers,可能也是因為更新對偶變量y時步長由原來變化的αk轉為固定的ρ了吧。該算法在即使f(x)不是嚴格凸或者取值為+情況都可以成立,適用面更廣。同樣可以簡單證明primal變量x和對偶變量y可以同時達到最優。

雖然Augmented Lagrangians方法有優勢,但也破壞了dual ascent方法的利用分解參數來並行的優勢。當f是separable時,對於Augmented Lagrangians卻是not separable的(因為平方項寫成矩陣形式無法用之前那種分塊形式),因此在xmin步時候無法並行優化多個參數xi。如何改進,繼續下面的議題就可以慢慢發現改進思想的來源。

2. Alternating Direction Method of Multipliers(ADMM)

2.1 ADMM算法概述

為了整合dual ascent可分解性與method multiplers優秀的收斂性質,人們就又提出了改進形式的優化ADMM。目的就是想能分解原函數和擴增函數,以便於在對f更一般的假設條件下並行優化。ADMM從名字可以看到是在原來Method of Multipliers加了個Alternating Direction,可以大概猜想到應該是又想引入新變量,然后交叉換方向來交替優化。形式如下:

mins.t.f(x)+g(z)Ax+Bz=cLρ(x,z,y)=f(x)+g(z)+yT(Ax+Bzc)+(ρ/2)Ax+Bzc22

從上面形式確實可以看出,他的思想確實就是想把primal變量、目標函數拆分,但是不再像dual ascent方法那樣,將拆分開的xi都看做是x的一部分,后面融合的時候還需要融合在一起,而是最先開始就將拆開的變量分別看做是不同的變量x和z,同時約束條件也如此處理,這樣的好處就是后面不需要一起融合x和z,保證了前面優化過程的可分解性。於是ADMM的優化就變成了如下序貫型迭代(這正是被稱作alternating direction的緣故):

xk+1zk+1yk+1=argminxLρ(x,zk,yk)=argminzLρ(xk+1,z,yk)=yk+ρ(Axk+1+Bzk+1c)

后面我們可以看到這種拆分思想非常適合統計學習中的1-norm等問題:loss + regulazition(注意:一定要保證z分解出來,ADMM借助的就是用一個z變量來簡化問題,不管他是約束還是其他形式也罷,需要構造一個z出來,后面具體到細節問題我們會有更深的體會)。

為了簡化形式,ADMM有一個scaled form形式,其實就是對對偶變量做了scaled處理。先定義每一步更新的殘差為r=Ax+Bzc,於是稍加計算

yT(Ax+Bzc)+(ρ/2)Ax+Bzc22=yTr+(ρ/2)r22=(ρ/2)r+(1/ρ)y22(1/2ρ)y22=(ρ/2)r+u22(ρ/2)u22

此處u=(1/ρ)y稱為scaled dual variable,並令每一步迭代的殘差為rk=Axk+Bzkc,以及累計殘差uk=u0+kj=1rj,於是ADMM形式就可以簡化為如下形式

xk+1zk+1uk+1=argminxLρ(x,zk,yk)=argmin(f(x)+(ρ/2)Ax+Bzkc+uk22)=argminzLρ(xk+1,z,yk)=argmin(g(z)+(ρ/2)Axk+1+Bzc+uk)=uk+ρ(Axk+1+Bzk+1c)

寫成這種形式有利於后面簡化優化問題,當然可以不作任何處理。

2.2 ADMM算法性質和評價

(1)收斂性

關於收斂性,需要有兩個假設條件:

  • f和g分別是擴展的實數函數Rn(Rm)R+,且是closed、proper和convex的;
  • 擴增的lagrangian函數L0有一個鞍點(saddle point);對於約束中的矩陣A,B都不需要滿秩。

在此兩個假設下,可以保證殘差、目標函數、對偶變量的收斂性。

Note:實際應用而言,ADMM收斂速度是很慢的,類似於共軛梯度方法。迭代數十次后只可以得到一個acceptable的結果,與快速的高精度算法(Newton法,內點法等)相比收斂就慢很多了。因此實際應用的時候,其實會將ADMM與其他高精度算法結合起來,這樣從一個acceptable的結果變得在預期時間內可以達到較高收斂精度。不過一般在大規模應用問題中,高精度的參數解對於預測效果沒有很大的提高,因此實際應用中,短時間內一個acceptable的結果基本就可以直接應用預測了。

(2)停止准則

對於ADMM的能到到optimal的條件此處就不做贅述了,與基本的primal和dual feasibility 的條件差不多,即各primal variable的偏導和約束條件為0,從最優條件中可以得到所謂的對偶殘差(dual residuals)和初始殘差(primal residuals)形式:

sk+1rk+1=ρATB(zk+1zk)(dualresiduals)=Axk+1+Bzk+1c(primalresiduals)

相對而言,此處更難把握的其實是停止准則,因為收斂速度問題,要想獲得一個還過得去可以拿來用的參數解,那么判斷迭代停止還是比較重要的。實際應用中,一般都根據primal residuals和dual residuals足夠小來停止迭代,閾值包含了絕對容忍度(absolute tolerance)和相對容忍度(relative tolerance),設置還是非常靈活和難把握的(貌似網上有不少人吐槽這個停止准則的不靠譜- -!),具體形式如下:

sk2ϵdualrk2ϵpri=n√ϵabs+ϵrelATyk2=p√ϵabs+ϵrelmax{Axk2,Bzk,c2}

上面的p√n√分別是維度和樣本量。一般而言,相對停止閾值ϵrel=103或者104,絕對閾值的選取要根據變量取值范圍來選取(咋選的呢?沒說額,具體比例都不給說- -!)

另外一些細節問題,比如原來懲罰參數ρ是不變的,一些文獻也做了一些可變的懲罰參數,目的是為了降低對於懲罰參數初始值的依賴性。不過變動的ρ會導致ADMM的收斂性證明比較困難,因此實際中假設經過一系列迭代后ρ也穩定,邊可直接用固定的懲罰參數ρ了。還有其他問題,諸如x與z迭代順序問題,實際操作下有所有不同,這些不是特別重要之處,可以忽略。其他與ADMM比較相關算法的有dual ADMM算法,distributed ADMM算法,還有整合了ADMM與proximal method of multiplier的算法

2.3 ADMM一般形式與部分具體應用

當構造了ADMM算法中的f,g,A,B后,便可直接應用該算法了。我們會經常遇到如下三種一般形式的問題

  • 二次目標優化項(quadratic objective terms);
  • 可分的目標函數和約束(separable objective and constraints);
  • 光滑目標函數項(smooth objective terms)。

為下面討論的方便,下面僅寫出x-update的形式,根據ADMM簡化形式,z-update對稱更新即可:

x+=argminx(f(x)+(ρ/2)Axv22),v=Bz+cu

上述更新x時候z和u都定下來,是個常數,z更新時后相同。

Proximity Operator(近鄰算子)

上述形式有種特殊情況:當A=I時,即約束條件沒有x的線性組合形式,只是對於x的可行區域進行限制。這種問題相當常見,目前統計學習也有不少類似的高維優化問題。此時x-update如下

x+=argminx(f(x)+(ρ/2)xv22),v=Bz+cu

上述右邊可以寫成v的函數proxf,ρ(v)被稱作帶懲罰ρ的f的proximity operator(通常稱作proximal minimization,近鄰最小化),在變分分析中,還被稱作f的Moreau-Yosida正則化。如果f形式很簡單,可以寫出x-update的解析解,比如f是非空的凸包C上的示性函數,那么x-update就可以直接寫成投影形式

x+=argminx(f(x)+(ρ/2)xv22)=ΠC(v)

投影與懲罰參數ρ無關。若f是非負象限Rn+的投影,則直接有x+=(v)+

下面再談談上述提到的三種一般形式的優化問題。

(1)Quadratic Objective Terms

假設f是如下(凸)的二次函數

f(x)=12xTPx+qTx+r

P是對稱的半正定矩陣PSn+。這種形式問題也包含了f是線性或者常數的特殊情況。若P+ρATA可逆,那么x-update步求個導即有如下的顯示解,是v的仿射函數

x+=(P+ρATA)1(ρATvq)

因此在x-minnimiztion步只需要做兩個矩陣運算即可,求逆與乘積,選用合適的線性運算庫即可以得到不錯的計算性能。當然還可以利用一些矩陣分解技巧,這個要看矩陣大小和稀疏程度。因為對於Fx=g,可以將F=F1F2Fk,然后Fizi=zi1,z1=F11g,x=zk,這樣會更節省計算時間。其他矩陣計算技巧,基本都是如何對矩陣大規模求解,利用矩陣的稀疏性、緩存分解等來提高性能。此處不贅述,有個很重要的求逆的定理很有用:

(P+ρATA)1=P1ρP1AT(I+ρAP1AT)1AP1

如果對於上述二次函數受限於某仿射集x-update步就更復雜些,如

f(x)=12xTPx+qTx+rdormf={xFx=g}

x-update還有個重要的KKT方程可用:

(P+ρIFFT0)(xk+1v)+(qρ(zkuk)g)=0

(2)Smooth Objective Terms

f光滑時,那么求導即成為可能了。對於一些非線性優化問題,包含梯度算法等方法的L-BFGS算法可以用。對於該算法有些小技巧如下:

  • 早終止(early termination):當f(x)+(ρ/2)|Axv|22梯度很小時,早點終止迭代,否則后面就很慢了。
  • 熱啟動(warm start):即啟動迭代時,利用之前迭代過的值帶入即可。

(3)Separable objective and constraints 可分函數和約束對於並行計算和分布式計算來說是一個好消息。如果ATA是分塊的對角陣,那么約束中|Ax|22也是可分的,則擴增的拉格朗日函數Lρ也是可分的。(注意,此處是指函數中的參數可分成小子塊,而不是說數據可分。)下面有一個很重要的例子,即soft thresholding(針對l1+l2問題):

f(x)=λ|x|1,λ>0,並且A=I時,那么x-update就變成了

x+=argminx(λxi+(ρ/2)xv22)

這種形式很常見在目前的高維統計中,雖然第一項在0處不可導,但是也有解析解,被稱作軟閾值(soft thresholding),也被稱作壓縮算子(shrinkage operator)。

x+i=Sλ/ρ(vi),Sk(a)=⎧⎩⎨⎪⎪ak0,a+k,a>k|a|ka<kSk(a)=(1k|a|)+a

在優化領域,軟閾值被稱作是1-norm問題的近鄰算子(proximity operator)。

3. 一些具體優化應用

3.1受約束的凸優化問題

一般的受約束的凸優化問題可以寫成如下形式

mins.tf(x)xC

此類問題可以寫成ADMM形式

mins.tf(x)+g(z)xz=0Lρ(x,z,u)=f(x)+g(z)+(ρ/2)xz+u22

其中的g函數即C的示性函數,上述是scaled形式,那么具體算法就是

xk+1zk+1uk+1=argmin(f(x)+(ρ/2)xzk+uk22)=ΠC(xk+1+uk)=uk+xk+1zk+1

則上述xmin就變成了一個具體的受約束的優化問題。比如對於經典的二次規划問題(QP)

mins.t12xTPx+qTxAx=b,x0

寫成ADMM形式

mins.tf(x)+g(z)xz=0f(x)g(z)=12xTPx+qTx,dormf={x|Ax=b}=I(ΠRn+(z))

即受約束的區域就是{xx0}g是向非負象限投影的示性函數。而x-update就變成了之前在Quadratic Objective Terms中談到的f(x)有仿射集定義域的優化問題,根據KKT條件即可寫出來x-update更新的形式,參見2.3節。

如果上述對x限制不是限制x0上,而是一個錐約束(conic constraint)xK,那么x-update不變,繼續上述KKT方程,而只需要變一下z-update,將向Rn+投影改成向K投影。比如將上述約束改成{Ax=b,x§n+},即x屬於半正定空間,那么向(S^n_{+})投影就變成了一個半正定問題,利用特征值分解可以完成。這種受約束的凸優化問題的形式化對后續許多問題,特別是我們很關注的1-norm問題很重要,基本上都是轉化成這種形式來直接應用ADMM算法,所以這里要好好把握其核心思想和形式。

雖然我對優化不在行,但是感覺優化問題還是挺有意思的,下面是一個經典問題,即找到兩個非空凸包的交集中的一點。該算法都可以追溯到1930年代的Neumann交替投影算法(alternating projections algorithm):

xk+1zk+1=ΠC(zk)=ΠD(xk+1)

ΠC,ΠD分別是兩個集合的歐式空間投影。寫成ADMM形式就是

xk+1zk+1uk+1=ΠC(zkuk)=ΠD(xk+1+uk)=uk+xk+1zk+1

上述問題還可推廣至找到N個非空凸包交集中一個點的問題,這樣其實在x步是可以並行來做的,於是就有

xk+1izk+1uk+1i=ΠAi(zkuki)=1Ni=1N(xk+1i+uki)=uki+xk+1izk+1ui收斂均趨向於0,zk+1=x¯k+1xk+1iuk+1i=ΠAi(x¯kuki)=uki+(xk+1ix¯k+1)

3.2 1-norm問題

高維統計理論的發展,如果要追溯起來我覺得可以從Lasso解法算起,類似的思想在往前追可能是Huber相關的工作。是對於lasso問題,由於當年大家還沒搞清楚lasso和boosting之間關系,對於sparsity性質不了解,誰也不知道如何很好地解決這個問題。直到后面Efron提出了LARS算法,對兩者的路徑解相似性做了很好的闡述,於是后面關於變量選擇,關於basis-pursuit,compressed sensing,sparse graphical models等各種新問題的產生,隨后各種優化算法也隨之涌現出來,諸如Gradient Projection, Proximal methods,ADMM (Alternating Direction Method of Multipliers), (Split) Bregman methods,Nesterov’s method。不過要能夠大規模部署1-norm的解決方案,那么這些算法中ADMM可能是首選。此處1-norm問題並不僅僅指Lasso問題,包含了多種1-norm類型問題。下面均介紹下。

之所以說ADMM適合機器學習和統計學習的優化問題,因為大部分機器學習問題基本都是“損失函數+正則項”形式,這種分法恰好可以套用到ADMM的框架f(x)+g(z)。因此結合ADMM框架基本可以解決很多已有的問題,以及利用1-norm構造的新的優化問題。下面將先介紹非分布式計算的版本,后面會單開一節來介紹如何分布式計算。

(1)Least Absolute Deviations

先從一個簡單的問題開始。在穩健估計中,LAD是一個應用很廣的模型,相對於直接優化平方和損失|Axb|22,優化絕對損失|Axb|1,它的抗噪性能更好。在ADMM框架下,往之前的受約束的凸優化問題靠攏,這個問題有簡單的迭代算法

mins.t.z1Axb=zletf(x)=0,g(z)=z1xk+1zk+1uk+1=(ATA)1AT(b+zkuk)=S1/ρ(Axk+1b+uk)=uk+Axk+1zk+1b

(2)Huber fitting

Huber問題與上面的其實差不多,只是損失函數形式不同,換成了Huber懲罰函數

mins.t.ghub(z)Axb=z,ghub(z)=⎧⎩⎨z2/2,|z|12|z|1|z|>1

因此與LAD除了z-update不在是proximity operator(或稱作軟閾值)之外,其余均是相同的

zk+1=ρ1+ρ(Axk+1b+uk)+11+ρS1+1/ρ(Axk+1b+uk)

看着像是proximity operator與一個殘差的加權。

LAD和Huber fitting這種問題只是一些傳統損失不加正則項的ADMM化,注意一定要構造個z出來即可,x可以基本不用管,總是需要解的,下面的帶有正則項的優化問題,ADMM形式就會更明顯。

(3)Basis Pursuit

基追蹤法師系數信號處理的一種重要方法。目的是想找到一組稀疏基可以完美恢復信號,換套話說就是為一個線性方程系統找到一個稀疏解。原始形式如下,與lasso有些像:

mins.t.x1Ax=b

修改成ADMM形式,注意往之前受約束的凸優化問題的那種形式回套,將1看做約束,然后構造帶定義域的f(x),於是就有解

mins.t.f(x)+z1xz=0f(x)=I({xRn|Ax=b})indicator functionxk+1zk+1uk+1=Π(zkuk)=S1/ρ(Axk+1+uk)=uk+xk+1zk+1

其中Π(zkuk)是向一個線性約束的歐式空間中投影xRnAx=b,這也是有直接的顯示解的

xk+1=(IAT(ATA)1A)(zuk)+AT(AAT)1b

對於矩陣求逆、分解等用之前矩陣那些小技巧即可加快計算,節省計算資源。

最近還有一類算法來解決1問題,被稱作Bregman iteration methods,對於基追蹤相關問題,加正則項的Bregman iteration就是method of multiplier,而所謂的split Bregman iteration就等同於 ADMM。我沒有繼續深究,應該就是類似於並行化的ADMM算法來解決基追蹤問題。

(4)一般化的損失函數 + 1正則項問題

這類問題在高維統計開始時便是一個非常重要的問題,而即使到了現在也是一個非常重要的問題,比如group lasso,generalized lasso,高斯圖模型,Tensor型圖模型,與圖相關的1問題等算法的開發,都可以在此框架上直接應用和實施,這正是ADMM一個優勢所在,便於快速實施,也便於可能的大規模分布式部署。

minl(x)+λx1,mins.t.l(x)+g(z)=l(x)+λz1xz=0xk+1zk+1uk+1=argminx(l(x)+(ρ/2)xzk+uk22)=S1/ρ(Axk+1+uk)=uk+xk+1zk+1

可以看到與Basis Pursuit解法只是在x-update上有區別:Basis Pursuit是構造出來一個投影函數f(x),而一般化的損失函數f(x)+1正則項問題,用ADMM就更為自然。所以很適合作為框架來解決這一類問題:廣義線性模型(普通線性、logistic回歸、possion回歸、softmax回歸)+正則項;廣義可加模型+正則項;似然函數(高斯圖方向)+正則項。

  • Lasso:f(x)=12|Axb|22,於是利用ADMM算法,x-update的解析解就是xk+1=(ATA+ρI)1(ATb+ρ(zkuk));於是x-update看起來是個嶺回歸了,因此ADMM對於lasso可以看做迭代的使用嶺回歸。至於矩陣求逆那些,利用之前的矩陣小技巧解決。
  • Generalized lasso:這個問題可能不是那么為眾人所熟悉,他是Tibs的兒子搞出來的框羅類似fused lasso這種事先定義好的線性變化的懲罰項的模型,損失函數是平方損失,而懲罰變成了一個特殊的參數線性組合

min12Axb22+λFx1 1d fused lasso,A=IFij=⎧⎩⎨⎪⎪110j=i+1j=iotherwise

min12xb22+λi=1n1|xi+1xi|A=I,F二階差分矩陣,則被稱作L1 trend filtering

若將上述這種寫成ADMM形式,同樣可以放到ADMM算法框架中解決

mins.t.12Axb22+λz1Fxz=0xk+1zk+1uk+1=(ATA+ρFTF)1(ATb+ρFT(zkuk))=S1/ρ(Axk+1b+uk)=uk+Fxk+1zk+1b
  • Group lasso:graph lasso問題應用比較廣,對不同組的參數同時進行懲罰,進行一組組參數的挑選,故曰group lasso。不同於lasso,其正則項變成了Ni=1|xi|2,xiRni,lasso其實是group lasso的一種特殊形式。正則項並不是完全可分的。此時只是z-update變成了block的軟閾值形式
zk+1i=Sλ/rho(xk+1i+uk),i=1,,NSk(a)=(1ka2)+a,S(0)=0

這種形式還可以擴展到group間有重合的情況,即化成N可能存在重合的組Gi1,,n。一般來說這種問題會非常難解決,但是對於ADMM算法只需要換下形式就很直接(x,z互換,會變成后面非常重要的一致性優化問題(consensus optimization),局部xi與全局真解z子集z^i的對應。)

mins.t.12Azb22+λi=1Nxi2,xiR|Gi|xiz^i=0,i=1,,N
  • Sparse Gaussian graph model:對於稀疏高斯圖,熟悉該問題的人知道這其實是lasso的圖上的推廣,損失函數寫成似然函數的負數即可l(x)=tr(SX)logdetX,XSn++。於是原來向量的操作就變成了矩陣操作,ADMM算法也有點變化:
Xk+1Zk+1Uk+1=argminX(tr(SX)logdetX+ρ2XZk+UkF)=argminZ(λZ1+ρ2Xk+1Z+UkF)=Uk+Xk+1Zk+1

上述算法繼續化簡,對於z-update做逐個元素軟閾值操作即可Zk+1ij=Sλ/ρ(XK+1ij+Ukij)。對於x-update也類似操作,直接求導一階導為0,移項后對對稱矩陣做特征值分解即可

ρXX1=ρ(ZkUk)S=QΛQT,QQT=I,Λ=diag(λ1,,λn) ρX^X^1=Λ,X^=QTXQ

由於Λ是對角陣,對於每個對角元素來說,上述問題就是解一個二次方程,解方程后,再將X^變化成X即可

X^ii=λi+λ2i+4ρ−−−−−−√2ρX=QX^QT

總之,上述跟1相關的問題,基本都可以納入ADMM框架,並且可以快速求解。


免責聲明!

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



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