5MB的神經網絡也高效,Facebook新壓縮算法造福嵌入式設備_風聞
量子位-量子位官方账号-2019-07-28 13:17
魚羊 發自 凹非寺
量子位 報道 | 公眾號 QbitAI
人工智能風暴襲來,機器人、自動駕駛汽車這樣的嵌入式設備也熱度漸長。毫無疑問,現在,嵌入式設備也需要高效的神經網絡加持。
但是,如何在嵌入式設備上實現高效的神經網絡,可不是一件簡單的事情。
性能,功耗,成本,都是不得不考慮的問題。每一種不同的應用場景,都需要在神經網絡的大小和精確度之間進行特定的權衡(trade-off)。
像自動駕駛汽車,就需要實現對實時視頻的精確識別,這意味着嵌入其中的神經網絡模型一定是個體積龐大的傢伙。
受限於硬件,神經網絡必須進行壓縮。
在卷積神經網絡壓縮這個課題上,移動高效架構是主流(MobileNets或ShuffleNets)。
然而,基於移動高效架構的MobileNet-v2在ImageNet對象分類中雖然已經達到了71%的 top-1準確率,但這仍遠落後於卷積神經網絡的最佳表現83.1%。
Facebook的研究人員們決定轉換思路,既然如此,何不更專注於傳統的卷積網絡本身呢?
重新審視神經網絡的量化
Facebook提出了一種適用於ResNet類架構的壓縮方法,名叫Bit Goes Down。
這種方法利用了**結構化量化算法PQ(Product Quantization)**中卷積的高相關性,重點關注activations的重建,而不是權重本身。
也就是説,這種方法只關注域內輸入的重建質量。
研究人員讓未經壓縮的神經網絡充當“老師”,利用圖靈獎得主Hinton等人提出的提煉(distillation)技術來指導“學生”網絡的壓縮。
這一過程無需任何標記數據,是一種無監督學習方法。
具體的實現方法是這樣的:
一、層量化
先以全連接層為例。
PQ算法的任務是量化全連接層的權重矩陣。但從實際需求來看,權重不重要,保留層的輸出才是研究人員的關注重點。
在上圖這種非線性分類器中,不能保證層權重的Frobenius近似是某個任意域輸出的最佳近似(特別是對於域內輸入)。
因此,研究人員提出了一個替代方案,通過將層應用於域內輸入獲得輸出激活(activations)的重建誤差,直接最小化該誤差。用編碼簿(codebook)最大限度地減少輸出激活及其重建之間的差異。
接着要對EM算法(最大期望化算法)進行調整。
E-step是集羣分配,這一步通過詳盡的探索來執行。
M-step是碼字(codeword)更新,這一步通過顯式計算最小二乘問題的解來完成,實際上就是在E-step和M-step交替之前,計算x tilde的偽逆。
需要注意的是在E-step之後某些集羣可能為空。
對於卷積層情況又是如何呢?
在完全連接層,這一方法適用於任何矢量集,所以如果將相關的4D權重矩陣分割成一組向量,該方法就可以應用於卷積層。
分割4D矩陣的方法有很多,標準就是要最大化矢量之間的相關性,因為當矢量高度相關時,基於矢量量化的方法效果最好。
就像這樣,在空間上量化卷積濾波器以利用網絡中的信息冗餘,不同顏色代表擁有不同碼字的子向量。
二、網絡量化
接下來,就涉及到對整個神經網絡的量化。
首先,這是自下而上的量化,從最低層開始,到最高層結束。
這也就是所謂的用非壓縮的教師網絡引導學生網絡的壓縮。主要包括以下兩個步驟:
學習碼字
恢復該層的**當前(current)**輸入激活,即通過量化後的低層轉發一批圖像而獲得的輸入激活。使用這些激活量化當前層。
微調碼字
採用Hinton的distillation方法微調碼字,以非壓縮網絡作為教師網絡,當前層之前的壓縮網絡作為學生網絡。
在這一步驟中,通過對分配給指定碼字的每個子矢量的梯度求平均,來完成碼字的精細化。更確切地説,是在量化步驟之後,一次性修復分配。
接下來,就剩下最後一步,全局微調所有層的碼字,以減少殘餘漂移。同時更新BatchNorm層的統計數據。
全局微調使用的是標準的ImageNet訓練集。
小體積,高精度
研究人員用Bit Goes Down量化了在ImageNet數據集上預先訓練好的vanila ResNet-18和ResNet-50。
在16GB的 Volta V100 GPU上跑了一天之後,終於到了展示成果的時候。
首先,是跟標準ResNet-18和ResNet-50的比較。
對於ResNet-18,在29倍壓縮的情況下,模型大小縮小到了1.54MB,而top-1準確率僅比標準模型降低了不到4%。
ResNet-50上模型大小略大一些,但也達到了5MB左右,準確率同樣保持在一個可以接受的水平。
跟模型壓縮界的前輩相比,Bit Goes Down表現出了它的優勢,雖然在1MB的指定大小中敗下陣來,但在5MB的比拼中,新方法優勢明顯,準確率提升了將近5個百分點。
這意味着壓縮後的模型獲得了非壓縮ResNet-50的性能,同時還只有5MB大小。
Bit Goes Down在圖像分類上表現不俗,在圖像檢測方面又如何呢?
研究團隊又壓縮了何愷明的Mask R-CNN。這回用上了8塊V100 GPU來進行訓練。
在壓縮了25倍的情況下,壓縮模型的Box AP和Mask AP都只下降了4左右。
這表現,着實有些厲害。
Facebook表示,Bit Goes Down這樣的壓縮算法將推動虛擬現實(VR)和增強現實(AR)等技術的進一步發展。
目前,研究團隊已經開源了壓縮模型及代碼,如果感興趣,你可以親自復現一下~
傳送門
博客地址:https://ai.facebook.com/blog/compressing-neural-networks-for-image-classification-and-detection/
論文地址:https://arxiv.org/abs/1907.05686
GitHub地址:https://github.com/facebookresearch/kill-the-bits