【為什麼我們要挑選這篇文章】物理的限制,讓摩爾定律即將失效,GPU 的性能成長將會放緩。在硬體的限制下,我們該如何提升 AI 的演算能力?
一個有效的解決方案就是優化演算法。科學家模仿人腦,編寫稀疏學習演算法,並透過稀疏動量訓練稀疏神經網路,成功將運算速度提升 10 到 100 倍。稀疏學習將為人工智慧開啟新的大門。(責任編輯:郭家宏)
「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息
快將你的履歷自傳寄至 [email protected]」
深度學習的重要推動力是運算能力的進步。
從 2010 年到 2018 年,GPU 性能提高了 97 倍。但是,由於我們幾乎已達到了半導體技術的物理極限,可以預計,在未來 5 到 8 年內,GPU 性能的提升僅會略高於 80%。
在無法進一步提高計算能力的情況下,我們還能進行什麼樣的研究呢?
一種可行的研究方向是,從人腦中尋找靈感。
人類大腦消耗的能量是 GPU 的十分之一,但強度要高出 10 億倍。是什麼讓大腦如此高效?
原因有很多,而其中一個就是是稀疏性。
研究已經發現,靈長類生物大腦中的神經元越多,平均下來每個神經元與其他神經元的連接就越少(來自 Herculano-Houzel 等人的研究,2010)。這與我們設計深度神經網絡的方式恰恰相反。深度神經網絡更傾向於將每一層中的每個新神經元,都與前一層中的所有神經元連接起來。
我們已經知道如何將一個完全訓練好的稠密網路壓縮到稀疏網路,但是,讓一個網絡在訓練期間始終保持稀疏卻很少被研究。
我們如何才能做到這一點的呢?今天,我們就要介紹 ELMo 作者 Luke Zettlemoyer 的最新研究,稀疏動量——一種訓練稀疏網絡的有效方法。
稀疏學習最重要的,是有效使用神經網路中的每個權重
在稀疏學習中,最重要的是盡可能有效地使用神經網路中的每一個權重。如果將「有效性」定義為「減少誤差」,那麼我們的下一步就很明確了。我們需要找到一個指標——它應當能夠衡量一個權重減少誤差的效果,並刪除所有並不能減少誤差的權重。一旦移除了權重,就可以在我們認為有望減少未來誤差的位置重新生成新的權重。
如果只是關注關於權重的誤差梯度,那我們確實有這樣的指標。然而,如果我們觀察連續梯度,就發現梯度的變化可能會非常的大。例如,假如你有一個神經網絡對手寫數字 0 到 9 進行分類,那麼某一權重可能能夠很好地檢測到頂部的直線——這可能有助於減少數字 5 和 7 的錯誤,但是它可能並無法辨認數字 0,1,2,3,6,8,9(或者甚至只會幫倒忙!)。相反,檢測右上方曲線圖案的重量可能有助於辨認 0,2,3,8,9。因此我們可以認為,隨著時間的推移,這一權重將比「頂部直線」權重能夠能更加一致地減少誤差。那麼,我們如何自動檢測神經網絡中這種有用的權重呢?
面對摩爾定律的極限,科技廠該如何突破?
2019 未來科技展,帶你了解台灣半導體製程與材料戰略創新!
《點我報名》
動量:找到能夠始終如一地減少誤差的權重
打個比方,如果將北極作為局部最小值並使用指北針向局部最小值的漸變,那麼您可以透過搖動指北針來旋轉羅盤針,來模擬隨機梯度下降更新。每次針經過正北時,它會逐漸減速,然而,由於旋轉,它仍會「超過」該方向。但是,如果你取平均指示「一次指針位於北極左側,另一次指向右側」,這些偏差抵消了,你會立即得到一個非常接近的方向真正的北極。
這是動量優化技術背後的主要思想:我們對連續梯度取平均值,以更好地估計局部最小值的方向。與羅盤指針在慢下來的時候會逐漸變得越來越準確這一特性類似,我們希望在隨機梯度下降中更加高度地加權最近的梯度方向。一種方法是指定一個加權平均值,我們為當前梯度分配一個更大的權重,為前一個梯度分配一個小權重——這稱為指數平滑。透過指數平滑權重的梯度,我們得到一個加權梯度矩陣——這個矩陣是動量矩陣(這就是動量優化這一名字的由來)。通過這一指標,我們可以確定哪些權重能夠一致地減少誤差。
重新分佈權重:層平均動量大小
如果一個權重的動量表明它一致地減少了多少誤差,那麼一個層中所有權重的平均動量大小應該表明每個層平均減少了多少誤差。透過獲取層的平均動量大小,我們可以輕鬆地比較每層中平均重量的有效性。這就使我們可以肯定地說,例如,卷積層 A 中的權重平均只有完全連接層 B 的 1/3,反之亦然。這種方法使我們能夠有效地重新分配權重:如果我們發現「無用」權重,現在我們就能夠很精確地知道到底把它放在哪一層了。可是這下問題又來了——在這一層中,我們把它具體放哪兒呢?
該刪除哪些權重,在何處重新分配權重?
我們可以從以下兩個問題著手:哪些是最無用的權重因素?我們應該在哪一層特徵中增加權重?第一個問題在神經網絡壓縮研究中十分常見,我們採取修剪小量級權重的方式,這種方式意義重大。假設所有權重具有相似量級的平均輸入,並使用批量歸一化方法,那麼小量級權重會使神經元產生啟動差異最小,因此,刪除這些小量級權重對神經網絡法預測性能的改變最小。
一旦我們移除了小量級權重,重新分配剩餘權重到有效層(由平均動量確定),就需要確定此權重在相應有效層的發展位置。首先思考一個問題:「連接哪些神經元可以協同減少誤差?」答案很明顯,取決於動量的大小。但無論如何,我們需要先找到缺失或零值權重的動量值(之前我們從訓練中排除的那些),在這些缺失權重的位置增加動量值大的權重,這樣就完成了稀疏動量算法,此過程如下圖所示。

結果
結果令人振奮!稀疏動量法得出的結果表明,它勝於基於 MNIST 手寫數據集的其他壓縮演算法。首先,它提供了一種實現方式:從密集網絡開始,重複重新訓練稀疏網絡;其次,可以透過使用 20% 密集權重(即 80% 稀疏權重)配對密集網絡的性能。為便於理解此結論,我們同時將稀疏動量法與基於 CIFAR-10 數據集的單發網絡修剪法進行比較,毫無疑問,對比得出稀疏動量法更勝一籌。在基於 CIFAR-10 數據集的單發網絡修剪法中,VGG16-D 和 WRN16-10 模型可以透過使用 5% 密集權重匹配密集網絡的性能,其他模型的密集權重水平與稀疏動量法的密集權重水平近似。此外,透過優化的稀疏卷積演算法,使用 WRN 16-10模 型可以保證在實現相同性能情況下,使訓練速度提升