深度神經(jīng)網(wǎng)絡(luò)(DNN)在解決圖像分類、文本識別和語音轉(zhuǎn)換等實(shí)際難題方面具有顯著的效果。然而,為一個給定的問題設(shè)計(jì)一個合適的 DNN 體系結(jié)構(gòu)仍然是一個具有挑戰(zhàn)性的任務(wù)。考慮到架構(gòu)可能需要巨大的搜索空間,從頭開始為特定的應(yīng)用程序設(shè)計(jì)一個網(wǎng)絡(luò)在計(jì)算資源和時(shí)間方面花銷可能非常大。神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索和 AdaNet 等方法利用機(jī)器學(xué)習(xí)來搜索設(shè)計(jì)空間,以便找到改進(jìn)架構(gòu)的方法。另一種選擇是將現(xiàn)有的體系結(jié)構(gòu)用于類似的問題,并一次性為手頭的任務(wù)進(jìn)行優(yōu)化。
正對這個問題,谷歌 AI 發(fā)布了一篇博文討論了 MorphNet。MorphNet 是一種復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型細(xì)化技術(shù),它采用了上面說的第二種方法。本文對 MorphNet 的解釋是:「深度神經(jīng)網(wǎng)絡(luò)的快速、簡單的資源受限結(jié)構(gòu)學(xué)習(xí)」。MorphNet 以現(xiàn)有的神經(jīng)網(wǎng)絡(luò)為輸入,生成一個更小、更快、性能更好的新神經(jīng)網(wǎng)絡(luò),以適應(yīng)新的問題。我們已經(jīng)將這項(xiàng)技術(shù)應(yīng)用于「Google-scale」問題,以設(shè)計(jì)更小、更準(zhǔn)確的生產(chǎn)服務(wù)網(wǎng)絡(luò)。而且,現(xiàn)在我們已經(jīng)向社區(qū)開放了 MorphNet 的 TensorFlow 實(shí)現(xiàn),這樣你就可以使用它來提高你的模型的效率。
它是如何工作的
MorphNet 通過收縮和擴(kuò)展階段的循環(huán)優(yōu)化神經(jīng)網(wǎng)絡(luò)。在收縮階段,MorphNet 識別效率低下的神經(jīng)元,并利用稀疏正則化器將其從網(wǎng)絡(luò)中刪去,這樣網(wǎng)絡(luò)的總損失函數(shù)就包含每個神經(jīng)元的成本。然而,MorphNet 并沒有對每個神經(jīng)元使用一樣的成本,而是根據(jù)目標(biāo)資源計(jì)算神經(jīng)元成本。隨著訓(xùn)練的進(jìn)行,優(yōu)化器在計(jì)算梯度時(shí)會意識到資源成本,從而了解哪些神經(jīng)元是是節(jié)省資源的,哪些神經(jīng)元可以被移除。
例如,考慮 MorphNet 如何計(jì)算神經(jīng)網(wǎng)絡(luò)的計(jì)算成本,以觸發(fā)器為例。為了簡單起見,讓我們考慮一個用矩陣乘法表示的神經(jīng)網(wǎng)絡(luò)層。在這種情況下,層有 2 個輸入(xn),6 個權(quán)重(a,b,…,f)和 3 個輸出(yn;神經(jīng)元)。使用標(biāo)準(zhǔn)教科書中的行和列相乘的方法,可以計(jì)算出評估該層需要 6 次相乘。
神經(jīng)元的計(jì)算成本
MorphNet 將其計(jì)算為輸入計(jì)數(shù)和輸出計(jì)數(shù)的乘積。注意,盡管左邊的例子顯示了兩個為 0 的權(quán)重值,我們?nèi)匀恍枰獔?zhí)行所有的乘法來評估這個層。然而,中間的例子顯示了結(jié)構(gòu)化稀疏性,其中神經(jīng)元 yn 中的所有行權(quán)重都為 0。MorphNet 識別出這個層的乘法數(shù)從 6 減少到 4,于是這個層的新輸出計(jì)數(shù)是 2。利用這一思想,MorphNet 可以確定網(wǎng)絡(luò)中每個神經(jīng)元的增量成本,從而生成一個更有效的模型(右邊),其中神經(jīng)元 y3 已經(jīng)被移除。
在展開階段,我們使用寬度乘數(shù)來均勻地?cái)U(kuò)展所有的層大小。例如,如果我們擴(kuò)大 50%,那么一個以 100 個神經(jīng)元開始并縮小到 10 個的低效率層只會擴(kuò)大到 15 個,而一個只縮小到 80 個神經(jīng)元的重要層可能會擴(kuò)大到 120 個,并有更多的資源來工作。也就是將計(jì)算資源從網(wǎng)絡(luò)中效率較低的部分重新分配到可能更高效的部分。
在縮減階段之后,人們可以停止 MorphNet,只需縮減網(wǎng)絡(luò)以滿足更嚴(yán)格的資源預(yù)算。這會導(dǎo)致在給定目標(biāo)成本的時(shí)候網(wǎng)絡(luò)效率更高,但有時(shí)也會導(dǎo)致精度下降。另外,用戶還可以完成擴(kuò)展階段,該階段將與原始目標(biāo)資源成本相匹配,但提高了準(zhǔn)確性。稍后我們通過一個示例來介紹這個的完整實(shí)現(xiàn)過程。
為什么是 MorphNet?
MorphNet 提供了四個關(guān)鍵的有價(jià)值的主張:
有針對性的正則化:與其他稀疏的正則化方法相比,MorphNet 采取的正則化方法目的性更強(qiáng)。尤其是,MorphNet 方法進(jìn)行更好的稀疏化的目的是減少特定的資源。這可以更好地控制由 MorphNet 生成的網(wǎng)絡(luò)結(jié)構(gòu),根據(jù)應(yīng)用領(lǐng)域和相關(guān)約束,MorphNet 可以有明顯的不同。例如,下圖的左側(cè)面板顯示了一個基線網(wǎng)絡(luò),該網(wǎng)絡(luò)具有在 JFT 上訓(xùn)練的常用 ResNet-101 體系結(jié)構(gòu)。當(dāng)以觸發(fā)器(中間圖,觸發(fā)器減少 40%)或模型大小(右圖,權(quán)重減少 43%)為目標(biāo)時(shí),MorphNet 生成的結(jié)構(gòu)有很大不同。在優(yōu)化計(jì)算成本時(shí),較低層網(wǎng)絡(luò)中的高分辨率神經(jīng)元比低分辨率神經(jīng)元更容易受到修剪。當(dāng)模型尺寸較小時(shí),在修剪權(quán)衡上正好相反。
MorphNet 有針對性的正則化。矩形寬度與層中的通道數(shù)成正比。底部的紫色條是輸入層。左圖:基線網(wǎng)絡(luò)用作 MorphNet 的輸入。中圖:輸出應(yīng)用觸發(fā)器調(diào)節(jié)器。右圖:輸出應(yīng)用大小調(diào)整器。
MorphNet 是為數(shù)不多的能夠針對特定參數(shù)進(jìn)行優(yōu)化的解決方案之一。這使它能夠針對特定實(shí)現(xiàn)的參數(shù)。例如,可以通過結(jié)合特定于設(shè)備的計(jì)算時(shí)間和內(nèi)存時(shí)間,將延遲作為一階優(yōu)化參數(shù)。
拓?fù)渥冃危寒?dāng) MorphNet 學(xué)習(xí)每層神經(jīng)元的數(shù)量時(shí),算法在一個層中稀疏所有神經(jīng)元的過程中可能會遇到一種特殊的情況。當(dāng)一個層有 0 個神經(jīng)元時(shí),通過切斷網(wǎng)絡(luò)中受影響的分支,可以有效地改變網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。例如,當(dāng)遇到 ResNet 體系結(jié)構(gòu)時(shí),MorphNet 可能保留 skip-connection,但刪除殘差塊,如下左圖所示。對于 Inception 樣式的架構(gòu),MorphNet 可能會刪除整個平行的塔,如右圖所示。
左圖:MorphNet 可以刪除 ResNet 樣式網(wǎng)絡(luò)中的殘差連接。右圖:它還可以刪除 Inception 樣式的網(wǎng)絡(luò)中的平行塔。
可擴(kuò)展性:MorphNet 在一次訓(xùn)練中學(xué)習(xí)新的結(jié)構(gòu),在培訓(xùn)預(yù)算有限時(shí),它是一個很好的方法。MorphNet 也可以直接應(yīng)用于昂貴的網(wǎng)絡(luò)和數(shù)據(jù)集。例如,在上面的比較中,MorphNet 直接應(yīng)用于 ResNet-101,而它最初是在 JFT 上花費(fèi)了 100 個 GPU 月訓(xùn)練的。
可移植性:MorphNet 產(chǎn)生的網(wǎng)絡(luò)是「可移植的」,從這個意義上說,它們是打算從頭開始重新訓(xùn)練的,并且權(quán)重與體系結(jié)構(gòu)學(xué)習(xí)過程無關(guān)。你不必?fù)?dān)心復(fù)制檢查點(diǎn)或遵循特殊的訓(xùn)練規(guī)則,而只需像平時(shí)一樣訓(xùn)練你的新網(wǎng)絡(luò)!
變形網(wǎng)絡(luò)
作為一個演示,我們將 MorphNet 應(yīng)用于在 ImageNet 上通過目標(biāo)定位 FLOPs 訓(xùn)練的 Inception V2(見下文)。基線方法是使用一個寬度倍增器,通過均勻地縮小每個卷積(紅色)的輸出數(shù)量來權(quán)衡精度和觸發(fā)器。MorphNet 方法的目標(biāo)是直接 FLOPs,并在縮小模型時(shí)產(chǎn)生更好的權(quán)衡曲線(藍(lán)色)。在這種情況下,與基線相比,觸發(fā)器成本降低了 11% 到 15%,而精確度相同。
MorphNet 應(yīng)用于 ImageNet 上的 Inception V2。單獨(dú)使用 FLOP 正則化器(藍(lán)色)可將性能相對于基線(紅色)提高 11-15%。在一個完整的周期中,正則化器和寬度乘法器在相同的成本(「x1」;紫色)下提高了精度,并在第二個周期(「x2」;青色)持續(xù)改進(jìn)。
此時(shí),您可以選擇一個 MorphNet 網(wǎng)絡(luò)來滿足較小的 FLOP 預(yù)算。或者,您可以通過將網(wǎng)絡(luò)擴(kuò)展回原始的 FLOP 成本來完成這個周期,從而在相同的成本(紫色)下獲得更好的準(zhǔn)確性。再次重復(fù)變形網(wǎng)縮小擴(kuò)展循環(huán)會導(dǎo)致另一個精度增加(青色),使總精度增加 1.1%。
結(jié)論
我們已經(jīng)將 MorphNet 應(yīng)用到了谷歌的幾個量產(chǎn)級圖像處理模型中。使用 MorphNet 可以在質(zhì)量幾乎沒有損失的情況下顯著減少模型大小。
-
谷歌
+關(guān)注
關(guān)注
27文章
6176瀏覽量
105677 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4776瀏覽量
100948 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8428瀏覽量
132835
原文標(biāo)題:谷歌 MorphNet:讓你的神經(jīng)網(wǎng)絡(luò)更小但更快
文章出處:【微信號:worldofai,微信公眾號:worldofai】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論