一直以來,,深度神經(jīng)網(wǎng)絡(luò)在圖像分類、文本識別等實(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)在解決圖像分類,、文本識別和語音轉(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)來解決類似問題,即針對手頭任務(wù)一次性對架構(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)識別出效率低的神經(jīng)元,并將它們從網(wǎng)絡(luò)中去除,,因而該網(wǎng)絡(luò)的總損失函數(shù)包含每一神經(jīng)元的成本,。但是對于所有神經(jīng)元,MorphNet 沒有采用統(tǒng)一的成本度量,,而是計(jì)算神經(jīng)元相對于目標(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)。為簡單起見,,我們來思考一下被表示為矩陣乘法的神經(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)教科書中行和列相乘的方法,你會發(fā)現(xiàn)評估該神經(jīng)網(wǎng)絡(luò)層需要 6 次乘法,。
神經(jīng)元的計(jì)算成本,。
MorphNet 將其計(jì)算成本表示為輸入數(shù)和輸出數(shù)的乘積。請注意,,盡管左邊示例顯示出了權(quán)重稀疏性,,其中兩個(gè)權(quán)重值為 0,但我們依然需要執(zhí)行所有的乘法,,以評估該神經(jīng)網(wǎng)絡(luò)層,。但是,中間示例顯示出了結(jié)構(gòu)性的稀疏,,其中神經(jīng)元 y_n 最后一行上的所有權(quán)重值均為 0,。MorphNet 意識到該層的新輸出數(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)確率下降,?;蛘撸脩粢部梢酝瓿蓴U(kuò)展階段,,這將與最初目標(biāo)資源相匹配,,但準(zhǔn)確率會更高。
為什么使用 MorphNet,?
MorphNet 可提供以下四個(gè)關(guān)鍵價(jià)值:
有針對性的正則化: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)元會被更多地修剪掉。當(dāng)目標(biāo)是較小的模型大小時(shí),,剪枝策略相反,。
MorphNet 有目標(biāo)性的正則化(Targeted Regularization)。矩形的寬度與層級中通道數(shù)成正比,,底部的紫色條表示輸入層,。左:輸入到 MorphNet 的基線網(wǎng)絡(luò);中:應(yīng)用 FLOP regularizer 后的輸出結(jié)果,;右:應(yīng)用 size regularizer 后的輸出結(jié)果,。
MorphNet 能夠把特定的優(yōu)化參數(shù)作為目標(biāo),這使得它可針對特定實(shí)現(xiàn)設(shè)立具體參數(shù)目標(biāo),。例如,,你可以把「延遲」作為整合設(shè)備特定計(jì)算時(shí)間和記憶時(shí)間的首要優(yōu)化參數(shù)。
拓?fù)渥儞Q(Topology Morphing):MorphNet 學(xué)習(xí)每一層的神經(jīng)元,,因此該算法可能會遇到將一層中所有神經(jīng)元全都稀疏化的特殊情況,。當(dāng)一層中的神經(jīng)元數(shù)量為 0 時(shí),它切斷了受影響的網(wǎng)絡(luò)分支,,從而有效地改變了網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),。例如,在 ResNet 架構(gòu)中,,MorphNet 可能保留殘差連接,,但移除殘差模塊(如下圖左所示)。對于 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ù)集,。例如,在上述對比中,,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(wǎng)絡(luò)擴(kuò)展回原始 FLOP 成本來完成縮放周期,,從而以相同的成本得到更好的準(zhǔn)確率(紫色),。再次重復(fù) MorphNet 縮小/放大將再次提升準(zhǔn)確率(青色),,使整體準(zhǔn)確率提升 1.1%,。
結(jié)論
谷歌已經(jīng)將 MorphNet 應(yīng)用到其多個(gè)生產(chǎn)級圖像處理模型中。MorphNet 可帶來模型大小/FLOPs 的顯著降低,,且?guī)缀醪粫斐少|(zhì)量損失,。
論文:MorphNet: Fast & Simple Resource-Constrained Structure Learning of Deep
論文鏈接:https://arxiv.org/pdf/1711.06798.pdf
摘要:本研究介紹了一種自動(dòng)化神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)的新方法 MorphNet。MorphNet 迭代地放縮網(wǎng)絡(luò),,具體來說,它通過激活函數(shù)上的資源權(quán)重(resource-weighted)稀疏性正則化項(xiàng)來縮小網(wǎng)絡(luò),,通過在所有層上執(zhí)行統(tǒng)一的乘積因子(multiplicative factor)來放大網(wǎng)絡(luò),。MorphNet 可擴(kuò)展至大型網(wǎng)絡(luò),對特定的資源約束具備適應(yīng)性(如 FLOPs per inference),,且能夠提升網(wǎng)絡(luò)性能,。把 MorphNet 應(yīng)用到大量數(shù)據(jù)集上訓(xùn)練的標(biāo)準(zhǔn)網(wǎng)絡(luò)架構(gòu)時(shí),,該方法可以在每個(gè)領(lǐng)域中發(fā)現(xiàn)新的結(jié)構(gòu),且在有限資源條件下提升網(wǎng)絡(luò)的性能,。