畢常遙 袁曉彤,2
1(南京信息工程大學自動化學院 江蘇 南京 210044) 2(江蘇省大數據分析技術重點實驗室 江蘇 南京 210044)
隨著社會的高速發展,各個領域對于處理各類數據的要求日益上升,所要處理數據的規模也在不斷增長。解決這一問題,就需要進行大規模的機器學習應用。隨之而來的是模型復雜度的上升,具體體現在參數數量的激增。如何高效、快速地實現對大規模數據的分析計算是當前研究的趨勢與挑戰。近年來,針對這一問題涌現出了大量分布式計算的研究成果,其中既包括了各式各樣的優化算法,也不乏分布式框架的搭建與優化。
Lee等[1]在隨機梯度下降法的基礎上,引入了一個可以不斷減少上界的方差項,實現了具有線性收斂的分布式隨機方差消減梯度下降法。Zhao等[2]提出的可擴展復合優化的算法SCOPE是基于隨機方差消減梯度下降算法的變種。相比于分布式隨機方差消減梯度下降法,SCOPE在訓練時僅使用本地數據,并設計了特殊的參數更新方式。該算法在強凸的條件下效果優于隨機方差消減梯度下降算法。此后,他們又在此基礎上引入了近端梯度下降法,提出了適用于分布式稀疏學習的Proximal SCOPE[3]。
Smith等[4]提出了一種分布式的對偶方法CoCoa。在該算法中,每臺機器將利用對偶性導出本地的子問題進行并行求解。該算法在SVM、線性/logistic回歸和lasso算法方面獲得了較好的效果。隨后,Ma等[5]針對CoCoa的局部優化環節重新進行了設計,提出了CoCoa+。在CoCoa+框架下,每臺機器可以選擇不同的求解器來進行局部優化,進一步提高了優化的速度。
針對分布式計算的通信環節的研究,Li等[6]提出并已應用于深度學習框架MXNET的分布式學習框架Paramter Se-rver以及Zhu等[7]提出的一種基于稀疏參數平均和梯度量化來降低通信成本的優化方法,該方法僅需要全通信隨機梯度下降法3%~5%的通信數據大小,就可以達到同等的收斂速度。
DANE方法是由Shamir等[8]提出的一種通信高效分布式近似牛頓算法,其既有傳統牛頓法相比于梯度下降法下降速度更快的優勢,又規避了傳統牛頓法需要計算Hessian矩陣的逆導致計算復雜度高的缺點。該方法特別適用于大規模樣本分布式機器學習問題,理論上可以證明其對于二次目標函數具有隨局部樣本數增加而顯著提升的線性收斂速度,從而在局部樣本足夠多的情況下能夠保證該方法具有優越的通信效率。
DANE是一種分布式算法,該方法在每次迭代中會執行兩次分布式的平均計算。
算法1DANE算法
1.參數:學習率η>0,正則化項μ>0
2.初始化:w(0)
3.fori=1,2,…,do

5.每臺機器i計算

7.end for

(1)
式中:φi(w)為目標函數;▽φi(w(t-1))為機器i上一輪迭代的局部梯度;▽φ(w(t-1))為此次迭代的全局梯度。為了解決這個局部優化問題,首先,將每臺機器的局部正則化問題定義為:
(2)
根據Bregman散度的定義,對于一個強凸函數有:
Dψ(w′;w)=ψ(w′)-ψ(w)-〈▽ψ(w),w′-w〉
(3)
而上述局部正則化問題的Bregman散度則為:
Di(w′;w)=Dhi(w′;w)=
(4)
此時,上述局部優化式(1)可以表示成:
(5)
式中:φ(w(t-1))+〈▽φ(w(t-1)),w-w(t-1)〉這兩項并不依賴于w,所以不會對優化過程產生影響。因此,這兩項是關于w(t-1)的整體目標的線性近似,不受當前所使用機器的影響。每臺機器之間的差別在于它們用于定位線性近似值的位函數hi(w)不同。式(5)實質上是一種利用位函數hi(w)和學習率η的鏡像式下降更新。
分布式算法的優化方法有很多,本文選擇DANE方法的局部優化部分為切入點對原方法進行優化。
本文將優化后的算法稱為DANE-Adam,其中Worker流程如下。
算法2DANE-Adam算法的Worker流程
1.參數:學習率η>0,正則化項μ>0,批量大小m,抽樣倍率n,外循環次數T,內循環次數H
2.初始化:w(0)
3.fort=1,2,…,do
4.從主機接收全局梯度和全局參數
5.從本地數據Pi中隨機抽取nm個樣本作為本次循環練樣本Di
6.forh=1,2,…,do
7.以Adam算法計算
8.end for

10.發送梯度和參數給主機
11.end for
全局梯度▽φ(w(t-1))和全局參數w(t-1)的作用是改變每次外循環的局部問題,并對當前機器計算的梯度起到糾正作用。每隔H次內循環更新▽φ(w(t-1))和w(t-1)減少了通信成本,若每次內循環都對▽φ(w(t-1))和w(t-1)進行更新,通信成本將大幅增加,會極大地影響訓練的時間。
通過對比,可以看到DANE-Adam和原方法主要有兩點不同。
(1) 在DANE方法中,每臺機器在求解局部子優化問題時所用的優化算法是隨機梯度下降法,該方法相比Adagrad、Adadelta、RMSprop、Adam[9]等一些自適應方法的收斂速度存在差距,因此本文選擇了Adam算法對其進行替代以提高收斂速度。
(2) 在每輪外循環中加入了隨機抽樣步驟。這樣做的目的首先是在抽樣后,每次迭代都是通過一個子問題來模擬整個大問題,這樣可以減少每次內循環的計算成本,相應地,整個外循環迭代一次的計算成本以及所耗費的時間也減少了;其次,也能夠以此對多機計算環境進行模擬。

當μ=0時,每臺機器的局部問題相同,即hi(w)=φi(w)=φ(w)。將Bregman散度的定義代入式(5),可以得出:

當每臺機器上的樣本數→∞時,可以認為對于每臺機器i都有φi(w)=φ(w)。此時,將不需要進行分布式優化,式(5)近似于一個理想的牛頓迭代的形式,僅需要較少次數的迭代就可以接近最優。
當φi(w)和φ(w)均為二次時,則有:
(6)
式(5)將可以這樣的近似形式求解:
μI)-1▽φ(w(t-1))
(7)

(8)
與實際的牛頓法式(9)的更新形式進行比較,得到:
特殊車牌背后是特權車,特權車背后是特權人,特權人腦子里是特權思想。解決特權車問題,既要停止使用遼A09號牌,清除附著其上的公車屬性,更要清除那種能讓“公交車用號碼變成公務車用號碼”的需求和力量。不清除這種需求,取消了“O”,他可以替換為“09”;不約束這種力量,取消了“09”,他還可以用“08”……
(9)
這里使用了Hessian矩陣加上一個正則項的逆的平均值來近似Hessian矩陣平均值的逆,這規避了在進行機器間數據交流時需要傳輸Hessian矩陣的問題。對于這樣的二次目標,只要進行一次牛頓更新,就可以收斂到最優。
Adam算法是Kingma等[9]提出的一種自適應梯度優化算法,它能夠對每個不同的參數設置不同的學習率。Adam算法的更新方式如算法3所示。
算法3Adam算法流程
1.參數:α,β1,β2
2.初始化:θ0,m0→0,v0→0,t→0
3.whileθt未收斂do
t←t+1
gt←▽θft(θt-1)
4.end while
其中:gt為隨機目標函數的梯度;mt為偏一階矩估計;vt為偏二階矩估計;β1和β2為矩估計的指數衰減率;θt為待更新參數;α為學習率;ε是為了維持數值穩定性而添加的一個較小常數,通常設為10-8。
相較于隨機梯度下降法,Adam算法的優勢在于,其通過對梯度的一階矩估計和二階矩估計的計算,為不同的參數設置獨立的自適應性學習率,使得該算法收斂速度更快。同時,Adam算法梯度的對角縮放具有不變性,適用于解決含大規模數據和參數的優化問題。
本文使用的數據集為MNIST、Fashion-MNIST和Cifar10。MNIST是一個手寫數字數據集,包含了60 000幅訓練圖像和10 000幅測試圖像。Fashion-MNIST是一個類似MNIST的時尚產品數據集,其中的每幅圖片都以灰度顯示。共有10類,同樣包含了60 000幅訓練圖像和10 000幅測試圖像。Cifar-10則是一個包含10類的彩色圖像數據集,包含了50 000幅訓練圖像和10 000幅測試圖像。
實驗所使用的網絡為LeNet,原算法的學習率設置α為0.01,本文的DANE-Adam取值0.001,Adam算法的一階矩估計的指數衰減率β1設為0.9,二階矩估計的指數衰減率β2設為0.999。MNIST與Fashion-MNIST實驗設置的批量大小為100,Cifar10的批量大小為64。MNIST實驗設置的內循環數為2,Fashion-MNIST取5,Cifar-10取16。抽樣的倍率n分別為100、200和300。實驗的目的是對DANE-Adam和DANE方法的求解局部問題的能力進行對比,所以實驗中只使用一臺機器。
圖1給出了DANE與DANE-Adam在三組數據下的性能對比。表1給出了DANE和DANE-Adam的測試準確率。

(a) MNIST

(c) Cifar10圖1 DANE與DANE-Adam的性能對比
從實驗結果分析得到:
(1) 在訓練最初期,n=100這組實驗的收斂速度是最快的。這得益于n=100時每次內循環訓練樣本數量最少,在相同時間內,迭代次數更多。但達到一定的精度時,n=100的收斂速度就會被n=200和n=300這2組超過。n=100的測試準確率在4組實驗中是最低的,特別與DANE方法的結果相比存在明顯差距。
(2) 當n=200或n=300時,DANE-Adam在收斂速度上明顯優于DANE方法,同時,在精度上能夠幾乎保持不變。
(3) 在n=200接近收斂前,其收斂速度比n=300更快;接近收斂后,則被n=300超過。從表1可以看到,兩者最終的測試準確率相近,n=300時要略高出一點。
(4) DANE-Adam幾組實驗的曲線相比DANE方法有較為明顯的波動。這主要是由于取樣的隨機性導致每次取樣的分布存在差異,因此對一組樣本訓練到最優時,對另一組樣而言是輕微的過擬合。
導致n=100時泛化性能較低的主要原因可能有以下兩點:
(1) 每次局部樣本數量過小,導致無法找到準確的下降方向。
(2) Adam算法的學習率會出反復震蕩的情況,在通常情況下,泛化能力不如隨機梯度下降法加上動量[9]。
從表1可以看到,n=100、n=200,以及n=300時的測試準確率均存在比較明顯的差距。可以判斷,局部樣本數量過小確實會導致泛化性能的下降。
為了驗證Adam算法是否對泛化性能產生了影響,可以在對原DANE方法在保留隨機梯度下降法的前提下,同樣加入隨機抽樣步驟進行實驗。實驗設置的學習率、批量大小和各數據集訓練的內循環數均與上文中DANE實驗的設置保持一致,n設為100。性能對比和準確率見圖2和表2所示。

(c) Cifar10圖2 n=100時,DANE與DANE-Adam的性能對比
從MNIST的實驗結果來看,使用Adam算法非但沒有造成測試準確率的下降,反而有所上升。這要歸功于Adam算法對不同的參數設置的自適應性學習率,使得在訓練集較小的情況下,相比于隨機梯度下降法能更準確地找到梯度下降的方向。
而從Fashion-MNIST的實驗結果來看,使用Adam算法對測試準確率雖然有所下降,但幅度較小,可以認為使用Adam算法沒有對泛化性能產生明顯影響。
Cifar10的實驗結果則是DANE方法的精度明顯更高。這可能是由于LeNet網絡用于訓練Cifar10略顯不足,在網絡參數不足的情況下,具有更強泛化性能的隨機梯度下降法的優勢被凸顯了出來。
本文提出了一種基于DANE算法框架的通信高效分布式深度神經網絡訓練方法。其核心思想是針對DANE方法的計算開銷大都集中在局部單機優化這一特點,采用深度學習中廣泛使用的Adam算法替換常用的隨機梯度下降法并引入隨機抽樣環節以更加高效地實現單機局部子問題優化訓練。實驗結果表明,本文所提出的方法在泛化精度幾乎保持不變的情況下,其計算性能可以得到顯著提升。
本研究尚存一些需要完善之處,包括:(1) 目前還缺少在使用深層次網絡情況下進行的實驗。例如在n=100的條件下,如果使用ResNet網絡對Cifar10數據集進行訓練是否會呈現出同樣的結果很值得研究。(2) 在目前大數據的環境下通常要面對更大規模、更高維度的數據。當面對這些更復雜的數據時,抽樣的大小會對訓練的過程以及結果產生怎樣的影響也是我們后續的研究工作之一。