《Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers》
業界一直在談論大數據,對於統計而言,大數據其實意味着要不是樣本量增加,要不就是維度的增加,亦或者兩者同時增加,並且維度與樣本量的增長速度呈線性或者指數型增長。在稀疏性的假設條件下,再加上一些正則性方法,統計學家可以證明各種加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。這種轉化可以將原來很多的參數約束條件變得少了很多,以利於做優化。具體表述如下:
在強對偶性的假設下,primal和dual問題同時達到最優。
因此,若對偶函數可導,便可以利用梯度上升法,交替更新參數,使得同時收斂到最優。迭代如下:
當不可微的時候也可以將其轉化下,成為一個所謂的subgradient的方法,雖然看起來不錯,簡單證明下即可知道和同時可達到optimal,但是上述條件要求很苛刻:要求嚴格凸,並且要求選擇有比較合適。一般應用中都不會滿足(比如是一個非零的仿射函數),因此dual ascent不會直接應用。
1.2 Dual Decomposition
雖然dual ascent方法有缺陷,要求有些嚴格,但是他有一個非常好的性質,當目標函數是可分的(separable)時候(參數抑或feature可分),整個問題可以拆解成多個子參數問題,分塊優化后匯集起來整體更新。這樣非常有利於並行化處理。形式化闡述如下:
因此可以看到其實下面在迭代優化時,-minimization步即可以拆分為多個子問題的並行優化,對偶變量更新不變這對於feature特別多時還是很有用的。
對偶分解是非常經典的優化方法,可追溯到1960年代。但是這種想法對后面的分布式優化方法影響較大,比如近期的graph-structure優化問題。
1.3 Augmented Lagrangians and the Method of Multipliers
從上面可以看到dual ascent方法對於目標函數要求比較苛刻,為了放松假設條件,同時比較好優化,於是就有了Augmented Lagrangians方法,目的就是放松對於嚴格凸的假設和其他一些條件,同時還能使得算法更加穩健。
從上面可以看到該問題等價於最初的問題,因為只要是可行解對目標函數就沒有影響。但是加了后面的懲罰項的好處是使得對偶函數在更一般的條件下可導。計算過程與之前的dual ascent基本一樣,除了最小化時候加了擴增項。
上述也稱作method of multipliers,可能也是因為更新對偶變量時步長由原來變化的轉為固定的了吧。該算法在即使不是嚴格凸或者取值為情況都可以成立,適用面更廣。同樣可以簡單證明primal變量和對偶變量可以同時達到最優。
雖然Augmented Lagrangians方法有優勢,但也破壞了dual ascent方法的利用分解參數來並行的優勢。當是separable時,對於Augmented Lagrangians卻是not separable的(因為平方項寫成矩陣形式無法用之前那種分塊形式),因此在步時候無法並行優化多個參數。如何改進,繼續下面的議題就可以慢慢發現改進思想的來源。
2. Alternating Direction Method of Multipliers(ADMM)
2.1 ADMM算法概述
為了整合dual ascent可分解性與method multiplers優秀的收斂性質,人們就又提出了改進形式的優化ADMM。目的就是想能分解原函數和擴增函數,以便於在對更一般的假設條件下並行優化。ADMM從名字可以看到是在原來Method of Multipliers加了個Alternating Direction,可以大概猜想到應該是又想引入新變量,然后交叉換方向來交替優化。形式如下:
從上面形式確實可以看出,他的思想確實就是想把primal變量、目標函數拆分,但是不再像dual ascent方法那樣,將拆分開的都看做是的一部分,后面融合的時候還需要融合在一起,而是最先開始就將拆開的變量分別看做是不同的變量和,同時約束條件也如此處理,這樣的好處就是后面不需要一起融合和,保證了前面優化過程的可分解性。於是ADMM的優化就變成了如下序貫型迭代(這正是被稱作alternating direction的緣故):
后面我們可以看到這種拆分思想非常適合統計學習中的-norm等問題:loss + regulazition(注意:一定要保證分解出來,ADMM借助的就是用一個變量來簡化問題,不管他是約束還是其他形式也罷,需要構造一個出來,后面具體到細節問題我們會有更深的體會)。
為了簡化形式,ADMM有一個scaled form形式,其實就是對對偶變量做了scaled處理。先定義每一步更新的殘差為,於是稍加計算
此處稱為scaled dual variable,並令每一步迭代的殘差為,以及累計殘差,於是ADMM形式就可以簡化為如下形式
寫成這種形式有利於后面簡化優化問題,當然可以不作任何處理。
2.2 ADMM算法性質和評價
(1)收斂性
關於收斂性,需要有兩個假設條件:
- 和分別是擴展的實數函數,且是closed、proper和convex的;
- 擴增的lagrangian函數有一個鞍點(saddle point);對於約束中的矩陣都不需要滿秩。
在此兩個假設下,可以保證殘差、目標函數、對偶變量的收斂性。
Note:實際應用而言,ADMM收斂速度是很慢的,類似於共軛梯度方法。迭代數十次后只可以得到一個acceptable的結果,與快速的高精度算法(Newton法,內點法等)相比收斂就慢很多了。因此實際應用的時候,其實會將ADMM與其他高精度算法結合起來,這樣從一個acceptable的結果變得在預期時間內可以達到較高收斂精度。不過一般在大規模應用問題中,高精度的參數解對於預測效果沒有很大的提高,因此實際應用中,短時間內一個acceptable的結果基本就可以直接應用預測了。
(2)停止准則
對於ADMM的能到到optimal的條件此處就不做贅述了,與基本的primal和dual feasibility 的條件差不多,即各primal variable的偏導和約束條件為0,從最優條件中可以得到所謂的對偶殘差(dual residuals)和初始殘差(primal residuals)形式:
相對而言,此處更難把握的其實是停止准則,因為收斂速度問題,要想獲得一個還過得去可以拿來用的參數解,那么判斷迭代停止還是比較重要的。實際應用中,一般都根據primal residuals和dual residuals足夠小來停止迭代,閾值包含了絕對容忍度(absolute tolerance)和相對容忍度(relative tolerance),設置還是非常靈活和難把握的(貌似網上有不少人吐槽這個停止准則的不靠譜- -!),具體形式如下:
上面的和分別是維度和樣本量。一般而言,相對停止閾值或者,絕對閾值的選取要根據變量取值范圍來選取(咋選的呢?沒說額,具體比例都不給說- -!)
另外一些細節問題,比如原來懲罰參數是不變的,一些文獻也做了一些可變的懲罰參數,目的是為了降低對於懲罰參數初始值的依賴性。不過變動的會導致ADMM的收斂性證明比較困難,因此實際中假設經過一系列迭代后也穩定,邊可直接用固定的懲罰參數了。還有其他問題,諸如與迭代順序問題,實際操作下有所有不同,這些不是特別重要之處,可以忽略。其他與ADMM比較相關算法的有dual ADMM算法,distributed ADMM算法,還有整合了ADMM與proximal method of multiplier的算法
2.3 ADMM一般形式與部分具體應用
當構造了ADMM算法中的后,便可直接應用該算法了。我們會經常遇到如下三種一般形式的問題
- 二次目標優化項(quadratic objective terms);
- 可分的目標函數和約束(separable objective and constraints);
- 光滑目標函數項(smooth objective terms)。
為下面討論的方便,下面僅寫出-update的形式,根據ADMM簡化形式,-update對稱更新即可:
上述更新時候和都定下來,是個常數,更新時后相同。
Proximity Operator(近鄰算子)
上述形式有種特殊情況:當時,即約束條件沒有的線性組合形式,只是對於的可行區域進行限制。這種問題相當常見,目前統計學習也有不少類似的高維優化問題。此時-update如下
上述右邊可以寫成的函數被稱作帶懲罰的的proximity operator(通常稱作proximal minimization,近鄰最小化),在變分分析中,還被稱作的Moreau-Yosida正則化。如果形式很簡單,可以寫出-update的解析解,比如是非空的凸包上的示性函數,那么-update就可以直接寫成投影形式
投影與懲罰參數無關。若是非負象限的投影,則直接有。
下面再談談上述提到的三種一般形式的優化問題。
(1)Quadratic Objective Terms
假設是如下(凸)的二次函數
是對稱的半正定矩陣。這種形式問題也包含了是線性或者常數的特殊情況。若可逆,那么-update步求個導即有如下的顯示解,是的仿射函數
因此在-minnimiztion步只需要做兩個矩陣運算即可,求逆與乘積,選用合適的線性運算庫即可以得到不錯的計算性能。當然還可以利用一些矩陣分解技巧,這個要看矩陣大小和稀疏程度。因為對於,可以將,然后,這樣會更節省計算時間。其他矩陣計算技巧,基本都是如何對矩陣大規模求解,利用矩陣的稀疏性、緩存分解等來提高性能。此處不贅述,有個很重要的求逆的定理很有用:
如果對於上述二次函數受限於某仿射集-update步就更復雜些,如
-update還有個重要的KKT方程可用:
(2)Smooth Objective Terms
當光滑時,那么求導即成為可能了。對於一些非線性優化問題,包含梯度算法等方法的L-BFGS算法可以用。對於該算法有些小技巧如下:
- 早終止(early termination):當梯度很小時,早點終止迭代,否則后面就很慢了。
- 熱啟動(warm start):即啟動迭代時,利用之前迭代過的值帶入即可。
(3)Separable objective and constraints 可分函數和約束對於並行計算和分布式計算來說是一個好消息。如果是分塊的對角陣,那么約束中也是可分的,則擴增的拉格朗日函數也是可分的。(注意,此處是指函數中的參數可分成小子塊,而不是說數據可分。)下面有一個很重要的例子,即soft thresholding(針對問題):
當,並且時,那么-update就變成了
這種形式很常見在目前的高維統計中,雖然第一項在0處不可導,但是也有解析解,被稱作軟閾值(soft thresholding),也被稱作壓縮算子(shrinkage operator)。
在優化領域,軟閾值被稱作是-norm問題的近鄰算子(proximity operator)。
3. 一些具體優化應用
3.1受約束的凸優化問題
一般的受約束的凸優化問題可以寫成如下形式
此類問題可以寫成ADMM形式
其中的函數即的示性函數,上述是scaled形式,那么具體算法就是
則上述就變成了一個具體的受約束的優化問題。比如對於經典的二次規划問題(QP)
寫成ADMM形式
即受約束的區域就是,是向非負象限投影的示性函數。而-update就變成了之前在Quadratic Objective Terms中談到的有仿射集定義域的優化問題,根據KKT條件即可寫出來-update更新的形式,參見2.3節。
如果上述對限制不是限制上,而是一個錐約束(conic constraint),那么-update不變,繼續上述KKT方程,而只需要變一下-update,將向投影改成向投影。比如將上述約束改成,即屬於半正定空間,那么向(S^n_{+})投影就變成了一個半正定問題,利用特征值分解可以完成。這種受約束的凸優化問題的形式化對后續許多問題,特別是我們很關注的-norm問題很重要,基本上都是轉化成這種形式來直接應用ADMM算法,所以這里要好好把握其核心思想和形式。
雖然我對優化不在行,但是感覺優化問題還是挺有意思的,下面是一個經典問題,即找到兩個非空凸包的交集中的一點。該算法都可以追溯到1930年代的Neumann交替投影算法(alternating projections algorithm):
分別是兩個集合的歐式空間投影。寫成ADMM形式就是
上述問題還可推廣至找到個非空凸包交集中一個點的問題,這樣其實在步是可以並行來做的,於是就有
3.2 -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。不過要能夠大規模部署-norm的解決方案,那么這些算法中ADMM可能是首選。此處-norm問題並不僅僅指Lasso問題,包含了多種-norm類型問題。下面均介紹下。
之所以說ADMM適合機器學習和統計學習的優化問題,因為大部分機器學習問題基本都是“損失函數+正則項”形式,這種分法恰好可以套用到ADMM的框架。因此結合ADMM框架基本可以解決很多已有的問題,以及利用-norm構造的新的優化問題。下面將先介紹非分布式計算的版本,后面會單開一節來介紹如何分布式計算。
(1)Least Absolute Deviations
先從一個簡單的問題開始。在穩健估計中,LAD是一個應用很廣的模型,相對於直接優化平方和損失,優化絕對損失,它的抗噪性能更好。在ADMM框架下,往之前的受約束的凸優化問題靠攏,這個問題有簡單的迭代算法
(2)Huber fitting
Huber問題與上面的其實差不多,只是損失函數形式不同,換成了Huber懲罰函數
因此與LAD除了-update不在是proximity operator(或稱作軟閾值)之外,其余均是相同的
看着像是proximity operator與一個殘差的加權。
LAD和Huber fitting這種問題只是一些傳統損失不加正則項的ADMM化,注意一定要構造個出來即可,可以基本不用管,總是需要解的,下面的帶有正則項的優化問題,ADMM形式就會更明顯。
(3)Basis Pursuit
基追蹤法師系數信號處理的一種重要方法。目的是想找到一組稀疏基可以完美恢復信號,換套話說就是為一個線性方程系統找到一個稀疏解。原始形式如下,與lasso有些像:
修改成ADMM形式,注意往之前受約束的凸優化問題的那種形式回套,將看做約束,然后構造帶定義域的,於是就有解
其中是向一個線性約束的歐式空間中投影,這也是有直接的顯示解的
對於矩陣求逆、分解等用之前矩陣那些小技巧即可加快計算,節省計算資源。
最近還有一類算法來解決問題,被稱作Bregman iteration methods,對於基追蹤相關問題,加正則項的Bregman iteration就是method of multiplier,而所謂的split Bregman iteration就等同於 ADMM。我沒有繼續深究,應該就是類似於並行化的ADMM算法來解決基追蹤問題。
(4)一般化的損失函數 + 正則項問題
這類問題在高維統計開始時便是一個非常重要的問題,而即使到了現在也是一個非常重要的問題,比如group lasso,generalized lasso,高斯圖模型,Tensor型圖模型,與圖相關的問題等算法的開發,都可以在此框架上直接應用和實施,這正是ADMM一個優勢所在,便於快速實施,也便於可能的大規模分布式部署。
可以看到與Basis Pursuit解法只是在-update上有區別:Basis Pursuit是構造出來一個投影函數,而一般化的損失函數+正則項問題,用ADMM就更為自然。所以很適合作為框架來解決這一類問題:廣義線性模型(普通線性、logistic回歸、possion回歸、softmax回歸)+正則項;廣義可加模型+正則項;似然函數(高斯圖方向)+正則項。
- Lasso:,於是利用ADMM算法,-update的解析解就是;於是-update看起來是個嶺回歸了,因此ADMM對於lasso可以看做迭代的使用嶺回歸。至於矩陣求逆那些,利用之前的矩陣小技巧解決。
- Generalized lasso:這個問題可能不是那么為眾人所熟悉,他是Tibs的兒子搞出來的框羅類似fused lasso這種事先定義好的線性變化的懲罰項的模型,損失函數是平方損失,而懲罰變成了一個特殊的參數線性組合
若將上述這種寫成ADMM形式,同樣可以放到ADMM算法框架中解決
- Group lasso:graph lasso問題應用比較廣,對不同組的參數同時進行懲罰,進行一組組參數的挑選,故曰group lasso。不同於lasso,其正則項變成了,lasso其實是group lasso的一種特殊形式。正則項並不是完全可分的。此時只是-update變成了block的軟閾值形式
這種形式還可以擴展到group間有重合的情況,即化成可能存在重合的組。一般來說這種問題會非常難解決,但是對於ADMM算法只需要換下形式就很直接(互換,會變成后面非常重要的一致性優化問題(consensus optimization),局部與全局真解子集的對應。)
- Sparse Gaussian graph model:對於稀疏高斯圖,熟悉該問題的人知道這其實是lasso的圖上的推廣,損失函數寫成似然函數的負數即可。於是原來向量的操作就變成了矩陣操作,ADMM算法也有點變化:
上述算法繼續化簡,對於-update做逐個元素軟閾值操作即可。對於-update也類似操作,直接求導一階導為0,移項后對對稱矩陣做特征值分解即可
由於是對角陣,對於每個對角元素來說,上述問題就是解一個二次方程,解方程后,再將變化成即可
總之,上述跟相關的問題,基本都可以納入ADMM框架,並且可以快速求解。