一直以來,深度神經(jīng)網(wǎng)絡(luò)在圖像分類、文本識(shí)別等實(shí)際問題中發(fā)揮重要的作用。但是,考慮到計(jì)算資源和時(shí)間,深度神經(jīng)網(wǎng)絡(luò)架構(gòu)往往成本很高。此次,谷歌研究人員提出一種自動(dòng)化神經(jīng)網(wǎng)絡(luò)架構(gòu)的新方法 MorphNet,通過迭代縮放神經(jīng)網(wǎng)絡(luò),節(jié)省了資源,提升了性能。
深度神經(jīng)網(wǎng)絡(luò)(DNN)在解決圖像分類、文本識(shí)別和語音轉(zhuǎn)錄等實(shí)際難題方面顯示出卓越的效能。但是,為給定問題設(shè)計(jì)合適的 DNN 架構(gòu)依然是一項(xiàng)具有挑戰(zhàn)性的任務(wù)。考慮到巨大的架構(gòu)搜索空間,就計(jì)算資源和時(shí)間而言,為具體應(yīng)用從零開始設(shè)計(jì)一個(gè)網(wǎng)絡(luò)是極其昂貴的。神經(jīng)架構(gòu)搜索(NAS)和 AdaNet 等方法使用機(jī)器學(xué)習(xí)來搜索架構(gòu)設(shè)計(jì)空間,從而找出適合的改進(jìn)版架構(gòu)。另一種方法是利用現(xiàn)有架構(gòu)來解決類似問題,即針對(duì)手頭任務(wù)一次性對(duì)架構(gòu)進(jìn)行優(yōu)化。
谷歌研究人員提出一種神經(jīng)網(wǎng)絡(luò)模型改進(jìn)的復(fù)雜方法 MorphNet。研究人員發(fā)表了論文《MorphNet: Fast & Simple Resource-Constrained Structure Learning of Deep Networks》,MorphNet 將現(xiàn)有神經(jīng)網(wǎng)絡(luò)作為輸入,為新問題生成規(guī)模更小、速度更快、性能更好的新神經(jīng)網(wǎng)絡(luò)。研究人員已經(jīng)運(yùn)用該方法解決大規(guī)模問題,設(shè)計(jì)出規(guī)模更小、準(zhǔn)確率更高的產(chǎn)品服務(wù)網(wǎng)絡(luò)。目前,MorphNet 的 TensoreFlow 實(shí)現(xiàn)已開源,大家可以利用該方法更高效地創(chuàng)建自己的模型。
MorphNet 開源項(xiàng)目地址:https://github.com/google-research/morph-net
MorphNet 的工作原理
MorphNet 通過收縮和擴(kuò)展階段的循環(huán)來優(yōu)化神經(jīng)網(wǎng)絡(luò)。在收縮階段,MorphNet 通過稀疏性正則化項(xiàng)(sparsifying regularizer)識(shí)別出效率低的神經(jīng)元,并將它們從網(wǎng)絡(luò)中去除,因而該網(wǎng)絡(luò)的總損失函數(shù)包含每一神經(jīng)元的成本。但是對(duì)于所有神經(jīng)元,MorphNet 沒有采用統(tǒng)一的成本度量,而是計(jì)算神經(jīng)元相對(duì)于目標(biāo)資源的成本。隨著訓(xùn)練的繼續(xù)進(jìn)行,優(yōu)化器在計(jì)算梯度時(shí)是了解資源成本信息的,從而得知哪些神經(jīng)元的資源效率高,哪些神經(jīng)元可以去除。
MorphNet 的算法。
例如,考慮一下 MorphNet 如何計(jì)算神經(jīng)網(wǎng)絡(luò)的計(jì)算成本(如 FLOPs)。為簡(jiǎn)單起見,我們來思考一下被表示為矩陣乘法的神經(jīng)網(wǎng)絡(luò)層。在這種情況下,神經(jīng)網(wǎng)絡(luò)層擁有 2 個(gè)輸入(x_n)、6 個(gè)權(quán)重 (a,b,...,f) 和 3 個(gè)輸出(y_n)。使用標(biāo)準(zhǔn)教科書中行和列相乘的方法,你會(huì)發(fā)現(xiàn)評(píng)估該神經(jīng)網(wǎng)絡(luò)層需要 6 次乘法。
神經(jīng)元的計(jì)算成本。
MorphNet 將其計(jì)算成本表示為輸入數(shù)和輸出數(shù)的乘積。請(qǐng)注意,盡管左邊示例顯示出了權(quán)重稀疏性,其中兩個(gè)權(quán)重值為 0,但我們依然需要執(zhí)行所有的乘法,以評(píng)估該神經(jīng)網(wǎng)絡(luò)層。但是,中間示例顯示出了結(jié)構(gòu)性的稀疏,其中神經(jīng)元 y_n 最后一行上的所有權(quán)重值均為 0。MorphNet 意識(shí)到該層的新輸出數(shù)為 2,并且該層的乘次數(shù)量由 6 降至 4。基于此,MorphNet 可以確定該神經(jīng)網(wǎng)絡(luò)中每一神經(jīng)元的增量成本,從而生成更高效的模型(右邊示例),其中神經(jīng)元 y_3 被移除。
在擴(kuò)展階段,研究人員使用寬度乘數(shù)(width multiplier)來統(tǒng)一擴(kuò)展所有層的大小。例如,如果層大小擴(kuò)大 50%,則一個(gè)效率低的層(開始有 100 個(gè)神經(jīng)元,之后縮小至 10 個(gè)神經(jīng)元)將能夠擴(kuò)展回 15,而只縮小至 80 個(gè)神經(jīng)元的重要層可能擴(kuò)展至 120,并且擁有更多資源。凈效應(yīng)則是將計(jì)算資源從該網(wǎng)絡(luò)效率低的部分重新分配給更有用的部分。
用戶可以在收縮階段之后停止 MorphNet,從而削減該網(wǎng)絡(luò)規(guī)模,使之符合更緊湊的資源預(yù)算。這可以在目標(biāo)成本方面獲得更高效的網(wǎng)絡(luò),但有時(shí)可能導(dǎo)致準(zhǔn)確率下降。或者,用戶也可以完成擴(kuò)展階段,這將與最初目標(biāo)資源相匹配,但準(zhǔn)確率會(huì)更高。
MorphNet 可提供以下四個(gè)關(guān)鍵價(jià)值
有針對(duì)性的正則化:MorphNet 采用的正則化方法比其他稀疏性正則化方法更有目的性。具體來說,MorphNet 方法用于更好的稀疏化,但它的目標(biāo)是減少資源(如每次推斷的 FLOPs 或模型大小)。這可以更好地控制由 MorphNet 推導(dǎo)出的網(wǎng)絡(luò)結(jié)構(gòu),這些網(wǎng)絡(luò)結(jié)構(gòu)根據(jù)應(yīng)用領(lǐng)域和約束而出現(xiàn)顯著差異。
例如,下圖左展示了在 JFT 數(shù)據(jù)集上訓(xùn)練的 ResNet-101 基線網(wǎng)絡(luò)。在指定目標(biāo) FLOPs(FLOPs 降低 40%,中間圖)或模型大小(權(quán)重減少 43%,右圖)的情況下,MorphNet 輸出的結(jié)構(gòu)具有很大差異。在優(yōu)化計(jì)算成本時(shí),相比于網(wǎng)絡(luò)較高層中的低分辨率神經(jīng)元,較低層中的高分辨率神經(jīng)元會(huì)被更多地修剪掉。當(dāng)目標(biāo)是較小的模型大小時(shí),剪枝策略相反。
MorphNet 有目標(biāo)性的正則化(Targeted Regularization)。矩形的寬度與層級(jí)中通道數(shù)成正比,底部的紫色條表示輸入層。左:輸入到 MorphNet 的基線網(wǎng)絡(luò);中:應(yīng)用 FLOP regularizer 后的輸出結(jié)果;右:應(yīng)用 size regularizer 后的輸出結(jié)果。
MorphNet 能夠把特定的優(yōu)化參數(shù)作為目標(biāo),這使得它可針對(duì)特定實(shí)現(xiàn)設(shè)立具體參數(shù)目標(biāo)。例如,你可以把「延遲」作為整合設(shè)備特定計(jì)算時(shí)間和記憶時(shí)間的首要優(yōu)化參數(shù)。
拓?fù)渥儞Q(Topology Morphing):MorphNet 學(xué)習(xí)每一層的神經(jīng)元,因此該算法可能會(huì)遇到將一層中所有神經(jīng)元全都稀疏化的特殊情況。當(dāng)一層中的神經(jīng)元數(shù)量為 0 時(shí),它切斷了受影響的網(wǎng)絡(luò)分支,從而有效地改變了網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。例如,在 ResNet 架構(gòu)中,MorphNet 可能保留殘差連接,但移除殘差模塊(如下圖左所示)。對(duì)于 Inception 結(jié)構(gòu),MorphNet 可能移除整個(gè)并行分支(如下圖右所示)。
左:MorphNet 移除 ResNet 網(wǎng)絡(luò)中的殘差模塊。右:MorphNet 移除 Inception 網(wǎng)絡(luò)中的并行分支。
可擴(kuò)展性:MorphNet 在單次訓(xùn)練運(yùn)行中學(xué)習(xí)新的網(wǎng)絡(luò)結(jié)構(gòu),當(dāng)你的訓(xùn)練預(yù)算有限時(shí),這是一種很棒的方法。MorphNet 還可直接用于昂貴的網(wǎng)絡(luò)和數(shù)據(jù)集。例如,在上述對(duì)比中,MorphNet 直接用于 ResNet-101,后者是在 JFT 數(shù)據(jù)集上以極高計(jì)算成本訓(xùn)練出的。
可移植性:MorphNet 輸出的網(wǎng)絡(luò)具備可移植性,因?yàn)樗鼈兛梢詮念^開始訓(xùn)練,且模型權(quán)重并未與架構(gòu)學(xué)習(xí)過程綁定。你不必復(fù)制檢查點(diǎn)或按照特定的訓(xùn)練腳本執(zhí)行訓(xùn)練,只需正常訓(xùn)練新網(wǎng)絡(luò)即可。
Morphing Network
谷歌通過固定 FLOPs 將 MorphNet 應(yīng)用到在 ImageNet 數(shù)據(jù)集上訓(xùn)練的 Inception V2 模型上(詳見下圖)。基線方法統(tǒng)一縮小每個(gè)卷積的輸出,使用 width multiplier 權(quán)衡準(zhǔn)確率和 FLOPs(紅色)。而 MorphNet 方法在縮小模型時(shí)直接固定 FLOPs,生成更好的權(quán)衡曲線。在相同準(zhǔn)確率的情況下,新方法的 FLOP 成本比基線低 11%-15%。
將 MorphNet 應(yīng)用于在 ImageNet 數(shù)據(jù)集上訓(xùn)練的 Inception V2 模型后的表現(xiàn)。僅使用 flop regularizer(藍(lán)色)的性能比基線(紅色)性能高出 11-15%。一個(gè)完整循環(huán)之后(包括 flop regularizer 和 width multiplier),在相同成本的情況下模型的準(zhǔn)確率有所提升(「x1」,紫色),第二個(gè)循環(huán)之后,模型性能得到繼續(xù)提升(「x2」,青色)。
這時(shí),你可以選擇一個(gè) MorphNet 網(wǎng)絡(luò)來滿足更小的 FLOP 預(yù)算。或者,你可以將網(wǎng)絡(luò)擴(kuò)展回原始 FLOP 成本來完成縮放周期,從而以相同的成本得到更好的準(zhǔn)確率(紫色)。再次重復(fù) MorphNet 縮小/放大將再次提升準(zhǔn)確率(青色),使整體準(zhǔn)確率提升 1.1%。
結(jié)論:谷歌已經(jīng)將 MorphNet 應(yīng)用到其多個(gè)生產(chǎn)級(jí)圖像處理模型中。MorphNet 可帶來模型大小/FLOPs 的顯著降低,且?guī)缀醪粫?huì)造成質(zhì)量損失。
-
谷歌
+關(guān)注
關(guān)注
27文章
6164瀏覽量
105309 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4771瀏覽量
100719
原文標(biāo)題:谷歌提出MorphNet:網(wǎng)絡(luò)規(guī)模更小、速度更快!
文章出處:【微信號(hào):aicapital,微信公眾號(hào):全球人工智能】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論