丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能學(xué)術(shù) 正文
發(fā)私信給JocelynWang
發(fā)送

0

性能可媲美密集網(wǎng)絡(luò),訓(xùn)練速度可提升數(shù)倍,如何用“稀疏學(xué)習(xí)”從頭開始訓(xùn)練稀疏網(wǎng)絡(luò)?

本文作者: JocelynWang 編輯:幸麗娟 2019-11-28 14:17
導(dǎo)語:答案在此文中。

雷鋒網(wǎng) AI 科技評論:《從頭開始訓(xùn)練稀疏網(wǎng)絡(luò):在不損失性能的情況下加速訓(xùn)練速度》這篇博文介紹的是我和  Luke Zettlemoyer 通過在整個訓(xùn)練期間保持神經(jīng)網(wǎng)絡(luò)的稀疏性從而加速訓(xùn)練速度的一項工作。這項工作證明,通過完善稀疏動量算法,可以在短短一次訓(xùn)練中用稀疏隨機權(quán)值來初始化一個神經(jīng)網(wǎng)絡(luò),并使其達到密集網(wǎng)絡(luò)的性能水平。

進一步,如果使用優(yōu)化的稀疏卷積算法,我們能夠?qū)ι窠?jīng)網(wǎng)絡(luò)的訓(xùn)練速度加快至 VGG 網(wǎng)絡(luò)訓(xùn)練速度的 3.5倍和寬殘差網(wǎng)絡(luò)(WRNs)訓(xùn)練速度的 12 倍之間。這與一些需多次對卷積層進行剪枝和重新訓(xùn)練且計算成本不菲的方法形成了鮮明的對比,比如 2019 年由 Frankle 和 Carbin 提出的“彩票假設(shè)”。

如此一來,我們證明了,將稀疏網(wǎng)絡(luò)訓(xùn)練到密集網(wǎng)絡(luò)的性能水平并不需要“中獎的初始化彩票”,但是如果能夠結(jié)合“以一種明智的方法將權(quán)重移至周圍的網(wǎng)絡(luò)”這一方法,則能夠依靠隨機權(quán)重來實現(xiàn)這一點。我們稱保持稀疏的同時性能也能維持在密集網(wǎng)絡(luò)的水平的范式為“稀疏學(xué)習(xí)”。雖然這項工作表明了實現(xiàn)稀疏學(xué)習(xí)的可能性,但在下一步工作中,我們希望能夠在要求與當(dāng)前密集網(wǎng)絡(luò)所需要的計算資源相同甚至更少的前提下,在更多的數(shù)據(jù)上訓(xùn)練規(guī)模更大以及更深的網(wǎng)絡(luò)。雷鋒網(wǎng)

一、為什么我們選擇使用稀疏學(xué)習(xí)?

計算資源的進步是推動深度學(xué)習(xí)進步的一個重要因素。從 2010 年到 2018 年,我們可以看到計算 GPU 的性能增加了 9700%。然而,由于達到了半導(dǎo)體技術(shù)的物理極限,我們可以預(yù)期在未來 5-8 年內(nèi),GPU的性能最多只會提高 80%。那么,一個無法對計算能力進一步提高的研究世界將會是什么樣子呢? 

從自然語言處理(NLP)社區(qū)中可以看出這一點,在該社區(qū)中,由于 ELMO、GPT、BERT、GPT-2、Grover 和 XL-Net 等經(jīng)過預(yù)訓(xùn)練的語言模型在大多數(shù)NLP任務(wù)中效果優(yōu)于其他方法,于是成為了整個領(lǐng)域的主導(dǎo)方法。

這些模型通常非常簡單:你在大量文檔上訓(xùn)練它們,在給定一系列其他詞語后預(yù)測出某個詞語——這有點像做填空游戲。那你可能會問,這有什么不妥嗎?事實上,這些模型是如此之巨大,以至于它們需要耗費遠超100 GPUs小時的訓(xùn)練時間。這對于那些想理解這些模型,但又缺乏大公司所擁有的計算資源而無法實現(xiàn)這一訓(xùn)練的學(xué)術(shù)研究人員來說,尤其令人感到沮喪。要真正理解這些龐大的語言預(yù)訓(xùn)練模型,首要目標(biāo)應(yīng)該是通過開發(fā)更加靈活的訓(xùn)練程序來使這些模型的訓(xùn)練過程更加的大眾化。

實現(xiàn)這一目標(biāo)的一個方法是從人腦中來尋找啟發(fā)。人腦消耗的能量是 GPU 的1/10,但功能卻是GPU的十的九次方倍。是什么使大腦的計算效率如此之高?原因有很多(更多信息可參考:https://timdettmers.com/2015/07/27/brain-vs-deep-learning-singularity/),而其中一個原因便是大腦所具有的稀疏性。

研究發(fā)現(xiàn),靈長目動物大腦中神經(jīng)元的數(shù)量元越多,與其他神經(jīng)元的連接就越少 (Herculano Houzel 等人,2010)。這與我們設(shè)計深層神經(jīng)網(wǎng)絡(luò)的方式截然不同——深層神經(jīng)網(wǎng)絡(luò)將網(wǎng)絡(luò)每一層中的每一個新神經(jīng)元與前一層中所有的神經(jīng)元連接起來。我們已經(jīng)了解如何將經(jīng)過充分訓(xùn)練的密集卷積神經(jīng)網(wǎng)絡(luò)壓縮為稀疏網(wǎng)絡(luò)(Han 等人,2015),但研究如何從一個稀疏網(wǎng)絡(luò)入手并在訓(xùn)練期間保持網(wǎng)絡(luò)稀疏的情況下順利開展訓(xùn)練的工作,目前還是比較少。那么,我們該怎么做呢?

二、稀疏動量:一種訓(xùn)練稀疏網(wǎng)絡(luò)的有效方法

本節(jié)由直觀到完整的算法視角來介紹稀疏動量算法。

性能可媲美密集網(wǎng)絡(luò),訓(xùn)練速度可提升數(shù)倍,如何用“稀疏學(xué)習(xí)”從頭開始訓(xùn)練稀疏網(wǎng)絡(luò)?

圖1:稀疏動量通過查看最近梯度(動量)的加權(quán)平均值來確定稀疏網(wǎng)絡(luò)中新權(quán)重的增長位置,從而找到同時減少誤差的權(quán)重和層。(1)根據(jù)平均動量量級確定各層的重要性。(2)在每一層中,我們?nèi)サ糇钚?quán)值的50%。(3)然后,我們根據(jù)各層的重要性在層之間重新分配權(quán)重。在同一個層中,我們在動量量級較大的地方增加權(quán)重。 

1、好的稀疏學(xué)習(xí)算法有什么重要特性?

在稀疏學(xué)習(xí)中,最重要的事情便是盡可能有效地利用神經(jīng)網(wǎng)絡(luò)中的每一個權(quán)值。如果把“有效性”定義為“減少誤差”,那么我們對于如何推進稀疏學(xué)習(xí)就有了更加清晰的視角。我們需要找到一種度量方法來描述一個權(quán)重在減少誤差時的有效性,并去掉所有無效的權(quán)重。一旦我們?nèi)コ诉@些權(quán)重,我們希望在認(rèn)為未來有望減少誤差的位置重新生成新的權(quán)重。 

如果我們看權(quán)重所對應(yīng)的誤差的梯度,實際上我們是有一個度量方法的。然而,如果連續(xù)觀察梯度的變化,我們發(fā)現(xiàn)梯度可以發(fā)生劇烈的波動。例如,如果你有一個將手寫數(shù)字集從0到9進行分類的神經(jīng)網(wǎng)絡(luò),并且這個權(quán)重可以很好地檢測到頂部的一條直線,它可能有助于減少對數(shù)字5、7的檢測誤差,但對0、1、2、3、6、8、9,它不但可能沒有幫助,甚至可能會適得其反。相反地,在右上角檢測曲線模式的權(quán)重可能對數(shù)字0、2、3、8、9的檢測有輔助作用,因此,我們希望該權(quán)重比“頂部直線”權(quán)重在減少誤差時更具有連續(xù)性。如何在神經(jīng)網(wǎng)絡(luò)中自動檢測出這樣有效的權(quán)值呢?

2、動量:找到能持續(xù)減少誤差的權(quán)重

如果將北極看作局部最小值,將指南針指向局部最小值看作梯度,則可以通過瘋狂搖動來使指南針進行旋轉(zhuǎn),從而模擬更新隨機梯度下降。隨著每一次指針正對北極,它會減慢速度,并越來越頻繁地指向北極方向,然而,由于旋轉(zhuǎn)慣性,它仍然會“越過”這個方向。因此,當(dāng)北極針還在來回移動,從這兩三次的測量結(jié)果中你可能還不清楚北極到底在哪里。然而,如果你取平均的方向——某一次指針位于北極方向偏左一些,另一次則偏右一些——那么這些偏差就會消失,你會立刻得到一個非常接近真實中北極方向的指向。

這就是動量優(yōu)化技術(shù)背后的主要思想:我們對連續(xù)梯度取平均值,以獲得對局部最小值方向的最優(yōu)估計。與指南針類似,隨著時間的推移,指南針方向變化的速度越來越慢,于是我們希望用隨機梯度下降中更高的權(quán)重來衡量最近的梯度方向。其中一種方法是分配一個加權(quán)平均值,即給當(dāng)前梯度分配一個更大的權(quán)重,給之前的梯度分配一個更小的權(quán)重——這也被稱為指數(shù)平滑。通過指數(shù)平滑權(quán)值的梯度,我們得到一個加權(quán)梯度矩陣,這個矩陣就是動量矩陣,通過它可以實現(xiàn)所謂的動量優(yōu)化。通過這種方法,我們可以識別出哪些權(quán)重能夠持續(xù)地減小誤差。 

3、權(quán)重重新分配:層的平均動量大小

從這里開始,我們對稀疏動量算法進行第一個重要的觀察發(fā)現(xiàn):如果一個權(quán)重的動量表示它所連續(xù)減少誤差值的大小,那么網(wǎng)絡(luò)每層中所有權(quán)重的平均動量就表示每層平均誤差值減少的大小。我們之所以取這個量值是因為兩個不同的權(quán)重可能會連續(xù)朝著負(fù)方向或者正方向變化。我們通過計算各層平均動量,可以很容易地比較各層平均權(quán)重的有效性。

這就使得,比如說在降低誤差方面的效果,卷積層 A 的平均權(quán)重是全連接層 B 的平均權(quán)重的1/3,反之亦然。這種方法使我們能夠有效地對權(quán)重重新分配:如果我們發(fā)現(xiàn)“無用的”權(quán)重,我們現(xiàn)在就可以準(zhǔn)確地知道應(yīng)該將其放在哪一層。但究竟該將它們放在某一層中的哪個位置呢?

4、哪些權(quán)重應(yīng)該被去掉?應(yīng)該在何處重新賦值?

接下來的兩個問題更直接:哪些是最無用的權(quán)重?在一層中卷積層,應(yīng)該在某一層中的哪個位置增加權(quán)重?

第一個問題是在神經(jīng)網(wǎng)絡(luò)壓縮研究中的一個常見問題,針對這一問題,研究者普遍采取的方法是使用最小的動量大小來對權(quán)重剪枝。這有什么意義呢?如果我們假設(shè)所有的權(quán)重都是將動量大小相似的輸入平均所得到的——在使用批量標(biāo)準(zhǔn)化時,這是一個合理的假設(shè),那么較小的權(quán)值對激活神經(jīng)元的影響也是最小的。去掉這些無用的權(quán)重,能夠最小限度地改變神經(jīng)網(wǎng)絡(luò)在預(yù)測方面的性能。

一旦我們?nèi)サ袅藷o用的權(quán)重,并通過層的平均動量將其重分配到有效權(quán)重層,就需要決定在層內(nèi)將它們確切地分布到哪個位置。如果有人問道:“將哪兩個處于非連接狀態(tài)的神經(jīng)元連接起來能夠連續(xù)減少誤差?” 這個問題的答案再次指向動量大小。然而這一次,我們想研究下“缺失”或零值權(quán)重的動量大小,也就是說想觀察下那些之前被我們排除在訓(xùn)練之外的權(quán)重。因此,我們在缺失的權(quán)重?fù)碛凶畲髣恿康牡胤絹碓黾訖?quán)重。這就完成了稀疏動量算法,如圖1所示。

三、結(jié)果分析

在 MNIST 手寫數(shù)據(jù)集中使用稀疏動量與其他壓縮算法來進行比較,結(jié)果令人印象深刻。其中,稀疏動量優(yōu)于其他大多數(shù)方法??紤]到從頭開始訓(xùn)練一個稀疏網(wǎng)絡(luò)所使用的壓縮方法是從密集網(wǎng)絡(luò)入手并且往往需要分別進行重復(fù)訓(xùn)練,這一結(jié)果可以說非常不錯了。

另一個令人印象深刻的發(fā)現(xiàn)則是:當(dāng)網(wǎng)絡(luò)使用 20% 的權(quán)重(80%的稀疏度)時,其性能可與密集網(wǎng)絡(luò)持平甚至更優(yōu)。

在 CIFAR-10 上,我們將其與單次網(wǎng)絡(luò)剪枝進行了比較:后者的設(shè)計是為了實現(xiàn)簡單的結(jié)構(gòu)而不是性能的提高,因此,稀疏動量結(jié)果會更好也就不足為奇了。

然而,有趣的是,我們僅僅使用 5% 的權(quán)重就能夠?qū)?VGG16-D(VGG16 的一個版本,具有兩個全連接層)和寬殘差網(wǎng)絡(luò)(WRN)16-10(具有16層結(jié)構(gòu)深且非常寬的 WRN)訓(xùn)練到密集網(wǎng)絡(luò)的性能水平。對于其他網(wǎng)絡(luò),稀疏動量接近密集網(wǎng)絡(luò)的性能水平。此外,正如我稍后將要展示的,我們使用優(yōu)化的稀疏卷積算法,將能夠在獲得相同的性能水平的前提下,將訓(xùn)練速度提升到之前的3.0到5.6倍!

性能可媲美密集網(wǎng)絡(luò),訓(xùn)練速度可提升數(shù)倍,如何用“稀疏學(xué)習(xí)”從頭開始訓(xùn)練稀疏網(wǎng)絡(luò)?

圖2:對LeNet-300-100和LeNet-5caffe在MNIST手寫數(shù)據(jù)集中分別使用稀疏動量與神經(jīng)網(wǎng)絡(luò)壓縮算法進行訓(xùn)練的結(jié)果對比圖

性能可媲美密集網(wǎng)絡(luò),訓(xùn)練速度可提升數(shù)倍,如何用“稀疏學(xué)習(xí)”從頭開始訓(xùn)練稀疏網(wǎng)絡(luò)?ImageNet下稀疏動量與相關(guān)方法的結(jié)果對比。在一個非全稀疏的模型中,第一層卷積層和所有下采樣殘差的連接從訓(xùn)練開始都是密集的。在一個全稀疏的網(wǎng)絡(luò)設(shè)置中,所有層都是稀疏的。一般來說,稀疏動量比其他方法更有效,并且當(dāng)所有權(quán)重都呈現(xiàn)為稀疏,與其他方法的效果相比,將幾乎不分上下。這表明稀疏動量在尋找需要具有高密度的重要卷積層時是很有效的。

在 ImageNet 上,我們無法達到密集網(wǎng)絡(luò)的性能水平,這表明稀疏動量的改善還有上升空間。然而,我們依舊可以證明在訓(xùn)練過程保持稀疏權(quán)重時,稀疏動量與其他的方法相比有著明顯的優(yōu)勢。

加速訓(xùn)練

稀疏學(xué)習(xí)的一個主要功能是加速訓(xùn)練——那我們成功了嗎?既是又不是。如果我們衡量的是稀疏卷積網(wǎng)絡(luò)可能實現(xiàn)的加速,則稀疏動量是能夠有效加速訓(xùn)練進程的,然而如果僅僅最近才將稀疏網(wǎng)絡(luò)用于訓(xùn)練,那對 GPU 而言,并不存在經(jīng)優(yōu)化的稀疏卷積算法,至少對于稀疏動量所表現(xiàn)出來的權(quán)重的細(xì)粒度稀疏格式而言是不存在的。

因此,我們將加速分成兩個部分:如果存在稀疏卷積算法,則可能實現(xiàn)加速,并且如今可以使用標(biāo)準(zhǔn)密集卷積算法來實現(xiàn)加速。那密集卷積如何幫助稀疏網(wǎng)絡(luò)加速訓(xùn)練進程呢?

如果我們?nèi)タ淳W(wǎng)絡(luò)的稀疏格式,我們會發(fā)現(xiàn)卷積通道是完全空的——一個完全為零的卷積濾波器!如果發(fā)生了這種情況,我們可以在不改變卷積結(jié)果的情況下從計算中去掉通道,從而實現(xiàn)加速。

性能可媲美密集網(wǎng)絡(luò),訓(xùn)練速度可提升數(shù)倍,如何用“稀疏學(xué)習(xí)”從頭開始訓(xùn)練稀疏網(wǎng)絡(luò)?

稀疏動量可以用一小部分權(quán)重新復(fù)制一系列網(wǎng)絡(luò)的密集性能水平,從而實現(xiàn)加速。

然而,如果觀察各種不同的加速情況,我們會發(fā)現(xiàn)稀疏卷積加速和密集卷積加速之間存在顯著差異。這一點可以表明 GPU 還需要優(yōu)化稀疏卷積算法。 

四、為何稀疏學(xué)習(xí)有效?

使用稀疏動量訓(xùn)練的一些稀疏網(wǎng)絡(luò),其性能與權(quán)重僅為 5%的密集網(wǎng)絡(luò)訓(xùn)練結(jié)果相一致。是什么使這5%的權(quán)重如此有效,以至于它取得的效果與權(quán)重為其 20 倍的神經(jīng)網(wǎng)絡(luò)旗鼓相當(dāng)?

為了探討這個問題,我們比較了稀疏網(wǎng)絡(luò)的特征與密集網(wǎng)絡(luò)的特征。其中,低級特征可能包括邊緣檢測器之類的東西,中級特征可能是輪子、鼻子、眼睛、爪子,而高級特征可能為汽車的“臉”、貓的臉、冰箱門等。

為了減少特征數(shù)量,我們研究卷積通道(相當(dāng)于卷積網(wǎng)絡(luò)中的“神經(jīng)元”)以及該通道對數(shù)據(jù)集中的類有多大作用。邊緣檢測器幾乎對數(shù)據(jù)集中所有類都有效——換句話說,它們對于低級別的特征具有特定對應(yīng)的類;對于中級特征,如眼睛,應(yīng)該是對于比如貓,狗,和人類有用的類;而高級特性應(yīng)該對一些選定的類有用,這些類都高度對應(yīng)高級特征。

性能可媲美密集網(wǎng)絡(luò),訓(xùn)練速度可提升數(shù)倍,如何用“稀疏學(xué)習(xí)”從頭開始訓(xùn)練稀疏網(wǎng)絡(luò)?

圖 6:  AlexNet、VGG16和WRN 28-2網(wǎng)絡(luò)對應(yīng)稀疏和密集網(wǎng)絡(luò)的特化類直方圖 

我們發(fā)現(xiàn),大體來說,稀疏網(wǎng)絡(luò)可以學(xué)習(xí)對于更廣泛的類有用的特征——不過更多情況下它們學(xué)習(xí)的是普遍的特征。這可能解釋了為什么稀疏網(wǎng)絡(luò)可以用 5%的權(quán)重來達到與密集網(wǎng)絡(luò)相一致的性能。

五、稀疏學(xué)習(xí)的未來展望

我相信稀疏學(xué)習(xí)有一個非常光明的未來,這是因為:(1)GPU 在未來幾年的性能將停滯不前;(2)用于稀疏工作負(fù)載的專用處理器 Graphcore 處理器即將問世。Graphcore 處理器將整個網(wǎng)絡(luò)存儲在它的300 MB緩存中,并將其加速大約 100 倍。

這意味著,如果我們可以在訓(xùn)練期間將網(wǎng)絡(luò)壓縮到 300 MB,那么我們的總體訓(xùn)練速度將提高100倍。使用一個 Graphcore 處理器在 ImageNet 上訓(xùn)練 ResNet-50 大約只需要15分鐘。通過稀疏學(xué)習(xí),網(wǎng)絡(luò)大小為 300 MB的限制將不成問題。 

我預(yù)測,第一個能夠在 Graphcore 處理器上成功訓(xùn)練稀疏神經(jīng)網(wǎng)絡(luò)的研究團隊,將開啟一個全新水平的人工智能時代。

除此之外,另一個挑戰(zhàn)是將稀疏學(xué)習(xí)算法應(yīng)用于自然語言處理(NLP)。不出所料,我在自然語言處理任務(wù)轉(zhuǎn)換器上的實驗表明,與計算機視覺相比,稀疏學(xué)習(xí)在自然語言處理中要困難得多——未來我們需要做的工作還有很多! 

六、嘗試使用 10 行代碼親自寫稀疏動量模型!

性能可媲美密集網(wǎng)絡(luò),訓(xùn)練速度可提升數(shù)倍,如何用“稀疏學(xué)習(xí)”從頭開始訓(xùn)練稀疏網(wǎng)絡(luò)?

圖7:一個通用的稀疏學(xué)習(xí)腳本示例,您可以將其用于自己的模型。使用sparselearning庫很容易使用稀疏動量:(1)導(dǎo)入庫,(2)添加解析器選項,(3)用Masking類包裝模型,(4)應(yīng)用mask而不是優(yōu)化器,(5)在迭代次數(shù)結(jié)束時應(yīng)用稀疏動量。該庫還可以通過自己的稀疏學(xué)習(xí)算法輕松地進行擴展,以實現(xiàn)增長、修剪或重分配——完成這一切只需僅僅幾行代碼! 

為了讓大家都能更深度地了解稀疏學(xué)習(xí),我開發(fā)了一個稀疏學(xué)習(xí)的庫,它能夠讓你將現(xiàn)有的算法如稀疏動量輕易得應(yīng)用到你自己的模型上,并且能夠用少于 10 行代碼完成。這個庫的設(shè)計還使得添加自己的稀疏學(xué)習(xí)方法變得非常容易。你可以通過以下地址前往GitHub查看這一開發(fā)庫:

參考文獻

Frankle, J. and Carbin, M. (2019). The lottery ticket hypothesis: Finding sparse, trainable neural networks. In ICLR 2019.

Han, S., Pool, J., Tran, J., and Dally, W. (2015). Learning both weights and connections for efficient neural network. In Advances in neural information processing systems, pages
1135—1143.

Herculano-Houzel, S., Mota, B., Wong, P., and Kaas, J.H. (2010). Connectivity-driven white matter scaling and folding in primate cerebral cortex. In Proceedings of the National Academy of Sciences of the United States of America, 107 44:19008—13.

via https://timdettmers.com/2019/07/11/sparse-networks-from-scratch/  雷鋒網(wǎng) AI 科技評論編譯

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

性能可媲美密集網(wǎng)絡(luò),訓(xùn)練速度可提升數(shù)倍,如何用“稀疏學(xué)習(xí)”從頭開始訓(xùn)練稀疏網(wǎng)絡(luò)?

分享:
相關(guān)文章
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說