谷歌AI出品的神經(jīng)網(wǎng)絡(luò)模型優(yōu)化技術(shù)MorphNet
本文經(jīng)AI新媒體量子位(公眾號(hào) ID: QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。
本文引用地址:http://2s4d.com/article/201907/403023.htm想要調(diào)整你的神經(jīng)網(wǎng)絡(luò)來(lái)完成特定任務(wù)?這件事并沒(méi)有想象中那么簡(jiǎn)單。
深度神經(jīng)網(wǎng)絡(luò)(DNN)是塊好磚,不過(guò)想要搬動(dòng)它,需要耗費(fèi)的計(jì)算資源和時(shí)間成本可能非常昂貴。
現(xiàn)在,Google AI放出了MorphNet。他們用流行的圖像分類神經(jīng)網(wǎng)絡(luò)Inception V2對(duì)其進(jìn)行測(cè)試之后發(fā)現(xiàn),在不犧牲精度的情況下,神經(jīng)網(wǎng)絡(luò)變得更快更小,算力消耗還減少了!
MorphNet是什么
MorphNet是一種神經(jīng)網(wǎng)絡(luò)模型優(yōu)化( refinement)技術(shù),走的是利用現(xiàn)有架構(gòu),針對(duì)特定任務(wù)優(yōu)化的路線。
也就是說(shuō)這是一個(gè)遷移學(xué)習(xí)問(wèn)題。遷移學(xué)習(xí)的難點(diǎn)在于找出不變量,模型需要處理許多與此前訓(xùn)練的任務(wù)目標(biāo)相近,但又不完全一樣的任務(wù),這會(huì)使模型性能大打折扣甚至崩潰。
而MorphNet的成功之處在于,只要將針對(duì)類似問(wèn)題構(gòu)建的神經(jīng)網(wǎng)絡(luò)作為輸入,就能為新任務(wù)創(chuàng)造更小、更快、更合身的新架構(gòu)。
Google AI出品:讓神經(jīng)網(wǎng)絡(luò)更快更小更高效的模型優(yōu)化技術(shù)MorphNet
MorphNet通過(guò)循環(huán)收縮和擴(kuò)展兩個(gè)階段來(lái)優(yōu)化神經(jīng)網(wǎng)絡(luò)。
收縮階段
在收縮階段,MorphNet會(huì)識(shí)別出低效神經(jīng)元,并運(yùn)用稀疏正則化器來(lái)修剪它們。
需要說(shuō)明的是MorphNet會(huì)在考慮目標(biāo)資源的情況下來(lái)計(jì)算一個(gè)神經(jīng)元的損失,因此在訓(xùn)練過(guò)程之中,優(yōu)化器能夠意識(shí)到資源損失,從而認(rèn)識(shí)到哪些神經(jīng)元是高效的,哪些又是可以被移除的。
有些不明白?那么來(lái)看看下面這個(gè)例子,看MorphNet是如何計(jì)算神經(jīng)網(wǎng)絡(luò)的計(jì)算成本(如FLOPs,即每秒浮點(diǎn)運(yùn)算次數(shù))的:
假設(shè)一個(gè)表示為矩陣乘法的神經(jīng)網(wǎng)絡(luò)層,該層具有 2 個(gè)輸入(Xn),6 個(gè)權(quán)重(a, b, …, f)以及 3 個(gè)輸出(Yn;神經(jīng)元)。也就是說(shuō)評(píng)估這一層需要 6 次乘法。
Google AI出品:讓神經(jīng)網(wǎng)絡(luò)更快更小更高效的模型優(yōu)化技術(shù)MorphNet
MorphNet將乘法數(shù)視作輸入數(shù)和輸出數(shù)的乘積。在左側(cè)的示例當(dāng)中,雖然有兩個(gè)權(quán)重為0,進(jìn)行評(píng)估時(shí)仍然需要執(zhí)行所有的乘法。但中間的示例顯示了結(jié)構(gòu)的稀疏性,MorphNet能夠識(shí)別它的輸出數(shù)為 2,并且該層的乘法數(shù)從 6 減少到了4。按照這個(gè)想法,MorphNet可以確定網(wǎng)絡(luò)中每一個(gè)神經(jīng)元的增量成本,以產(chǎn)生右側(cè)這樣更為有效的模型。
擴(kuò)展階段
在擴(kuò)展階段,MorphNet使用寬度乘數(shù)來(lái)均勻地?cái)U(kuò)展所有層的大小。
舉個(gè)例子,如果擴(kuò)展50%,那么對(duì)于低效層來(lái)說(shuō),神經(jīng)元從 100 個(gè)收縮到 10 個(gè)之后,只會(huì)重新擴(kuò)展到15個(gè);而對(duì)于重要層來(lái)說(shuō),神經(jīng)元只會(huì)從 100 個(gè)收縮到 80 個(gè),重新擴(kuò)展后則可能達(dá)到 120 個(gè),并且獲得更多可支配的資源。
也就是說(shuō),MorphNet的最終效果是將計(jì)算資源從網(wǎng)絡(luò)中效率低的部分重新分配到效率高的部分。
效果怎么樣
Google AI團(tuán)隊(duì)用MorphNet對(duì)Inception V2網(wǎng)絡(luò)模型進(jìn)行了訓(xùn)練。
基線方法是使用寬度乘數(shù),通過(guò)均勻縮小每個(gè)卷積的輸出數(shù)量來(lái)權(quán)衡精度和算力消耗(紅色)。
MorphNet方法則直接以算力消耗為目標(biāo),在收縮模型時(shí)生成更好的權(quán)衡曲線(藍(lán)色)。
在同等精度之下,MorphNet方法將算力消耗降低了11%到15%。
在對(duì)Inception V2的優(yōu)化上MorphNet表現(xiàn)出色,對(duì)于其他的網(wǎng)絡(luò)模型,MorphNet也同樣好用。
既成功壓縮了模型尺寸/ FLOPs,在質(zhì)量上又幾乎沒(méi)有損失,果然Google出品,必屬精品。
這么好用的東西,Google已經(jīng)自己用起來(lái)了。Google AI團(tuán)隊(duì)表示,MorphNet已應(yīng)用于Google多個(gè)生產(chǎn)規(guī)模的圖像處理模型。
評(píng)論