谷歌 MorphNet:讓你的神經網路更小但更快
雷鋒網 AI 科技評論按,深度神經網路(DNN)在解決圖像分類、文本識別和語音轉換等實際難題方面具有顯著的效果。然而,為一個給定的問題設計一個合適的 DNN 體系結構仍然是一個具有挑戰性的任務。考慮到架構可能需要巨大的搜索空間,從頭開始為特定的應用程序設計一個網路在計算資源和時間方面花銷可能非常大。神經網路架構搜索和 AdaNet 等方法利用機器學習來搜索設計空間,以便找到改進架構的方法。另一種選擇是將現有的體系結構用於類似的問題,並一次性為手頭的任務進行優化。
正對這個問題,谷歌 AI 發布了一篇博文討論了 MorphNet。MorphNet 是一種複雜的神經網路模型細化技術,它採用了上面說的第二種方法。本文對 MorphNet 的解釋是:「深度神經網路的快速、簡單的資源受限結構學習」。MorphNet 以現有的神經網路為輸入,生成一個更小、更快、性能更好的新神經網路,以適應新的問題。我們已經將這項技術應用於「Google-scale」問題,以設計更小、更準確的生產服務網路。而且,現在我們已經向社區開放了 MorphNet 的 TensorFlow 實現,這樣你就可以使用它來提高你的模型的效率。
它是如何工作的
MorphNet 通過收縮和擴展階段的循環優化神經網路。在收縮階段,MorphNet 識別效率低下的神經元,並利用稀疏正則化器將其從網路中刪去,這樣網路的總損失函數就包含每個神經元的成本。然而,MorphNet 並沒有對每個神經元使用一樣的成本,而是根據目標資源計算神經元成本。隨著訓練的進行,優化器在計算梯度時會意識到資源成本,從而了解哪些神經元是是節省資源的,哪些神經元可以被移除。
例如,考慮 MorphNet 如何計算神經網路的計算成本,以觸發器為例。為了簡單起見,讓我們考慮一個用矩陣乘法表示的神經網路層。在這種情況下,層有 2 個輸入(xn),6 個權重(a,b,…,f)和 3 個輸出(yn;神經元)。使用標準教科書中的行和列相乘的方法,可以計算出評估該層需要 6 次相乘。
神經元的計算成本
MorphNet 將其計算為輸入計數和輸出計數的乘積。注意,儘管左邊的例子顯示了兩個為 0 的權重值,我們仍然需要執行所有的乘法來評估這個層。然而,中間的例子顯示了結構化稀疏性,其中神經元 yn 中的所有行權重都為 0。MorphNet 識別出這個層的乘法數從 6 減少到 4,於是這個層的新輸出計數是 2。利用這一思想,MorphNet 可以確定網路中每個神經元的增量成本,從而生成一個更有效的模型(右邊),其中神經元 y3 已經被移除。
在展開階段,我們使用寬度乘數來均勻地擴展所有的層大小。例如,如果我們擴大 50%,那麼一個以 100 個神經元開始並縮小到 10 個的低效率層只會擴大到 15 個,而一個只縮小到 80 個神經元的重要層可能會擴大到 120 個,並有更多的資源來工作。也就是將計算資源從網路中效率較低的部分重新分配到可能更高效的部分。
在縮減階段之後,人們可以停止 MorphNet,只需縮減網路以滿足更嚴格的資源預算。這會導致在給定目標成本的時候網路效率更高,但有時也會導致精度下降。另外,用戶還可以完成擴展階段,該階段將與原始目標資源成本相匹配,但提高了準確性。稍後我們通過一個示例來介紹這個的完整實現過程。
為什麼是 MorphNet?
MorphNet 提供了四個關鍵的有價值的主張:
有針對性的正則化:與其他稀疏的正則化方法相比,MorphNet 採取的正則化方法目的性更強。尤其是,MorphNet 方法進行更好的稀疏化的目的是減少特定的資源。這可以更好地控制由 MorphNet 生成的網路結構,根據應用領域和相關約束,MorphNet 可以有明顯的不同。例如,下圖的左側面板顯示了一個基線網路,該網路具有在 JFT 上訓練的常用 ResNet-101 體系結構。當以觸發器(中間圖,觸發器減少 40%)或模型大小(右圖,權重減少 43%)為目標時,MorphNet 生成的結構有很大不同。在優化計算成本時,較低層網路中的高解析度神經元比低解析度神經元更容易受到修剪。當模型尺寸較小時,在修剪權衡上正好相反。
MorphNet 有針對性的正則化。矩形寬度與層中的通道數成正比。底部的紫色條是輸入層。左圖:基線網路用作 MorphNet 的輸入。中圖:輸出應用觸發器調節器。右圖:輸出應用大小調整器。
MorphNet 是為數不多的能夠針對特定參數進行優化的解決方案之一。這使它能夠針對特定實現的參數。例如,可以通過結合特定於設備的計算時間和內存時間,將延遲作為一階優化參數。
拓撲變形:當 MorphNet 學習每層神經元的數量時,演算法在一個層中稀疏所有神經元的過程中可能會遇到一種特殊的情況。當一個層有 0 個神經元時,通過切斷網路中受影響的分支,可以有效地改變網路的拓撲結構。例如,當遇到 ResNet 體系結構時,MorphNet 可能保留 skip-connection,但刪除殘差塊,如下左圖所示。對於 Inception 樣式的架構,MorphNet 可能會刪除整個平行的塔,如右圖所示。
左圖:MorphNet 可以刪除 ResNet 樣式網路中的殘差連接。右圖:它還可以刪除 Inception 樣式的網路中的平行塔。
可擴展性:MorphNet 在一次訓練中學習新的結構,在培訓預算有限時,它是一個很好的方法。MorphNet 也可以直接應用於昂貴的網路和數據集。例如,在上面的比較中,MorphNet 直接應用於 ResNet-101,而它最初是在 JFT 上花費了 100 個 GPU 月訓練的。
可移植性:MorphNet 產生的網路是「可移植的」,從這個意義上說,它們是打算從頭開始重新訓練的,並且權重與體系結構學習過程無關。你不必擔心複製檢查點或遵循特殊的訓練規則,而只需像平時一樣訓練你的新網路!
變形網路
作為一個演示,我們將 MorphNet 應用於在 ImageNet 上通過目標定位 FLOPs 訓練的 Inception V2(見下文)。基線方法是使用一個寬度倍增器,通過均勻地縮小每個卷積(紅色)的輸出數量來權衡精度和觸發器。MorphNet 方法的目標是直接 FLOPs,並在縮小模型時產生更好的權衡曲線(藍色)。在這種情況下,與基線相比,觸發器成本降低了 11% 到 15%,而精確度相同。
MorphNet 應用於 ImageNet 上的 Inception V2。單獨使用 FLOP 正則化器(藍色)可將性能相對於基線(紅色)提高 11-15%。在一個完整的周期中,正則化器和寬度乘法器在相同的成本(「x1」;紫色)下提高了精度,並在第二個周期(「x2」;青色)持續改進。
此時,您可以選擇一個 MorphNet 網路來滿足較小的 FLOP 預算。或者,您可以通過將網路擴展回原始的 FLOP 成本來完成這個周期,從而在相同的成本(紫色)下獲得更好的準確性。再次重複變形網縮小擴展循環會導致另一個精度增加(青色),使總精度增加 1.1%。
結論
我們已經將 MorphNet 應用到了谷歌的幾個量產級圖像處理模型中。使用 MorphNet 可以在質量幾乎沒有損失的情況下顯著減少模型大小。我們邀請您嘗試 MorphNet。可以在這裡找到開源 TensorFlow 實現方法,還可以閱讀 MorphNet 論文了解更多詳細信息。
via:https://ai.googleblog.com/
雷鋒網雷鋒網
TAG:雷鋒網 |