找回密碼
 注冊

掃一掃,訪問微社區

2019年EDA365年度技術峰會
查看: 33|回復: 0
打印 上一主題 下一主題

皇家社会vs曼联首发: ResNet壓縮20倍,Facebook提出新型無監督模型壓縮量化方法

[復制鏈接]

皇家社会皇马 www.elchpc.com.cn 該用戶從未簽到

跳轉到指定樓層
1#
發表于 2019-12-3 09:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

EDA365歡迎您登錄!

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x
概述- T6 f* y! m% J1 @
本文旨在解決類似 ResNet [1] 這類卷積網絡的模型過大,推理速度慢的問題。相比較之前的量化方法,本文提出來一個向量量化方法,其主要思想是保存網絡重建之后的輸出而不是原始無壓縮網絡的權重。本文提出的方法無需標注數據,并且使用對 CPU 推理友好的字節對齊碼本。實驗證明,使用本文方法可對 ResNet 模型進行20倍壓縮,并在ImageNet 上獲得 76.1% 的 top-1準確率。與此同時,可將 Mask R-cnn 壓縮至6MB的大小并保持不錯的準確率。& Y/ w: c, R8 A; S* z9 n2 G2 L7 f: M
論文地址:https://arxiv.org/abs/1907.05686
8 u1 u$ W: H/ b6 w% d4 n4 B3 f) m- I壓縮方法的介紹和比較
' b2 C: }( ~: H. O% p; x( o神經網絡壓縮一直是個熱門的研究方向,目前的主流方法主要有以下幾種:9 o5 s. c  ^& n
    & ~% ^9 L. ^5 }
  • 低精度訓練[2]。這類方法用低bit權重,優點是可以加速推理過程,利用位操作代替復雜的邏輯操作,但是同時也會帶來一個比較大的精度下降。
    7 a0 Z  m# Q4 g4 Z2 n
  • 量化。向量量化(VQ[3])和乘積量化(PQ[4])是其中的典型。這種量化方法是將原始的高維向量分解至低維笛卡爾積,然后對分解得到的低維向量做量化,這種方法的缺點是對于深度網絡會產生一個笛卡爾漂移。
    ( `8 E3 w, ?" c1 A
  • 剪枝。根據一些特定的規則去除部分冗余的連接或者結構,剪枝方法的訓練時間較長,且需要剪枝和再微調的反復迭代進行。
    / ?- Q1 ]8 p5 Q  @  u
  • 調整結構。類似 SqueezeNet[5],NASnet,shuffleNet,MobileNet等,主要依賴的 DepthWise 和 PointWise 卷積,或者通道分類和通道打亂等等。
    ' `$ K: _, r; D/ n# t  N
  • 蒸餾[6-7]。這種方法通常利用大模型或模型組的知識(概率分布)來訓練小模型。
    * t2 S/ C/ q. V0 h3 ^6 M
相比較以上的壓縮方法,本文提出的量化方法注重于恢復網絡的輸出。跟PQ方法相比,本文是注重恢復壓縮后的權重。同時,在訓練的過程中,本文也運用了蒸餾的思想,用于提升壓縮網絡的精度。" g, j3 v% I" L$ ?
算法介紹
0 I: |  P& k) W9 b" Y全連接層量化9 q% R- z0 Q- \% {7 c4 K

    0 M. A0 J' r. P0 E7 c  j8 V
  • 背景介紹--PQ 方法介紹/ |, H% t( Y* j2 O  y+ Y
我們知道,PQ 算法(Product Quantization)一開始是由法國 INRIA 實驗室團隊提出的用于圖像壓縮的一種算法,通常被用于信息壓縮和檢索方向。PQ 算法中,以全連接層量化為例。處理全連接層時,我們關注全連接權重,忽略偏差。首先將 W 的每一列分割成 m 個連續的子向量,然后對m*的子向量學習一個碼本。& u( S6 u0 o2 d) h, U) Z# i: ?
對于包含 k 個聚類中心的模板 C={c1,c2,,,ck},任意 W 的列向量 Wj 可以映射為量化的版本 q(wj)= (ci1,,,cim),其中下標 i1 表示的是 wj 的第一個子向量歸屬的碼本的索引,以此類推其余的下標。通過量化如下的目標函數(1)來學習碼本。
" E5 X5 w5 t' }& {5 X( g5 F& {
% C3 v/ l$ G+ ]$ K其中,w^ 表示量化的權重。這個目標函數可以通過 k-means 來最小化。當 m=1 時,PQ等價于 VQ(Vector Quantization),當 m=Cin 時,PQ ?等價于標量 k-means。最后,PQ 生成了一個 k^m 大小的隱式碼本。
  `! O6 q2 }( p% m* `通過對該算法的一個簡要的回顧,我們不難看出,PQ 算法的重點點在于對權重的恢復,旨在減小壓縮前后的權重信息損失。那么,這個方法在使用時有何缺點呢?我們可以看看如下的圖(1)。
" V, ~  }% w9 W4 j; j9 s; d$ f
    8 }5 k- o" [, o2 s
  • 本文算法以及算法求解
    * C+ |  m. }# f$ w/ W1 o
在這之前,我們一直強調本文的主要目的是恢復網絡之后的輸出值,而不是權重值。這其中的原因可以追溯到模型對樣本的擬合能力,具體如下圖所示: ?0 M' A  V4 s( _

( q: t- ^3 ~! t圖1:量化保存權重和本文方法的比較
% C4 E  U$ B( B5 f- q. @0 T. V在圖1中,灰色線代表真實的分類器,紅色線表示量化保存權重的標準方法訓練得到的分類器,而綠色線是本文提出的方法。在in-domain中,可以看出,本文的方法可以比較好的擬合真實的分類器,而標準方法為了擬合out-of-domin領域的數據,在in-domain中反而帶來了錯誤的分類。7 d2 {# t; j  p
筆者認為,該圖從本質上顯示了神經網絡模型在擬合樣布分布的時候,有一定的容錯能力,也就是說對于噪聲點或者異常信息有忽所忽略,而關注于正確的樣本的分布,可以避免模型的過擬合。因此,在量化的時候,算法應該同時學習到模型的擬合能力以及泛化信息,而不是僅僅學習模型的參數信息。因此,引申出本文算法的壓縮目的,恢復壓縮輸出信息,而不是PQ的恢復壓縮權重信息。" T/ B( M5 ?1 N5 ^
因此,本文提出直接最小化重建輸出值誤差,在給定的輸入值x的前提下,本文旨在縮小輸出和重建輸出之間的誤差。改寫目標函數(1)為如下函數(2)。
! ^! o1 k, k. B2 R$ Q7 f: S) D! H) C& B  Z( @
其中,y=xW表示原始網絡的輸出,5 P7 R; P7 u0 M8 x4 j
/ s# l8 P3 m) L3 F  h
" k1 h* x7 t2 `7 ]* x' U% }
表示重建輸出。9 u$ X& D6 C# q, L. W/ i

    ; T; c; `- s( J  ]; `* O, y
  • EM求解; u3 K+ J" q& K& S

  • , s2 z. ?" c1 Z1 t9 T* x3 V' U" G
        T1 m7 L1 ^0 {
    • E步:分配向量至最近的聚類中心7 R2 L0 }' l; v- w$ @& U* h! W' U3 `
    • M步:根據E步組成的集合,更新碼本C。7 }% p( u4 J. y  }0 K/ h! g. e

    ' R4 r# Y* A1 d4 L# D7 Y
  • 復雜度分析! _$ H! G6 {! @: y4 V4 }; s- v  Z) @
此類方法的本質上和 k-means 一致,每一列 m 個維度為 d 的子向量選擇 k 個聚類中心,其算法的時間復雜度為 mkd。因此一個全連接矩陣的 PQ 的時間復雜為C_inC_out*k 。
- S1 m* O0 z' U0 H. Y對于一個常見的網絡結果,卷積層是必不可少的部分,接下來,筆者將介紹如何對卷積層進行壓縮處理的。  y5 G& S) l7 V* f3 p* d7 j, R6 K
卷積層量化
- h) a. T$ W: t0 o

    1 u# ~. u! f1 [, ?8 x& X+ g
  • 4D卷積分離求解9 l1 J0 Z3 v. G. W& d. P8 u
全連接的權重是個4D的矩陣,首先將這個矩陣reshape成一個二維的矩陣(C_inKK)Cout。然后將轉換之后的矩陣每一維分離成C_in個大小為(kk)大小的子向量。具體如圖(2)所示:
# H/ I$ f) E; \* Z: T9 F3 P圖2:4D卷積的reshape示意圖
& o: x* ]% J! M  A8 w, N為了保證結果的一致性,同樣的將輸入 X 也 reshape 一下。然后運用目標函數中量化權重。: ^+ v/ z7 c5 |* z1 q/ j" F
    " A6 A) F% {4 x- V
  • 算法復雜度分析  }* i7 e7 @7 Q. d; c5 }' L
上面說到,對卷積運用算法壓縮時,首先將 4D 的矩陣 reshape 成(C_inKK)Cout的矩陣,該矩陣可以看為全連接層的權重。接著,對矩陣運用 PQ壓縮。結合3.1中PQ算法的時間復雜度,本文算法的時間復雜度可以表示為(C_inKK)C_out*k(可類比k-means算法)。6 E0 b# G3 |7 Y
其中,K 為卷積核大小,k 為聚類中心的個數。5 t5 `: G" c5 v, i. X+ \
整個網絡的量化
4 p+ m0 R& W# t$ L6 [
      k) f& L8 M% v7 @" u. y+ Q
  • 自底向上的逐層量化
    8 H/ C+ {  @- o9 j
本文輸入一個 batch 的圖像,并從底層向上逐層量化網絡。需要注意的是,在量化的過程中,使用的是當前層的輸出值而不是非壓縮網絡的輸出值。因為,在實驗過程中,使用非壓縮網絡的輸出值會帶來一定的誤差。4 P/ |' r, S+ G

    ( |5 i0 h8 t) `4 t& u
  • 微調 codebook8 z( N# r, l( f4 Y; E! m
進行了逐層的量化學習之后,需要對整個網絡進行微調。在這個過程中,本文使用非壓縮網絡作為 teacher 網絡來指導壓縮網絡學習。蒸餾學習中,用 Kl 散度來作為蒸餾的損失,并用 SGD 來更新碼本。% I8 s' z. `2 A7 L; _+ m
    / j2 Y( w7 E$ ~8 h0 E
  • 整體微調 BN 參數8 G2 ?5 d' K+ v
跟前一個過程相比較,這個過程將BN設置為訓練模式,重復上述微調碼本的過程。4 d! f0 ^2 F9 @6 Q. N5 D/ S9 s% O
實驗介紹6 Y0 m4 Q1 H4 P) r' Y

    3 d. q8 a; J3 r9 n4 ?# P
  • ImageNet實驗
    0 z( ~7 e* T) ?6 e1 t+ o$ Q. l
圖(3):resnet-18和resnet-50的壓縮結果
, L8 s2 z$ A' B6 J) d圖(3)表示的是在resnet-18和resnet-50的壓縮大小和TOP-1之間的關系圖。對比其他的算法,本文的量化方法在更高的壓縮率上保證模型的精度。
" w/ N+ p$ s1 ?* }
& r0 n/ q2 l6 a  ~, R4 p& A, W表(1) 在給定大小的前提下的模型準確率對比
; }+ k! N4 y& w表(1)表示的是,在限定模型大小的前提下,本文的方法對比目前最優結構的 top-1 準確率,可以發現,本文的方法在半監督的情況下,準確率較高。  j' z& Z8 [9 N4 ]$ K" K0 w

    $ V1 T: y( H% L
  • Detection實驗
    ( D+ e- W; ^1 _
表(2)Mask R-CNN 實驗
2 k% o4 |! m3 r* j" S% B表(2)展示的是在 k=256(8bits) 的情況下,模型壓縮因子大概 26 的情況下,量化模型下降約 4 個 AP 。
1 Q$ Q( {# `5 g$ N# Y1 y4 l論文總結和分析" B- C+ X4 H0 r8 c$ A
本文作為一篇網絡壓縮方向的論文,從本質上提出來了獨特的量化方法,其提出的保存輸出結果而不是保存權重的思想,從而可以擬合in-domain數據并且忽略out-of-domain的數據,這是很值得借鑒和思考的。從這個思想引申出來的量化方法,延續PQ方法的優點。
9 Z' r9 `5 \  V; F; F) m) m( `

    5 f/ m" s! S) L1 `0 {
  • 本文首要值得借鑒的是對壓縮本質的思考,脫離傳統的壓縮權重的思想,另辟蹊徑恢復輸出。  |5 O; {# b( s
  • 從操作上來說,PQ等方法都是經典的算法,本文方法延續其內容,因此實現上難度不大。+ {7 w+ C1 V! o  d
但是,作為一個算法類的研究論文,筆者認為以下的方面還值得繼續研究和探討。
' x5 w; E$ X+ [- r
    8 q2 P3 U( l2 P2 `8 @9 T
  • 在訓練過程中,k-means的思想是其重點,那么對于算法的復雜度分析部分,是否需要更具體的討論。; M# K/ d, @6 x( j8 N+ W2 U
  • 在本文中,對于樣本的采樣和計算過程,也是值得繼續研究的一個課題。
    : `6 K. x2 d# S  O3 W% y8 O
總體來說,本文的實驗結果很充分地說明該方法的有效性。但是,這種帶有訓練機制的量化方法,從樣本的采樣,算法復雜度,訓練過程上來說,都是一個耗時且不太可控的過程。
0 I' L% w+ x+ p. a, X作者介紹:' T+ b1 p- K+ |
立早,工學碩士,研究方向為模式識別。目前從事人臉識別、檢測和神經網絡壓縮方向的工作。希望能夠一直學習,多多交流,不斷進步。
0 U3 M1 S/ U, ]$ e/ O" I參考文獻! B, t8 A1 z: I- O/ ~1 ?% R
[1] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image
5 M8 \+ F. N! ^1 K' Y$ E: C1 ]recognition. CoRR, 2015.( [9 Z8 k6 w6 B$ w; A7 U) h
[2] Shuchang Zhou, Zekun Ni, Xinyu Zhou, He Wen, Yuxin Wu, and Yuheng Zou. Dorefa-net:
5 S  j  f* b9 U0 X) Z9 B+ h0 |Training low bitwidth convolutional neural networks with low bitwidth gradients. CoRR, 2016.
7 A% {: A  ]6 i) U/ i[3] Yunchao Gong, Liu Liu, Ming Yang, and Lubomir Bourdev. Compressing deep convolutional) Y7 M! M5 u* h
networks using vector quantization. arXiv preprint arXiv:1412.6115, 2014.
! |6 w1 X6 [( s1 t6 J% c[4] Herv? e J? egou, Matthijs Douze, and Cordelia Schmid. Product Quantization for Nearest Neigh-7 e. k6 L8 b$ K: z! W
bor Search. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2011.( C1 I9 [. G4 h$ k4 S' [. O
[5]Jie Hu, Li Shen, and Gang Sun. Squeeze-and-excitation networks. In Conference on Computer8 p+ c8 A+ T! S  u5 [9 {. ~
Vision and Pattern Recognition, 2018.
$ e! a$ U4 ]4 @9 j, f[6] Geoffrey Hinton, Oriol Vinyals, and Jeff Dean. Distilling the knowledge in a neural network.$ S5 h/ ]0 S' S; a/ x) Q# \
NIPS Deep Learning Workshop, 2014.8 \/ k  o# x, b8 S
[7] Yu Cheng, Duo Wang, Pan Zhou, and Tao Zhang. A survey of model compression and accel-2 [* {* o; d3 d$ ]6 \7 Q' v' T
eration for deep neural networks. CoRR, 2017.
7 N* M( Z1 k9 Y& g" k# O. K3 w7 w. F6 T: e
『本文轉載自網絡,版權歸原作者所有,如有侵權請聯系刪除』
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則

關閉

推薦內容上一條 /1 下一條

EDA365公眾號

關于我們|手機版|皇家社会皇马 ( 粵ICP備18020198號 )

GMT+8, 2019-12-7 05:35 , Processed in 0.078125 second(s), 20 queries , Gzip On.

皇家社会皇马

地址:深圳市南山區科技生態園2棟A座805 電話:19925233282

快速回復 皇家社会皇马 返回列表
吃鸡游戏人物 宝马彩票网址 贵金属赚钱不 表示身体比赚钱重要的句子 北方麻将规则 打法 闪送北京赚钱嘛 u购彩苹果 逆水寒手游赚钱方法 捕鱼王者软件 打图 体力怎么赚钱 雅思网课老师赚钱吗 宝可梦赚钱 梦幻新区69赚钱 辽宁麻将玩法技巧 在熊猫tv开直播如何赚钱吗 隆彩娱乐群