研究已經(jīng)發(fā)現(xiàn),靈長類生物大腦中的神經(jīng)元越多,平均下來每個神經(jīng)元與其他神經(jīng)元的連接就越少(來自Herculano-Houzel等人的研究,2010)。這與我們設計深度神經(jīng)網(wǎng)絡的方式恰恰相反。深度神經(jīng)網(wǎng)絡更傾向于將每一層中的每個新神經(jīng)元都與前一層中的所有神經(jīng)元連接起來。
我們已經(jīng)知道如何將一個完全訓練好的稠密網(wǎng)絡壓縮到稀疏網(wǎng)絡,但是,讓一個網(wǎng)絡在訓練期間始終保持稀疏卻很少被研究。我們?nèi)绾尾拍茏龅竭@一點的呢?今天,我們就要介紹ELMo作者Luke Zettlemoyer的最新研究,稀疏動量——一種訓練稀疏網(wǎng)絡的有效方法。
在稀疏學習中,最重要的是盡可能有效地使用神經(jīng)網(wǎng)絡中的每一個權(quán)重。如果將“有效性”定義為“減少誤差”,那么我們的下一步就很明確了。我們需要找到能夠一個指標——它應當能夠衡量一個權(quán)重減少誤差的效果,并刪除所有并不能減少誤差的權(quán)重。一旦移除了權(quán)重,就可以在我們認為有望減少未來誤差的位置重新生成新的權(quán)重。
打個比方,如果將北極作為局部最小值并使用羅盤針向局部最小值的漸變,那么您可以通過搖動指南針來旋轉(zhuǎn)羅盤針來模擬隨機梯度下降更新。每次針經(jīng)過正北時,它會逐漸減速,然而,由于旋轉(zhuǎn),它仍會“超過”該方向。但是,如果你取平均指示 - 一次指針位于北極左側(cè),另一次指向右側(cè) - 這些偏差抵消了,你會立即得到一個非常接近的方向真正的北極。
如果一個權(quán)重的動量表明它一致地減少了多少誤差,那么一個層中所有權(quán)重的平均動量大小應該表明每個層平均減少了多少誤差。通過獲取層的平均動量大小,我們可以輕松地比較每層中平均重量的有效性。這就使我們可以有底氣地說,例如,卷積層A中的權(quán)重平均只有完全連接層B的1/3,反之亦然。這種方法使我們能夠有效地重新分配權(quán)重:如果我們發(fā)現(xiàn)“無用”權(quán)重,現(xiàn)在我們就能夠很精確地知道到底把它放在哪一層了??墒沁@下問題又來了——在這一層中,我們把它具體放哪兒呢?
我們可以從以下兩個問題著手:哪些是最無用的權(quán)重因素?我們應該在哪一層特征中增加權(quán)重?第一個問題在神經(jīng)網(wǎng)絡壓縮研究中十分常見,我們采取修剪小量級權(quán)重的方式,這種方式意義重大。假設所有權(quán)重具有相似量級的平均輸入,并使用批量歸一化方法,那么小量級權(quán)重會使神經(jīng)元產(chǎn)生激活差異最小,因此,刪除這些小量級權(quán)重對神經(jīng)網(wǎng)絡法預測性能的改變最小。
一旦我們移除了小量級權(quán)重,重新分配剩余權(quán)重到有效層(由平均動量確定),就需要確定此權(quán)重在相應有效層的發(fā)展位置。首先思考一個問題:“連接哪些神經(jīng)元可以協(xié)同減少誤差?”答案很明顯,取決于動量的大小。但無論如何,我們需要先找到缺失或零值權(quán)重的動量值(之前我們從訓練中排除的那些),在這些缺失權(quán)重的位置增加動量值大的權(quán)重,這樣就完成了稀疏動量算法,此過程如下圖所示。
稀疏動量通過查看臨近梯度(動量)的加權(quán)平均值來確定在稀疏網(wǎng)絡中增加新權(quán)重的位置,以找到能夠一致減少誤差的權(quán)重和層。(1)我們根據(jù)平均動量大小確定每層的重要性。(2)我們刪除每一層較小50%的權(quán)重。(3)然后,我們根據(jù)層的重要性在層之間重新分配權(quán)重。在每一層中,我們增加大動量之處的權(quán)重。
在ImageNet圖像識別數(shù)據(jù)庫中,我們無法達到密集性能水平,這表明需要改善稀疏動量的指標。但無論如何,稀疏動量法與其他方法相比,在訓練樣本過程中實現(xiàn)保持稀疏權(quán)重方面,具有明顯優(yōu)勢。稀疏學習預示了我們需要加速樣本的訓練,我們是否已經(jīng)做到了?似是而非。如果權(quán)衡稀疏卷積的加速效果,稀疏動量可以有效地加速訓練,但由于稀疏神經(jīng)網(wǎng)絡法近期才用于訓練,對于GPU來說尚未建立優(yōu)化的稀疏卷積算法,目前,至少對于稀疏動量法,細粒度稀疏模式的權(quán)重表現(xiàn)如此。
因此,我們將加速效果分為兩組:一組假設存在某種稀疏卷積算法來實現(xiàn)加速,另一組使用標準密集卷積算法來實現(xiàn)加速。究竟密集卷積法如何幫助稀疏網(wǎng)絡實現(xiàn)加速呢?當看到神經(jīng)網(wǎng)絡稀疏模式出現(xiàn)卷積通道完全為空的情況,即出現(xiàn)一個全零的卷積濾波器時,我們便可以從計算中刪除此通道,同時不改變卷積的結(jié)果,從而獲得加速效果。
但是,我們從加速效果中發(fā)現(xiàn),最佳稀疏卷積法和樸素密集卷積法大相徑庭,這正好清楚地表明了GPU對的優(yōu)化稀疏卷積算法的需求。我們使用稀疏動量法訓練的樣本與使用僅有5%權(quán)重的密集卷積法的性能水平相當。是什么原因讓這5%的權(quán)重如此高效,可以與稀疏動量法權(quán)重的20倍相匹配呢?
為了研究這個問題,我們對比了稀疏網(wǎng)絡法與密集網(wǎng)絡法的不同特征,其中低層特征例如邊緣檢測器,中層特征例如輪子、鼻子、眼睛、爪子,高層特征例如汽車表面,貓臉,冰箱門等。
由此可以預測,第一個能夠在核圖形處理器上成功訓練稀疏神經(jīng)網(wǎng)絡的研究團隊,將開啟人工智能領域的新世界的大門。除此之外,稀疏學習算法的另一個挑戰(zhàn)是將其應用于自然語言處理(NLP)?;谖业膶嶒灒翢o疑問,與計算機可視化相比,在使用自然語言進行稀疏學習方面,還需要加強。