Large Scale Distributed Deep Networks 中譯文

http://blog.sina.com.cn/s/blog_81f72ca70101kuk9.html

大規模分佈式深度網絡

Large Scale Distributed Deep Networks

Jeffrey Dean, Greg S. Corrado, Rajat Monga, Kai Chen, Matthieu Devin, Quoc V. Le,

Mark Z. Mao, Marc’Aurelio Ranzato, Andrew Senior, Paul Tucker, Ke Yang, Andrew Y. Ng

Google Inc., Mountain View, CA

 

摘要

最近關於無監督特徵學習(unsupervised feature learning)和深度學習(deep learning)的工作表明,具有訓練大型模型能力的系統能夠顯著地提升深度神經網絡的訓練效果。在這篇文章中,我們針對的問題是利用多達10^4數量的CPU來訓練一個具有10^9數量的參數(parameter)的深度網絡。爲了達到訓練的目的,我們開發了稱爲DistBelief的軟件框架,其利用具有上千節點(譯者注:爲了一致性,譯文中的節點均指機器,即計算節點;而神經網絡中的節點,均稱爲單元)的計算集羣來訓練大型模型。在該框架中,實現了兩個算法用於大規模分佈訓練:(i)Downpour(譯者注:猜測這裏的Downpour主要是指並行地參數更新,就像傾盆大雨中,雨點從多處同時落下一樣)SGDstochastic gradient descent),一個支持大量模型副本的異步隨機梯度下降過程。(ii) Sandblaster(譯者注:形容來自coordinator的命令像砂粒一樣噴向集羣其他節點),一個支持多種批量(batch)計算的分佈優化方法,包含了L-BFGS的分佈式實現,Downpour SGDSandblaster L-BFGS 都具有提升系統擴展能力和加速深度網絡訓練的能力。我們已經成功地利用DistBelief訓練出一個比先前研究中提到的大30餘倍的深度網絡模型,並且獲得了針對ImageNet(一個具有21K個分類和10M圖像視覺識別任務)的最先進的訓練效果。同時,我們還證明了,以上提及的技術能夠顯著地提升一箇中等大小的,用作商用語音識別服務的深度網絡的訓練效果。儘管我們的這些技術主要用在大型神經網絡的訓練上,但是相關的算法同樣適用於任何基於梯度的機器學習算法。

 

 

1.介紹

深度學習和無監督特徵學習給許多實際應用帶了新的巨大希望。它在包括語音識別[1, 2]、視覺物體識別[3, 4]和文本處理[5, 6]等不同領域上體現了最領先的性能優勢和效果。

先前研究已經證明,通過增加樣本數量和模型參數數量等不同手段,可以顯著地提升分類算法的最終精確度[3, 4, 7]。該結論掀起了研究可擴展的深度學習訓練和推斷算法和提高其適用性等優化方法的熱潮[7, 9]。近年來,在中等大小深度網絡的訓練上,一個重要的進步是因GPU的使用,使其變得更加的實用[1, 2, 3, 8]。但GPU衆所周知的缺陷是,當其內存(通常小於6G)無法存放下模型時,訓練的提升效果變得不再明顯。這時,爲了有效地使用GPU,研究者往往通過減少樣本或變量規模的途徑使得CPUGPU之間的數據交換不在成爲瓶頸。雖然數據或變量的減少對小規模問題(如針對於聲學模型的語音識別)有效,但對具有大量樣本和高維度變量的問題(如高分辨率圖像)將失去效果。

在本文中,我們提出了一個替代的方法,使用大規模的計算集羣來分佈地對深度網絡進行訓練和推斷。我們開發了一個既能提升節點內(通過多線程方式)又可提升節點間(通過消息傳遞)並行訓練能力的軟件框架,稱爲DistBelief。它管理了如並行計算、同步化和通信等底層的細節。除了支持模型並行,DistBelief同時還支持數據並行,通過單一模型的多個分佈副本的方式來優化同一目標。在該框架中,我們設計並實現了兩個用於大規模分佈式訓練的新方法:i)Downpuur SGD,一個利用自適應學習速率和支持大量模型副本的異步隨機梯度下降過程;(ii)Sandblaster L-BFGSL-BFGS過程的一個分佈式實現,其利用了數據和模型的並行(原作者注:我們利用Sandblaster方法實現了L-BFGS,但是Sandblaster同樣廣泛適用於其他批量方法的優化)。兩個方法相比較於常規的SGDL-BFGS方法都獲得了顯著的速度提升。

關於大規模非凸方法優化,我們的實驗呈現了一些出人意料的結果。首先,異步梯度下降,一個很少被用到非凸問題的方法,尤其是與Adagrad[10]自適應學習速率結合時,用以訓練深度網絡的效果很好。其次,當計算資源充足時,L-BFGS方法能夠和許多SGD的變種方法相匹敵,甚至優於後者。

對於深度學習的特定應用,我們提出了兩項發現:前面提及的分佈式優化方法,不僅可以加速中等規模模型的訓練,同時它也可以訓練規模大於想象的模型。爲了證明第一點,我們利用分佈式集羣來訓練中等大小語音識別模型,獲得了與GPU相同的分類精度,而耗時僅是後者的1/10。爲了證明第二點,我們訓練了一個具有1G數量參數的大型神經網絡,並用訓練結果把ImageNet(計算機視覺領域最大的數據庫之一)判別分類結果提升到了最先進的水平。

 

 

2.前期工作

 

近年來,用於商業和學術的機器學習數據集呈空前增長的趨勢。因此,一些研究者開始探索可擴展的機器學習算法來處理這些泛洪數據[11, 12, 13, 14, 15, 16, 17]。但大量的研究仍着眼於線性凸模型[11, 12, 17]。在凸模型中,分佈式梯度計算自然是第一步,但是有時因爲同步的問題會遭遇訓練速度減慢。針對該問題,已經有一些有效果的工作,如異步隨機梯度下降算法中的無鎖參數更新(如Hogwild![19])。不幸的是,將這些方法擴展到的非凸情況的研究,如處理訓練深度網絡中遇到的問題,還是一片未知的領域。特別地,在存在多個局部最小解的情況下,是否能夠使用參數平均或者執行密集的異步參數更新方法,還是未知的問題。

在深度學習範疇中,大多數工作仍然集中在利用單節點訓練較小規模模型(如Theano[20])上。關於向上擴展深度學習的一些有意思的建議是,利用GPU來訓練多個小型模型,然後將分別的預測結果取平均[21],或者修改標準的深度網絡使其能夠從本質上並行化。而與這些前期工作不同,我們關注於擴展深度網絡用於訓練具有10^9參數數量的超大模型,同時避免給模型形式引入限制。在分佈式擴展方面,模型的並行,其思想和[23]類似,是一個主要的組成部分,同時其也必須和巧妙的分佈優化方法相結合以利用數據的並行性。

我們也考慮了用一些現有的大規模計算工具,如MapreduceGraphLab等來處理大規模深度學習。我們發現爲數據並行處理而設計的Mapreduce,極其不適合深度網絡訓練中固有的迭代計算;而用於通用(通常是無結構的)圖計算的GraphLab,同樣沒有利用深度網絡中典型的分層圖結構來提升計算效率。

 Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文

1DistBelief中模型並行的一個例子,描述了一個局部連通的五層深度神經網絡,被劃分到四個節點上(藍色矩形)。只有和跨越劃分邊界的連接邊(粗線)相連的單元(Unit)需要在機器間傳輸其狀態,即使單元和多條跨越邊界的邊相連,也只需傳輸一次其狀態到其他機器。對於每個劃分區(節點)而言,其內部單元的計算被並行指派到所有CPU上。

 

 

3.模型並行

爲了使超大規模深度網絡的訓練變得容易,我們開發了軟件框架——DistBelief,用以支持神經網絡的並行計算和分層圖形模型。用戶只需定義發生在每個單元上的計算過程以單元在向上傳遞和向下傳遞(原作者注:對於神經網絡而言,“向上”和“向下”指的是“前饋”和“反向傳播”,而對於隱式Markov模型,它們與“前向”和“後向”意思更相近)時需發送的消息。對於大型模型,用戶可能會將模型加以劃分(如圖1所示),使得不同節點的計算任務被分配到了不同機器上。DistBelief自動地利用CPU資源將節點內計算並行化,同時它還管理了底層通信、同步化和在訓練和推斷時的機器間數據傳輸。

將深度網絡分佈到多個機器上所帶來的性能提升主要取決於模型的連通結構和計算需求。具有大量參數或高計算需求的模型通過增加CPU和內存數量通常可以提升訓練速度,直到增加到通信開銷成爲系統的瓶頸。我們已成功地在144個劃分(機器)上運行DistBelief框架,且獲得了顯著的性能提升,同時在816個劃分上運行的一箇中等大小模型,也獲得了很好的效果(請參考第5節中模型並行化基準測試中的實驗結果)。顯然地,局部連通的網絡模型,因爲需要更少的網絡通信,所以比全連通網絡模型更易於分佈化。導致性能退化的一個主要原因是因不同機器上處理時間的不同,導致大量的機器在等待一個或單個節點完成本階段任務(譯者注:和MapReduceMap階段的長尾問題類似)。儘管如此,對於我們最大的模型來講,我們仍可以高效地用總共有512CPU 32臺機器(每臺機器平均使用16CPU的計算資源)來訓練單個神經網絡。當和下一節中講到的利用模型多副本方法的分佈式優化算法相結合時,將使得在多達10KCPU數量上訓練單個網絡成爲可能,從而進一步減少總的訓練時間。

 

4.分佈式優化算法

DistBelief框架中的並行計算方法使我們能夠部署和運行比前期工作中提到的大得多的神經網絡模型。但是爲了在合理時間內訓練如此規模的模型,這就要求我們不僅需實現單個DistBelief實例內的並行,而且需要將訓練任務分發到多個DistBelief實例。在本節中,我們將具體闡述這第二級的並行,即採用多個DistBelief模型的實例(或副本),同時來達到一個優化目標。

 

Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文

2.左:Downpour SGD,模型的副本採用異步方式從參數服務器(Parameter Server)中獲取參數w和上傳Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文

到參數服務器。右:Sandblaster L-BFGS:單個協調器(Coordinator)實例發送簡短消息(message)到模型副本和參數服務器以協調批量優化過程。

 

下面我們來對這兩個分佈優化方法做比較:Downpour SGD是在線方法,而L-BFGS是批量方法。兩方法中模型副本都利用了中心分割化服務器組的概念來共享參數,也都利用了每個模型副本中DistBelief的並行性。但更重要的是,對不同副本的處理時間的不同,甚至整個模型副本的失效、移除和重啓等情況都在兩方法的考慮範圍之內。

 

4.1 Downpour SGD

隨機梯度下降(SGD)方法,應該是最常用的訓練深度神經網絡的優化方法[26, 27, 3]。但不幸的是,傳統SGD方法本質上的順序性,使得在大型數據集下變得不再適用,因爲這種完全串行方式所需要的機器間數據移動是非常耗時的。

爲了將SGD應用到大數據集上,我們提出了Downpour SGD,一個使用單個DistBelief模型的多個分佈副本的異步隨機梯度下降變種。它的基本方法如下:將訓練集劃分若干子集,並對每個子集運行一個單獨的模型副本。模型副本之間的通信均通過中心參數服務器組,該參數服務器組維護了模型參數的當前狀態,並分割到多臺機器上(例如,如果我們參數服務器組有10個節點,那麼每個節點將負責存儲和更新模型參數的1/10,如圖2所示)。該方法在兩個方面體現異步性:(i)模型副本之間運行獨立,(ii)參數服務器組各節點之間同樣是獨立的。

考慮Downpour SGD的一個最簡單的實現,在處理每個mini-batch(譯者注:小型批量)之前,模型副本都會向參數服務器請求最新的模型參數。因爲DistBelief框架也是分佈在多臺機器上,所以其框架的每個節點只需和參數服務器組中包含和該節點有關的模型參數的那部分節點進行通信。在DistBelief副本獲得更新後的模型參數後,運行一次mini-batch樣本來計算參數的梯度,並推送到參數服務器,以用於更新當前的模型參數值。

可以通過設定每Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文mini-batch操作向參數服務器獲取一次更新後的參數和每Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文mini-batch操作推送一次梯度更新到參數服務器(這裏Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文不一定和Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文相等)。事實上,獲取參數,推送梯度和處理訓練樣本三種操作,可以以三個採用弱同步的線程實現(參見附錄中的僞代碼)。爲了簡單起見,同時也是爲了和傳統SGD方法相比較,在下面的實驗中,我們設定Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文

在處理機器失效方面,Downpour SGD比標準(同步)SGD要魯棒。對於同步SGD來講,如果一臺機器失效,整個訓練過程將會延時;但是對於異步SGD來講,如果某個模型副本的一臺機器失效,其他模型副本仍然繼續處理樣本並更新參數服務器中的模型參數。另一方面,Downpour SGD帶來的多種異步處理形式給優化過程帶來了進一步的隨機性。這裏面最顯而易見的是,模型實例最可能是使用一個稍微過時的參數來計算梯度,因爲這時其他的副本可能已經更新了參數服務器上的參數。但是,除此之外還有其他隨機的來源:因爲參數服務器組的每臺機器是行爲獨立的,所以無法保證在給定時間點上,每個節點的參數被更新的次數相同,或者以同樣的順序被更新。更進一步的,因爲模型副本使用不同的線程來獲取參數和推送梯度值,故在同一時間戳上,單個副本內的參數將有額外的稍微不一致的現象。儘管對於非凸問題的這些操作的安全性缺乏理論基礎,但是在實踐中,我們發現放鬆一致性要求的做法是相當有效的。

我們發現,另外一項能極大提高Downpour SGD魯棒性的技術是使用Adagrad[10]自適應學習速率方法。與使用固定的值(如圖2中的η)作爲學習速率的方式不同,Adagrad的每個參數使用單獨的自適應學習速率。假設Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文是第i個參數在第K次迭代時的學習速率,Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文是其梯度值,那麼:

Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文

可以看出,因爲學習速率的計算僅與參數歷史梯度值的平方和有關,所以Adagrad易於在每個參數服務器節點上單獨實現。所有學習速率共享的縮放常量因子γ,通常大於(可能有一個數量級)不使用Adagrad情況下,採用固定學習速率的最優值。Adagrad的使用能夠增加併發訓練的模型副本數量,同時,採用“熱啓動”(即在啓動其他副本之前,用單個模型來訓練參數)的模型訓練方法,幾乎消除了在Downpour SGD中可能會出現的穩定性問題(參見第5節的測試結果)。

 

4.2 Sandblaster L-BFGS

已經證實批量處方法在小型深度網絡的訓練上效果很好[7]。爲了將這些方法運用到大型模型和大型數據集上,我們引入了Sandblaster批量優化框架,同時討論了L-BFGS在該框架的一個實現。

Sandblaster的主要思路是將參數的存儲和操作分佈化,算法(如L-BFGS)的核心位於協調器(coordinator)中(如圖2)。該協調器並不直接獲取模型參數,相反地,它發出一系列命令(如內積,向量縮放,係數相關加法,乘法)到參數服務器節點,並且這些命令能在節點範圍內執行。一些額外的信息,如L-BFGS的歷史數據緩存,同樣保存在計算出它的參數服務器節點上。這使得運行大型模型(10億級參數)成爲現實,而且不會因傳輸參數和梯度過度集中在一個節點上而導致性能下降。

在典型的L-BFGS的並行實現中,數據被分佈到許多機器上,每個機器負責對樣本數據的一個特定的子集計算梯度,而後梯度值被傳輸回中心服務器(或者通過樹形結構來聚合[16])。因爲許多方法都需要等待最慢的機器處理完畢,所以它並不能很好地擴展到大型共享集羣中。爲了解決該(擴展性)問題,我們採用瞭如下的負載均衡的方案:協調器分配給這N個模型副本一小部分的任務量,並且該計算任務遠小於總批量的 ,每當副本完成計算處於閒置狀態時,立即給其分配新的計算任務,如此下去。爲了在整個批量計算的最後階段進一步優化慢速副本的任務處理,協調器調度最快結束的副本同時計算未完成的任務,從最先結束的副本處取得計算結果。該方案和MapReduce中的“備份任務”的使用相類似[24]。數據預取方式和通過將順序數據傳輸到同一生產者以提高數據親和性的方法一道,使得數據的獲取不再是問題。和Downpour SGD中和參數服務器之間的高頻率,高吞吐參數同步方式相反,Sandblaster中的計算者僅僅需在每次批處理的開始階段獲取參數,並且只需在極少的結束部分(用以免遭備份失效和重啓)處需要傳輸梯度到參數服務器。

 

5.測試

我們用兩個不同的深度學習問題來衡量了我們設計的優化算法:(i)靜態圖像的物體識別和(ii)語音識別的聲學處理。

語音識別任務是將一小段音頻的中心區域(或幀)歸類爲數千種類型之一。我們使用了一個五層的深度網絡:四個隱藏層,每個有2560個單元,並以sigmoid爲激勵函數;一個有8192個單元的softmax輸出層。輸入層是11個長度爲25ms連續的相互重疊的語音,每個由40個對數動能值表示。層與層之間是全連接的,因此整個網絡的參數數量有42M。我們用1.1G個弱標記樣本集來訓練模型,並且用保留的部分樣本做測試集來衡量精確度。簡單深度網絡的配置和訓練過程請參照[28]

對於可視物體識別,我們訓練了一個更大的局部區域連通的神經網絡,並作用於ImageNet的有1.6*10^7圖像的數據集上,每個圖像被縮放到100X100像素大小。整個網絡有三個階段,每個階段都包含了過濾,池化,局部對比度歸一化等操作,過濾層的每一個單元都和其前一層的10X10的小塊圖像相連接。我們的基礎設施允許多個單元都和同一小塊圖像相連接,我們的實驗中,同一連接單元數量從8增加到36不等。輸出層由2.1*10^4個一對多模式的logistic分類器組成,每個分別代表ImageNet的一個物體種類。相似的深度網絡配置和訓練過程請參照[30]

 

模型並行基準測試

爲了測試DistBelief模型的並行性擴展,實驗中以運行單個模型實例的劃分(機器)數量作爲變量,我們測量了用簡單SGD訓練處理單個mini-batch的平均時間。在圖3中,我們通過計算訓練的平均加速比來量化N個節點對並行化的影響:使用單個節點訓練花費的時間對使用N個節點訓練花費的時間的比值。模型中推斷過程的加速比是相似的,因而沒有顯示出來。

中等大小的語音模型在8個機器節點上運行是最快的,相比於單個節點,加速比大約是2.2(每臺機器配置其使用不超過20CPU來訓練模型)。將模型劃分在大於8個機器節點上實際上會減緩訓練過程,因爲模型的全連通結構使得此時網絡開銷開始起決定性因素,同時節點的增加使得每個節點的計算量也相應地減少。

Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文

3:四個不同規模的深度網絡使用單個DistBelief實例訓練在集羣機器不同規模下的加速比。具有較多參數的模型在機器增加時比較少參數模型獲得更高的加速比。

Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文
4:左圖:採用不同的優化方法,在(在一部分訓練集)上的訓練精度。右圖:訓練時間的變化下,測試集的分類精度的變化曲線。Downpour SGDSandblaster實驗均採用了10小時平凡SGD熱啓動方式來初始化。


相反地,比語音識別模型規模更大,且具有局部連通性的圖像模型,能夠通過持續給每個模型副本增加節點數量,來提升加速比。可以看出,具有1.7*10^9個參數的最大模型加速比最高,在使用了81個節點的情況下,獲了12倍的加速比。對於大型模型來講,通過持續增加機器數量始終能提升訓練速度,但是獲得的性能回報逐漸變少。

優化方法的比較:爲了衡量提出的分佈優化方式的性能,我們在不同的配置下,運行前面提及的語音模型。考慮兩種基準方式(譯者注:作爲比較的靶對象):(i)用傳統(單個副本)SGD方法訓練DistBelief模型(在8個劃分上),(ii)CUDA[28]GPU上訓練與(i)中同樣的模型。三個和基準方式相比較的分佈優化方法是:(i)固定學習速率的Downpour SGD(ii)使用Adagrad自適應學習速率的Downpour SGD(iii)Sandblaster L-BFGS

4說明了對於不同的優化方法,以訓練時間作爲分類的性能時的模型比較。我們的目標是忽略資源要求下,在最短的訓練時間內,獲得最佳的測試集分類精度。傳統單副本的SGD(黑色曲線)是最慢速的。具有20個副本的Downpour SGD方法(藍色曲線)在此基礎上獲得了顯著的提升。20個副本的Downpour SGDAdagrad相結合(橙色曲線)是可以被認爲是中等速率的,而使用了2000個模型副本的Sandblaster L-BFGS更加快速(綠色曲線)。但是,最快的是200個模型副本並和Adagrad相結合的Downpour SGD方法(紅色曲線)。可見,只要供給足夠的CPU資源,Sandblaster L-BFGSDownpour SGD方法對模型的訓練都能從本質上快於高性能GPU

儘管我們沒有限制以上實驗的資源使用,但是我們可以考慮這些優化方法是如何用硬件資源來換取性能提升的。將測試集精度設定爲固定值(16%),在改變機器數量和CPU數量的條件下,測試上述方法達到該精度所需訓練時間,以此方式來分析資源使用和性能的關係,如圖5。每條曲線的四個點其中之一對應於圖4中的訓練配置,其他三個點是替代的配置。

Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文
5:在不同機器數量(左圖)和CPU數量(右圖)下,幾種優化策略達到固定精度值(16%)所花費的時間

 

在此座標圖中,距原點較近的點更優,因爲它們在更少硬件資源的條件下,花費的訓練時間更少。從這個角度上講,使用AdagradDownpour SGD方法看起來是最好的權衡:對於任意固定機器數量或CPU數量條件下,該方法比Downpour SGDSandblaster L-BFGS花費更少的時間達到精度目標。對於任意給定達到精度目標的訓練時間,使用AdagradDownpour SGDSandblaster L-BFGS使用更少的資源,並且在多數情況下,使用固定學習速率的Downpour SGD甚至都不能在最後期限內完成訓練目標。Sandblaster L-BFGS看起來還能通過持續增加CPU數量來提高加速比,表明在極其大的(如3*10^4CPU使用量)資源使用條件下,應該會獲得最快的訓練時間。

 

應用到ImageNet

先前的實驗證明了,我們的技術可以加速具有10^7參數數量的神經網絡訓練。但是,對於這些基於集羣的分佈式優化方法來講,最有價值的優點,是它能擴展到遠大於單個機器能夠容納得下的模型,更不用說單個GPU了。爲了測試訓練大型神經網絡的能力,我們使用Downpour SGD訓練了之前提及的具有1.7*10^9個參數的圖像模型,用於分類任務。正如[30]中的細節描述,在ImageNet分類任務中,這個網絡的訓練結果獲得了大約錯誤率15%交叉驗證(Cross-Validation)的分類精度,比我們所已知的先前最高的精度提高了60%多。

 

6.結論

在這篇文章中,我們介紹了DistBelief,一個深度網絡的分佈並行訓練的框架,並在該框架中發現了一些有效的分佈優化策略。我們提出了Downpour SGD,一個高度異步的SGD變種算法,用以訓練非凸的深度學習模型,其結果出乎意料的好。Sandblaster L-BFGS L-BFGS的分佈式實現,其與SGD相比具有競爭力。同時,對網絡帶寬的高效利用,使得其能夠擴展到更大數量的併發線程來訓練同一模型。這就是說,當具有2000數量CPU或更少時,Downpour SGDAdagrad自適應學習速率方法的結合是最有效的方法。

Adagrad方法本身不是爲異步SGD的使用而設計的,並且該方法最典型的應用也不是在非凸問題上。但是,在高度非線性的深度網絡中,兩者的結合的效果卻如此的好。我們推測,在面對劇烈的異步更新時,Adagrad自動地對不穩定參數起到了穩定的效果,並且很自然地根據不同的深度網絡層數的變化來調整學習速率。

實驗結果表明,即使在中等規模的模型訓練上,使用我們的大規模(分佈式)方法,集羣方法也比GPU要快,並且沒有GPU對模型規模的限制。爲了證明其訓練更大模型的能力,我們通過訓練一個超過10^9數量參數的模型,在ImageNet物體識別上獲得了比先前最優的更好的精度水平。

 

Acknowledgments

The authors would like to thank Samy Bengio, Tom Dean, John Duchi, Yuval Netzer, Patrick Nguyen, Yoram Singer, Sebastian Thrun, and Vincent Vanhoucke for their indispensable advice, support, and comments.

 

References

[1]G. Dahl, D. Yu, L. Deng, and A. Acero. Context-dependent pre-trained deep neural networks for large vocabulary speech recognition. IEEE Transactions on Audio, Speech, and Language Processing, 2012.

[2]G. Hinton, L. Deng, D. Yu, G. Dahl, A. Mohamed, N. Jaitly, A. Senior, V. Vanhoucke, P. Nguyen, T. Sainath, and B. Kingsbury. Deep neural networks for acoustic modeling in speech recognition. IEEE Signal Processing Magazine, 2012.

[3] D. C. Ciresan, U. Meier, L. M. Gambardella, and J. Schmidhuber. Deep big simple neural nets excel on handwritten digit recognition. CoRR, 2010.

[4] A. Coates, H. Lee, and A. Y. Ng. An analysis of single-layer networks in unsupervised feature learning. In AISTATS 14, 2011.

[5] Y. Bengio, R. Ducharme, P. Vincent, and C. Jauvin. A neural probabilistic language model. Journal of Machine Learning Research, 3:1137–1155, 2003.

[6] R. Collobert and J. Weston. A unified architecture for natural language processing: Deep neural networks with multitask learning. In ICML, 2008.

[7] Q.V. Le, J. Ngiam, A. Coates, A. Lahiri, B. Prochnow, and A.Y. Ng. On optimization methods for deep learning. In ICML, 2011.

[8] R. Raina, A. Madhavan, and A. Y. Ng. Large-scale deep unsupervised learning using graphics processors. In ICML, 2009.

[9] J. Martens. Deep learning via hessian-free optimization. In ICML, 2010.

[10] J. C. Duchi, E. Hazan, and Y. Singer. Adaptive subgradient methods for online learning and stochastic optimization. Journal of Machine Learning Research, 12:2121–2159, 2011.

[11] Q. Shi, J. Petterson, G. Dror, J. Langford, A. Smola, A. Strehl, and V. Vishwanathan. Hash kernels. In AISTATS, 2009.

[12] J. Langford, A. Smola, and M. Zinkevich. Slow learners are fast. In NIPS, 2009.

[13] G. Mann, R. McDonald, M. Mohri, N. Silberman, and D. Walker. Efficient large-scale distributed training of conditional maximum entropy models. In NIPS, 2009.

[14] R. McDonald, K. Hall, and G. Mann. Distributed training strategies for the structured perceptron. In NAACL, 2010.

[15] M. Zinkevich, M. Weimer, A. Smola, and L. Li. Parallelized stochastic gradient descent. In NIPS, 2010.

[16] A. Agarwal, O. Chapelle, M. Dudik, and J. Langford. A reliable effective terascale linear learning system. In AISTATS, 2011.

[17] A. Agarwal and J. Duchi. Distributed delayed stochastic optimization. In NIPS, 2011.

[18] C. H. Teo, Q. V. Le, A. J. Smola, and S. V. N. Vishwanathan. A scalable modular convex solver for regularized risk minimization. In KDD, 2007.

[19] F. Niu, B. Retcht, C. Re, and S. J. Wright. Hogwild! A lock-free approach to parallelizing stochastic gradient descent. In NIPS, 2011.

[20] J. Bergstra, O. Breuleux, F. Bastien, P. Lamblin, R. Pascanu, G. Desjardins, J. Turian, D. Warde-Farley, and Y. Bengio. Theano: a CPU and GPU math expression compiler. In SciPy, 2010.

[21] D. Ciresan, U. Meier, and J. Schmidhuber. Multi-column deep neural networks for image classification. Technical report, IDSIA, 2012.

[22] L. Deng, D. Yu, and J. Platt. Scalable stacking and learning for building deep architectures. In ICASSP, 2012.

[23] A. Krizhevsky. Learning multiple layers of features from tiny images. Technical report, U. Toronto, 2009.

[24] J. Dean and S. Ghemawat. Map-Reduce: simplified data processing on large clusters. CACM, 2008.

[25] Y. Low, J. Gonzalez, A. Kyrola, D. Bickson, C. Guestrin, and J. Hellerstein. Distributed GraphLab: A framework for machine learning in the cloud. In VLDB, 2012.

[26] L. Bottou. Stochastic gradient learning in neural networks. In Proceedings of Neuro-Nˆımes 91, 1991.

[27] Y. LeCun, L. Bottou, G. Orr, and K. Muller. Efficient backprop. In Neural Networks: Tricks of the trade. Springer, 1998.

[28] V. Vanhoucke, A. Senior, and M. Z. Mao. Improving the speed of neural networks on cpus. In Deep Learning and Unsupervised Feature Learning Workshop, NIPS 2011, 2011.

[29] J. Deng, W. Dong, R. Socher, L.-J. Li, K. Li, and L. Fei-Fei. ImageNet: A Large-Scale Hierarchical

Image Database. In CVPR, 2009.

[30] Q.V. Le, M.A. Ranzato, R. Monga, M. Devin, K. Chen, G.S. Corrado, J. Dean, and A.Y. Ng. Building high-level features using large scale unsupervised learning. In ICML, 2012.

 

7.附錄

出於完整性考慮,這裏我們給出了Downpour SGD算法中模型副本(客戶端)和Sandblaster L-BFGS算法的僞代碼。

Downpour SGD(客戶端):

 

 Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文


Sandblaster是分佈式批量方法的優化框架。其本質的概念是將分佈式的操作分解爲DistBelief參數服務器單節點內的計算。舉例說明,假設我們的模型有10^9個參數,參數服務器組有10個節點,因此每個節點上有1/10的參數。可以將L-BFGS分解爲一系列的向量數乘和內積操作,而且每一個向量都是10^9維的。某個節點始終負責L-BFGS中向量的前1/10,而另外一個節點負責向量的下一個1/10,如此下去,最後一個節點負責最後1/10部分,那麼可以證明,向量的數乘(Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文)和內積(Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文)操作使用可以以分佈式的樣式實現,並且只花費很少的通信開銷,任何中間向量結果都以分佈式的樣式存儲在節點中,而任何中間標量結果可以方便地發送給其他所有節點。Large <wbr>Scale <wbr>Distributed <wbr>Deep <wbr>Networks <wbr>中譯文

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章