MODEL COMPRESSION VIA DISTILLATION AND QUANTIZATION翻譯

FrostyForest發表於2024-06-23

摘要:深度神經網路(DNNs)繼續取得重大進展,解決了從影像分類到翻譯或增強學習的任務。這個領域的一個受到廣泛關注的方面是在資源受限環境中(如移動或嵌入式裝置)高效執行深度模型。本文聚焦於這一問題,並提出了兩種新的壓縮方法,這兩種方法共同利用了權重量化和大型網路(稱為“教師”網路)到壓縮的“學生”網路的蒸餾。我們提出的第一種方法稱為量化蒸餾,該方法在訓練過程中利用蒸餾,透過將與教師網路相關的蒸餾損失納入到一個較小的學生網路的訓練中,該學生網路的權重被量化到有限的幾個等級。第二種方法,可微量化,透過隨機梯度下降最佳化量化點的位置,以更好地適應教師模型的行為。我們透過在卷積和迴圈架構上的實驗驗證了這兩種方法。我們展示了量化的淺層學生網路可以達到與最先進的全精度教師模型相似的準確性水平,同時提供高達數量級的壓縮和幾乎與深度減少成線性關係的推理加速。總之,我們的結果使得資源受限環境下的DNNs能夠利用在更強大裝置上開發的架構和準確性進展。

第一章 引言
背景。神經網路在解決多種真實世界問題中表現出極高的效果,例如影像分類(Krizhevsky等,2012年;He等,2016年),翻譯(Vaswani等,2017年),語音合成(Oord等,2016年)或強化學習(Mnih等,2013年;Silver等,2016年)。與此同時,現代神經網路架構通常需要大量的計算、空間和電力,通常需要強大的GPU來進行訓練和評估。關於大型模型是否對提高準確性確實必要的辯論仍在繼續。已知單個網路權重可能是多餘的,並且可能不攜帶重要資訊,例如Han等(2015年)。同時,大型模型通常有能力完全記住資料集(Zhang等,2016年),但它們並不這樣做,而是似乎學習到了通用的任務解決方案。一個關於為何需要過完備表示的假設是,它們透過將區域性最小值轉變為鞍點(Dauphin等,2014年)或發現不依賴於精確權重值的強大解決方案(Hochreiter和Schmidhuber,1997年;Keskar等,2016年)來使學習成為可能。如果大型模型僅在訓練期間需要為了魯棒性,那麼應該可以實現這些模型的顯著壓縮,而不影響準確性。這種直覺透過兩個相關但略有不同的研究方向得到加強。
第一個方向是關於訓練量化神經網路的工作,例如Courbariaux等(2015年);Rastegari等(2016年);Hubara等(2016年);Wu等(2016年);Mellempudi等(2017年);Ott等(2016年);Zhu等(2016年),這些研究表明,即使權重的值被限制在一組整數水平時,神經網路也能收斂到良好的任務解決方案。
第二個方向旨在壓縮已訓練的模型,同時保持它們的準確性。為此,提出了各種優雅的壓縮技術,例如Han等(2015年);Iandola等(2016年);Wen等(2016年);Gysel等(2016年);Mishra等(2017年),它們結合了量化、權重共享和精心編碼網路權重,以將最先進的深度模型的大小減少數個數量級,同時加速推理。這兩個研究方向都非常活躍,並且已經顯示出可以在嵌入式裝置或手機上提供此類模型時,顯著壓縮和準確性改善是至關重要的。然而,壓縮深度網路的文獻幾乎專門關注於為給定模型找到好的壓縮方案,而不顯著改變模型的結構。另一方面,最近的並行工作(Ba和Caruana,2013年;Hinton等,2015年)介紹了蒸餾過程,可用於將給定模型的行為轉移到任何其他結構。這可用於壓縮,例如獲得集合的緊湊表示(Hinton等,2015年)。然而,學生模型的大小需要足夠大,以便學習成功。一個太淺、太窄或缺少必要單元的模型,可能會導致相當大的準確性損失(Urban等,2016年)。
在這項工作中,我們檢驗蒸餾和量化是否可以共同利用以實現更好的壓縮。我們從直覺出發,1)應利用高精度、全精度教師模型的存在來提高量化模型的效能,而2)量化模型可以提供比僅透過減少層數或層寬度的蒸餾過程更好的壓縮。儘管我們的方法非常自然,但當這兩個想法結合時,會引發有趣的研究問題。

貢獻。我們提出了兩種方法,允許使用者透過蒸餾一個較淺的學生網路與較深的教師網路達到相似的準確性,以及透過將學生的權重量化到一組限定的整數級別並使用更少的層權重,來複合壓縮深度和寬度。基本思想是量化模型可以利用蒸餾損失(Hinton等,2015年),正確目標(由標籤表示)和軟目標(由教師的輸出表示)之間的加權平均。我們透過兩種不同的方法實現這種直覺。第一種稱為量化蒸餾,旨在透過將其納入學生網路的訓練過程中,利用蒸餾損失,該學生網路的權重受到限制在一組級別。第二種方法,我們稱之為可微量化,採用不同的方法,試圖透過隨機梯度下降收斂到量化點的最優位置。我們透過在卷積和迴圈網路架構上的一系列實驗來實證驗證這兩種方法。
我們展示了量化的淺層學生可以在諸如CIFAR和ImageNet(用於影像分類)和OpenNMT及WMT(用於機器翻譯)的資料集上達到與全精度和更深的教師模型相似的準確性水平,同時提供高達數量級的壓縮和與深度線性相關的推理加速。
相關工作。我們的工作是知識蒸餾(Ba和Caruana,2013年;Hinton等,2015年)的一個特例,我們專注於獲取既量化又更淺的高準確性學生的技術。更一般地說,它可以被看作是具有特權資訊學習的一個特例,例如Vapnik和Izmailov(2015年);Xu等(2016年),其中學生獲得了來自更大、預訓練模型輸出形式的額外資訊。我們在可微量化中使用的最佳化量化點位置的學習過程的想法,之前已在Lan等(2014年);Koren和Sill(2011年);Zhang等(2017年)中使用過,儘管是在矩陣完成和推薦系統的不同背景下。在Hinton等(2015年)中提到了使用蒸餾進行尺寸縮減,用於蒸餾集合。據我們所知,唯一一個在量化背景下使用蒸餾的工作是Wu等(2016年b),它用於提高二值神經網路在ImageNet上的準確性。我們顯著地改進了這個想法,例如,我們的4位量化版本的ResNet18的準確性高於全精度的ResNet18(匹配ResNet34教師的準確性):它的頂尖-1準確性(>15%)和頂尖-5準確性(>7%)比Wu等(2016年b)中最準確的模型高。

第二章 基礎知識

2.1 量化過程

我們首先定義一個縮放函式 sc : Rn → [0, 1],它將取值範圍任意的向量標準化為取值在 [0, 1] 範圍內的向量。有了這樣一個函式,量化函式的一般結構如下:

Q(v) = sc^{-1}(\hat{Q}(sc(v))) \tag{1}

其中 sc−1sc−1 是縮放函式的逆函式,QQ​ 是實際的量化函式,它只接受 [0, 1] 範圍內的值。我們始終假設 v 是一個向量;實際上,權重向量可以是多維的,但我們可以將它們重塑為一維向量,並在量化後恢復原始維度。

縮放。有關縮放函式的各種規範;在本文中,我們將使用線性縮放,例如 He 等人 (2016b),即:

sc(v)=v−βαsc(v)=αv−β​

其中 α=max⁡ivi−min⁡iviα=maxi​vi​−mini​vi​,β=min⁡iviβ=mini​vi​,結果使得目標值位於 [0, 1] 範圍內,並且量化函式 Q(v)=αQ(v−βα)+βQ(v)=αQ​(αv−β​)+β。

分桶。這種表述的一個問題是,對整個向量使用相同的縮放因子,其維度可能非常大。幅度不平衡可能導致重大的精度損失,其中大部分縮放向量的元素被推向零。為了避免這種情況,我們將使用分桶,例如 Alistarh 等人 (2016),即我們將縮放函式分別應用於某個固定大小的連續值桶。這裡的權衡是,我們為每個桶獲得更好的量化精度,但將需要為每個桶儲存兩個浮點縮放因子。我們將在第5節中描述壓縮比較。

量化函式 QQ​ 也可以有幾種定義方式。我們將考慮使用均勻和非均勻的量化點佈置。

均勻量化。我們固定一個引數 s≥1s≥1,描述使用的量化級別數。直觀上,均勻量化考慮在 0 到 1 之間(包括這些端點)均勻分佈的 s+1s+1 個點。確定性版本將為每個(縮放的)向量座標 vivi​ 分配最近的量化點,而在隨機版本中,我們以機率方式進行四捨五入,使得結果值是 vivi​ 的無偏估計,具有最小的方差。形式上,具有 s+1s+1 級的均勻量化函式定義為:

\hat{Q}(v, s)_i = \left\lfloor \frac{v_i s}{c} \right\rfloor + \frac{\xi_i}{s} \tag{3}

其中 ξiξi​ 是四捨五入函式。對於確定性版本,我們定義 ki=svi−⌊vis⌋ki​=svi​−⌊vi​s⌋ 並設定 ξi={1,if ki>120,otherwiseξi​={1,0,​if ki​>21​otherwise​,而對於隨機版本,我們將設定 ξi∼Bernoulli(ki)ξi​∼Bernoulli(ki​)。注意,kiki​ 是 vivi​ 與小於 vivi​ 的最近量化點之間的標準化距離,並且向量分量是獨立量化的。

非均勻量化。非均勻量化接受一組量化點 {p1,…,ps}{p1​,…,ps​} 作為輸入,並將每個元素 vivi​ 量化到這些點中最近的一個。為簡便起見,我們僅定義這個函式的確定性版本。

第2.2節 隨機量化等同於新增高斯噪聲

在本節中,我們列出了均勻量化函式的一些有趣的數學特性。顯然,隨機均勻量化是其輸入的無偏估計器,即 (E[Q(v)] = v)。

我們感興趣的是將這個函式應用於神經網路;由於標量乘積是神經網路執行的最常見操作,我們希望研究 (Q(v)^T x) 的屬性,其中 (v) 是網路中某一層的權重向量,(x) 是輸入。我們能夠展示 (Q(v)^T x = v^T x + \epsilon) (5),其中 (\epsilon) 是一個隨機變數,它是漸近正態分佈的,即 (\frac{\epsilon}{\sigma_n} \overset{D}{\rightarrow} N(0, 1))。這種收斂隨著維數 (n) 而發生。更正式的陳述和證明見附錄中的B.1節。

這意味著量化權重等同於在每層的輸出(啟用函式之前)新增一個零均值誤差項,該誤差項是漸近正態分佈的。這個誤差項的方差取決於 (s)。這將量化與倡導在神經網路的中間啟用中新增噪聲作為正則化器的工作聯絡起來,例如 Gulcehre 等人(2016)。

相關文章