4. Consensus and Sharing
本節講述的兩個優化問題,是非常常見的優化問題,也非常重要,我認為是ADMM算法通往並行和分布式計算的一個途徑:consensus和sharing,即一致性優化問題與共享優化問題。
Consensus
4.1 全局變量一致性優化(Global variable consensus optimization)(切割數據,參數(變量)維數相同)
所謂全局變量一致性優化問題,即目標函數根據數據分解成N子目標函數(子系統),每個子系統和子數據都可以獲得一個參數解xi,但是全局解只有一個z,於是就可以寫成如下優化命題:
注意,此時fi:Rn→R⋃+∞仍是凸函數,而xi並不是對參數空間進行划分,這里是對數據而言,所以xi維度一樣xi,z∈Rn,與之前的問題並不太一樣。這種問題其實就是所謂的並行化處理,或分布式處理,希望從多個分塊的數據集中獲取相同的全局參數解。
在ADMM算法框架下(先返回最初從擴增lagrangian導出的ADMM),這種問題解法相當明確:
對y-update和z-update的yk+1i和zk+1i分別求個平均,易得y¯k+1=0,於是可以知道z-update步其實可以簡化為zk+1=x¯k+1,於是上述ADMM其實可以進一步化簡為如下形式:
這種迭代算法寫出來了,並行化那么就是輕而易舉了,各個子數據分別並行求最小化,然后將各個子數據的解匯集起來求均值,整體更新對偶變量yk,然后再繼續回帶求最小值至收斂。當然也可以分布式部署(hadoop化),但是說起來容易,真正工程實施起來又是另外一回事,各個子節點機器間的通信更新是一個需要細細揣摩的問題。
另外,對於全局一致性優化,也需要給出相應的終止迭代准則,與一般的ADMM類似,看primal和dual的residuals即可
4.2 帶正則項的全局一致性問題
下面就是要將之前所談到的經典的機器學習算法並行化起來。想法很簡單,就是對全局變量加上正則項即可,因此ADMM算法只需要改變下z-update步即可
同樣的,我們仍對z做一個平均處理,於是就有
上述形式都取得是最原始的ADMM形式,簡化處理,寫成scaled形式即有
這樣對於后續處理問題就清晰明了多了。可以看到如果g(z)=λ|z|1,即lasso問題,那么z-update步就用軟閾值operator即可。因此,對於大規模數據,要想用lasso等算法,只需要對數據做切塊(切塊也最好切均勻點),納入到全局變量一致性的ADMM框架中,即可並行化處理。下面給出一些實例。
切割大樣本數據,並行化計算
在經典的統計估計中,我們處理的多半是大樣本低維度的數據,現在則多是是大樣本高維度的數據。對於經典的大樣本低維度數據,如果機器不夠好,那么就抽樣部分數據亦可以實現較好估計,不過如果沒有很好的信息,就是想要對大樣本進行處理,那么切割數據,並行計算是一個好的選擇。現在的社交網絡、網絡日志、無線感應網絡等都可以這么實施。下面的具體模型都在受約束的凸優化問題中以及ℓ1-norm問題中提過,此處只不過切割數據,做成分布式模型,思想很簡單,與帶正則項的global consensus問題一樣的處理。經典問題lasso、sparse logistic lasso、SVM都可以納入如下框架處理。
有觀測陣A∈Rm×n和響應值b∈Rm,可以對應切分,即對矩陣A和向量b橫着切,
於是原來帶正則項的優化問題就可以按照數據分解到多個子系統上去分別優化,然后匯集起來,形成一個global consensus問題。
結合受約束的凸優化問題時所給出來的具體的ADMM算法解的形式,下面直接給出這些問題的ADMM迭代算法公式
(1)Lasso
如果切割的數據量小於維數mi<n,那么求解時分解小的矩陣AiATi+ρI即可;其他求逆采用矩陣加速技巧即可。
(2)Sparse Logistic Regression
在x-update步是需要用一些有效的算法來解決ℓ2正則的logistic回歸,比如L-BFGS,其他的優化算法應該問題不大吧。
(3)SVM
注意分類問題和回歸問題的損失函數不同,一般都是用l(sign(t)y)形式來尋求最優的分類權重使得分類正確。SVM使用Hinge Loss:ℓ(y)=max(0,1−t⋅y),即將預測類別與實際分類符號相反的損失給凸顯出來。分布式的ADMM形式
4.3 一般形式的一致性優化問題(切割參數到各子系統,但各子系統目標函數參數維度不同,可能部分重合)
上述全局一致性優化問題,我們可以看到,所做的處理不過是對數據分塊,然后並行化處理。但是更一般的優化問題是,參數空間也是分塊的,即每個子目標函數fi(xi)的參數維度不同xi,∈Rni,我們稱之為局部變量。而局部變量所對應的的也將不再是全局變量z,而是全局變量中的一部分zg,並且不是像之前的順序對應,而可能是隨便對應到z的某個位置。可令g=G(i,⋅),即將xi映射到z的某部位
如果對所有i有G(i,j)=j,那么xi與z就是順序映射,也就是全局一致性優化問題,否則就不是。結合下圖就比較好理解
雖然如果用其他方法來做感覺會復雜,但是納入到上述ADMM框架,其實只不過是全局一致性優化問題的一個局部化變形,不過此時不是對數據進行分塊,是對參數空間進行分塊