當前位置:
首頁 > 最新 > 「等蹬等燈」……神經網路訓練為何總是如此耗時?這三個原因為你答疑解惑

「等蹬等燈」……神經網路訓練為何總是如此耗時?這三個原因為你答疑解惑

註:神經網路訓練為何總是如此耗時?本文進行了解答。文章轉自: 將門創投(ID:thejiangmen),編譯 T.R,來源:Medium。

相信每個小夥伴都經歷過訓練演算法時在電腦前默默苦等的日子,看著損失像烏龜一樣一點點的減小。很多時候不禁在想,訓練網路怎麼會這麼久啊!這篇文章的作者從優化的角度道出了神經網路訓練耗時的根源,並闡述了減小非線性優化問題串列複雜度的一系列障礙。

在八十年代的時候,訓練卷積神經網路進行手寫數字識別的工作需要耗時一周甚至更長時間,今天頂級會議對論文演算法進行評估的訓練數據ImageNet也需要在單卡高端GPU上進行一周左右的訓練時間。人們為了不斷提高演算法的性能,不斷榨取硬體的計算能力並將訓練時間不斷延長。谷歌的工程師甚至利用10PFlop的TPU來進行MINST手寫字元識別演算法的訓練,人們總是會找到辦法窮盡硬體所有的算力來訓練更高的演算法,這也意味著更長的時間。

然而導致神經網路訓練時間高漲的根源卻值得我們仔細的思考,讓我們先來看看下面這段代碼:

上面這個優化過程看似簡單,但即使隨著晶體管的數量指數級上升、如果你需要串列運行300萬個循環,很多晶體管也只能袖手旁觀你的訓練速度只會局限在單線程的水平,而單線程的計算能力這些年卻沒有顯著的增加。

從圖中我們可以看出,串列計算能力的峰值在2007年達到頂峰隨後下降,作者發現三年的老筆記本上訓練Atari強化學習模型比在新的因特爾至強晶元上還快。

為了處理單線程越來越差的表現人們開始著力於減少優化迭代的次數,但循環次數卻受以下三方面原因的制約。


如果我們的優化問題如下圖所示,由於梯度下降法依賴局部信息,需要一定的迭代次數才能夠尋找到局域最小值。

非線性可由目標函數組成部分之間的相互作用表示出來,神經網路中的層數越多其非線性表示能力就越強。

讓我們來看一個例子,將一系列的隨機舉證相乘並用任意的輸入ab來歸一化結果:

我們看到即使對這樣純粹的線性神經網路,層數變多了優化也演變成非線性問題。

所以我們得到結論,層數越多的神經網路非線性就越強:

讓我們來考慮一個形如橢圓方程的最小化問題:

這一問題的難點在於梯度並不指向最小值的方向,梯度下降法在使用過程中會形成「之」字形軌跡:

為了衡量梯度下降法對於這類問題的處理難度,人們提出了一個成為「條件數」的指標來衡量,它定義為梯度問題中最長軸和最短軸的比值,隨著條件數的增加,需要優化的步數也線性增加。

下圖分別是條件數為1和10 的情況:

神經網路的優化為題造成了很差的條件數,參數越多使得條件數越差,需要的優化步驟也越多。詳細內容可以參照文末論文1。


神經網路使用的優化演算法是梯度下降法,隨機梯度下降法由於條件數的原因得不到準確的下降方向,而後又被噪音不斷稀釋造成了很大的影響!

下圖數噪音對於Rosenbrock方程最小值的優化過程影響:

沒雜訊

有雜訊

雜訊的增加源於參數空間不斷增加的維度,最簡單的情況下可以視為高斯雜訊,均方根誤差隨著維度的平方根而增加。具體請看文末參考誤差。

對於這種形式的問題,我們可以使用不斷增加的三極體數量來並行計算並最終求取平均值,而且誤差隨著樣本數量的增加是可以縮小的:

基於噪音和均值公式的平方根我們發現為了避免額外的雜訊我們需要在保持參數不變的情況下增大每一次batch的數量。總結來說就是越多參數越多噪音,但是對於並行計算來說,越大的batch越多樣本的平均則噪音也就越小。


對於這三種拉低神經網路訓練速度的障礙提出了不同的解決辦法,對於第一種我們要減小非線性,利用Resnet和ReLU激活函數是其中一種先進的方法;對於第二個障礙我們需要對神經網路採取先進的線性估計方法如KFAC;對於第三種障礙,可以採用更多的計算設備集成來克服。同時下一代針對深度學習更為高效的晶體管可以同時改善這三個方面。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 獵雲網 的精彩文章:

警惕!「街頭大媽」也在談論區塊鏈 熱炒風險不容忽視
助力新生代休閑按摩體驗,「一刻間」打造寫字樓內的消費場景

TAG:獵雲網 |