機器之心原創
作者:立早
怎樣用量化方法解決模型壓縮問題?Facebook 近日提出了一個基於向量的量化方法,無需標註數據即可對 ResNet 模型進行20倍壓縮,還能夠獲得很高的準確率。
概述
本文旨在解決類似 ResNet [1] 這類卷積網絡的模型過大,推理速度慢的問題。相比較之前的量化方法,本文提出來一個向量量化方法,其主要思想是保存網絡重建之後的輸出而不是原始無壓縮網絡的權重。本文提出的方法無需標註數據,並且使用對 CPU 推理友好的字節對齊碼本。實驗證明,使用本文方法可對 ResNet 模型進行20倍壓縮,並在ImageNet 上獲得 76.1% 的 top-1準確率。與此同時,可將 Mask R-cnn 壓縮至6MB的大小並保持不錯的準確率。
論文地址:https://arxiv.org/abs/1907.05686
壓縮方法的介紹和比較
神經網絡壓縮一直是個熱門的研究方向,目前的主流方法主要有以下幾種:
低精度訓練[2]。這類方法用低bit權重,優點是可以加速推理過程,利用位操作代替複雜的邏輯操作,但是同時也會帶來一個比較大的精度下降。
量化。向量量化(VQ[3])和乘積量化(PQ[4])是其中的典型。這種量化方法是將原始的高維向量分解至低維笛卡爾積,然後對分解得到的低維向量做量化,這種方法的缺點是對於深度網絡會產生一個笛卡爾漂移。
剪枝。根據一些特定的規則去除部分冗餘的連接或者結構,剪枝方法的訓練時間較長,且需要剪枝和再微調的反覆迭代進行。
調整結構。類似 SqueezeNet[5],NASnet,shuffleNet,MobileNet等,主要依賴的 DepthWise 和 PointWise 卷積,或者通道分類和通道打亂等等。
蒸餾[6-7]。這種方法通常利用大模型或模型組的知識(概率分布)來訓練小模型。
相比較以上的壓縮方法,本文提出的量化方法注重於恢復網絡的輸出。跟PQ方法相比,本文是注重恢復壓縮後的權重。同時,在訓練的過程中,本文也運用了蒸餾的思想,用於提升壓縮網絡的精度。
算法介紹
全連接層量化
背景介紹--PQ 方法介紹
我們知道,PQ 算法(Product Quantization)一開始是由法國 INRIA 實驗室團隊提出的用於圖像壓縮的一種算法,通常被用於信息壓縮和檢索方向。PQ 算法中,以全連接層量化為例。處理全連接層時,我們關注全連接權重,忽略偏差。首先將 W 的每一列分割成 m 個連續的子向量,然後對m*的子向量學習一個碼本。
對於包含 k 個聚類中心的模板 C=,任意 W 的列向量 Wj 可以映射為量化的版本 q(wj)= (ci1,,,cim),其中下標 i1 表示的是 wj 的第一個子向量歸屬的碼本的索引,以此類推其餘的下標。通過量化如下的目標函數(1)來學習碼本。
其中,w^ 表示量化的權重。這個目標函數可以通過 k-means 來最小化。當 m=1 時,PQ等價於 VQ(Vector Quantization),當 m=Cin 時,PQ 等價於標量 k-means。最後,PQ 生成了一個 k^m 大小的隱式碼本。
通過對該算法的一個簡要的回顧,我們不難看出,PQ 算法的重點點在於對權重的恢復,旨在減小壓縮前後的權重信息損失。那麼,這個方法在使用時有何缺點呢?我們可以看看如下的圖(1)。
本文算法以及算法求解
在這之前,我們一直強調本文的主要目的是恢復網絡之後的輸出值,而不是權重值。這其中的原因可以追溯到模型對樣本的擬合能力,具體如下圖所示:
圖1:量化保存權重和本文方法的比較
在圖1中,灰色線代表真實的分類器,紅色線表示量化保存權重的標準方法訓練得到的分類器,而綠色線是本文提出的方法。在in-domain中,可以看出,本文的方法可以比較好的擬合真實的分類器,而標準方法為了擬合out-of-domin領域的數據,在in-domain中反而帶來了錯誤的分類。
筆者認為,該圖從本質上顯示了神經網絡模型在擬合樣布分布的時候,有一定的容錯能力,也就是說對於噪聲點或者異常信息有忽所忽略,而關注於正確的樣本的分布,可以避免模型的過擬合。因此,在量化的時候,算法應該同時學習到模型的擬合能力以及泛化信息,而不是僅僅學習模型的參數信息。因此,引申出本文算法的壓縮目的,恢復壓縮輸出信息,而不是PQ的恢復壓縮權重信息。
因此,本文提出直接最小化重建輸出值誤差,在給定的輸入值x的前提下,本文旨在縮小輸出和重建輸出之間的誤差。改寫目標函數(1)為如下函數(2)。
其中,y=xW表示原始網絡的輸出,
表示重建輸出。
EM求解
E步:分配向量至最近的聚類中心
M步:根據E步組成的集合,更新碼本C。
複雜度分析
此類方法的本質上和 k-means 一致,每一列 m 個維度為 d 的子向量選擇 k 個聚類中心,其算法的時間複雜度為 mkd。因此一個全連接矩陣的 PQ 的時間複雜為C_inC_out*k 。
對於一個常見的網絡結果,卷積層是必不可少的部分,接下來,筆者將介紹如何對卷積層進行壓縮處理的。
卷積層量化
4D卷積分離求解
全連接的權重是個4D的矩陣,首先將這個矩陣reshape成一個二維的矩陣(C_inKK)Cout。然後將轉換之後的矩陣每一維分離成C_in個大小為(kk)大小的子向量。具體如圖(2)所示:
圖2:4D卷積的reshape示意圖
為了保證結果的一致性,同樣的將輸入 X 也 reshape 一下。然後運用目標函數中量化權重。
算法複雜度分析
上面說到,對卷積運用算法壓縮時,首先將 4D 的矩陣 reshape 成(C_inKK)Cout的矩陣,該矩陣可以看為全連接層的權重。接著,對矩陣運用 PQ壓縮。結合3.1中PQ算法的時間複雜度,本文算法的時間複雜度可以表示為(C_inKK)C_out*k(可類比k-means算法)。
其中,K 為卷積核大小,k 為聚類中心的個數。
整個網絡的量化
自底向上的逐層量化
本文輸入一個 batch 的圖像,並從底層向上逐層量化網絡。需要注意的是,在量化的過程中,使用的是當前層的輸出值而不是非壓縮網絡的輸出值。因為,在實驗過程中,使用非壓縮網絡的輸出值會帶來一定的誤差。
微調 codebook
進行了逐層的量化學習之後,需要對整個網絡進行微調。在這個過程中,本文使用非壓縮網絡作為 teacher 網絡來指導壓縮網絡學習。蒸餾學習中,用 Kl 散度來作為蒸餾的損失,並用 SGD 來更新碼本。
整體微調 BN 參數
跟前一個過程相比較,這個過程將BN設置為訓練模式,重複上述微調碼本的過程。
實驗介紹
ImageNet實驗
圖(3):resnet-18和resnet-50的壓縮結果
圖(3)表示的是在resnet-18和resnet-50的壓縮大小和TOP-1之間的關係圖。對比其他的算法,本文的量化方法在更高的壓縮率上保證模型的精度。
表(1) 在給定大小的前提下的模型準確率對比
表(1)表示的是,在限定模型大小的前提下,本文的方法對比目前最優結構的 top-1 準確率,可以發現,本文的方法在半監督的情況下,準確率較高。
Detection實驗
表(2)Mask R-CNN 實驗
表(2)展示的是在 k=256(8bits) 的情況下,模型壓縮因子大概 26 的情況下,量化模型下降約 4 個 AP 。
論文總結和分析
本文作為一篇網絡壓縮方向的論文,從本質上提出來了獨特的量化方法,其提出的保存輸出結果而不是保存權重的思想,從而可以擬合in-domain數據並且忽略out-of-domain的數據,這是很值得借鑑和思考的。從這個思想引申出來的量化方法,延續PQ方法的優點。
本文首要值得借鑑的是對壓縮本質的思考,脫離傳統的壓縮權重的思想,另闢蹊徑恢復輸出。
從操作上來說,PQ等方法都是經典的算法,本文方法延續其內容,因此實現上難度不大。
但是,作為一個算法類的研究論文,筆者認為以下的方面還值得繼續研究和探討。
在訓練過程中,k-means的思想是其重點,那麼對於算法的複雜度分析部分,是否需要更具體的討論。
在本文中,對於樣本的採樣和計算過程,也是值得繼續研究的一個課題。
總體來說,本文的實驗結果很充分地說明該方法的有效性。但是,這種帶有訓練機制的量化方法,從樣本的採樣,算法複雜度,訓練過程上來說,都是一個耗時且不太可控的過程。
作者介紹:
立早,工學碩士,研究方向為模式識別。目前從事人臉識別、檢測和神經網絡壓縮方向的工作。希望能夠一直學習,多多交流,不斷進步。
參考文獻
[1] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image
recognition. CoRR, 2015.
[2] Shuchang Zhou, Zekun Ni, Xinyu Zhou, He Wen, Yuxin Wu, and Yuheng Zou. Dorefa-net:
Training low bitwidth convolutional neural networks with low bitwidth gradients. CoRR, 2016.
[3] Yunchao Gong, Liu Liu, Ming Yang, and Lubomir Bourdev. Compressing deep convolutional
networks using vector quantization. arXiv preprint arXiv:1412.6115, 2014.
[4] Herv e J egou, Matthijs Douze, and Cordelia Schmid. Product Quantization for Nearest Neigh-
bor Search. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2011.
[5]Jie Hu, Li Shen, and Gang Sun. Squeeze-and-excitation networks. In Conference on Computer
Vision and Pattern Recognition, 2018.
[6] Geoffrey Hinton, Oriol Vinyals, and Jeff Dean. Distilling the knowledge in a neural network.
NIPS Deep Learning Workshop, 2014.
[7] Yu Cheng, Duo Wang, Pan Zhou, and Tao Zhang. A survey of model compression and accel-
eration for deep neural networks. CoRR, 2017.