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