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