騰訊聯合港中文提出新型神經網絡壓縮方法

隨著智能設備的普及,深度神經網絡在智能手機、可穿戴設備等嵌入式設備上的應用越來越常見,這些嵌入式設備對模型體積、計算性能、功耗等方面都有比較嚴格的要求。但與此同時,深度學習網絡規模卻在不斷增大,計算複雜度隨之增高,嚴重限制了其在手機等智能設備上的應用。深度學習模型壓縮與加速技術就是為了解決這一問題而生。InfoQ 將通過選題的方式逐一介紹各大公司在模型壓縮上的技術創新和落地實踐。

在移動設備和許多在線應用中,實時性能好的輕量級模型是一大重要需求,而為了保證神經網絡的實時性,很多時候都有必要對模型進行壓縮;但與此同時,幾乎所有神經網絡模型壓縮算法都會在壓縮過程中減損原始模型的準確度。因此,在進行模型壓縮時,需要在實時性和準確性之間找到一個合適的平衡。

為了保證壓縮後模型的準確度,當下流行的模型壓縮方法普遍依賴於使用原始數據對模型進行微調(fine-tuning)。然而,使用原始數據往往帶來隱私和安全性的困擾,因而隱私和安全性問題正成為模型壓縮領域新興的研究方向。

騰訊 AI Lab 與香港中文大學合作完成的論文《通過交叉知識蒸餾實現少樣本神經網絡壓縮(Few Shot Network Compression via Cross Distillation)》提出的新方法能很好地在保證實時性和準確性平衡的前提下兼顧隱私和安全性。該論文已被 AAAI 2020 會議接收,且相關源代碼也已在 GitHub 發佈。

騰訊聯合港中文提出新型神經網絡壓縮方法

論文地址: https://arxiv.org/pdf/1911.09450.pdf

開源代碼: https://github.com/haolibai/Cross-Distillation

不同於其它模型壓縮方法,這篇論文為了兼顧隱私與性能,採用了基於少樣本學習的神經網絡壓縮思路,即:給定每個類別很少的樣本,如何才能有效地壓縮網絡而使性能下降最小化?

騰訊 AI Lab 發現小樣本情況下進行神經網絡壓縮的核心挑戰是:壓縮後的模型很容易在少數訓練實例上過擬合,從而導致推斷過程中與原始網絡之間存在較大的估計誤差。估計誤差可能會逐層累積和傳播,最終破壞網絡輸出。為解決該問題,騰訊 AI Lab 提出了交叉知識蒸餾的思想,這是一種新穎的逐層知識蒸餾方法。該方法通過交叉連接教師和學生網絡的隱藏層,可以有效地減少網絡壓縮過程中逐層累積的估計誤差,提高準確率。而且新提出的算法還可以與剪枝、量化等流行的網絡壓縮算法相結合,有廣闊的應用前景。

交叉知識蒸餾算法設計

騰訊聯合港中文提出新型神經網絡壓縮方法

圖 1: 傳統逐層知識蒸餾算法(a)與交叉蒸餾算法(b,c,d)示意圖


1. 逐層知識蒸餾

圖 1(a) 展示了逐層知識蒸餾算法的工作過程示意圖。給定一個教師網絡(Teacher Network)和一個學生網絡(Student network),為了實現對學生網絡的監督訓練,逐層知識蒸餾的方法是最小化兩個網絡之間的特徵圖距離,即:

騰訊聯合港中文提出新型神經網絡壓縮方法

其中

騰訊聯合港中文提出新型神經網絡壓縮方法

稱為估計誤差。在訓練數據充足時,該方法可以通常可以取得較好的效果。但是在小樣本數據下,訓練容易受到過擬合的影響,估計誤差顯著增大並會逐層傳播。

2. 交叉知識蒸餾

本文新提出交叉蒸餾方法分成兩部分:

第一部分如圖 (b) 所示,即將教師網絡的隱藏層輸入學生網絡,並最小化糾正誤差 (correction loss)。該做法初衷是為把教師網絡的隱藏層當作基本真值(Ground Truth),在網絡中間位置輸入到學生網絡。因此,學生網絡可以在中間位置接受正確的監督信號以對後續層進行訓練,從而可避免估計誤差過大並傳播的現象。糾正誤差定義為:

騰訊聯合港中文提出新型神經網絡壓縮方法

第二部分如圖 © 所示,將學生網絡的隱藏層輸入教師網絡,並最小化模仿誤差 (imitation loss)。由於估計誤差在學生網絡上逐層傳播,導致在同一層位置上學生網絡輸入和教師網絡輸入存在較大差異。通過把學生網絡隱藏層輸入給教師網絡,從而在相同輸入前提下讓學生網絡模仿教師網絡的輸出行為。模仿誤差定義為:

騰訊聯合港中文提出新型神經網絡壓縮方法

通過對以上兩種優化目標進行凸組合,得到最終優化目標:

騰訊聯合港中文提出新型神經網絡壓縮方法

算法 1 簡單總結了其工作過程:

騰訊聯合港中文提出新型神經網絡壓縮方法

為了探討交叉蒸餾算法與原逐層知識蒸餾方法的聯繫,文章證明了該最終優化目標為原估計誤差的上界。另外,除了對優化目標進行凸組合,文章還探討了在網絡隱藏層上進行凸組合交叉連接(圖 d)。更多具體內容可參閱原論文。

3. 新方法與已有壓縮算法的結合(以剪枝為例)

剪枝算法的目標通常是實現對網絡參數的稀疏化,這對應於在優化目標上添加一個稀疏正則化項。比如,結構化剪枝的對應正則化項為 Group-LASSO:

騰訊聯合港中文提出新型神經網絡壓縮方法

騰訊聯合港中文提出新型神經網絡壓縮方法

對應地,我們可以使用近端梯度下降法(Proximal Gradient Descent)進行求解,即:

騰訊聯合港中文提出新型神經網絡壓縮方法

對應近端算子為

騰訊聯合港中文提出新型神經網絡壓縮方法

非結構化剪枝和量化等其他壓縮方法的對應近端梯度算子可參考原文。

實驗

1. 實驗設置

為了測試新算法的有效性,騰訊 AI Lab 使用常用的 VGG Net 和 ResNet 在 CIFAR-10 和 ImageNet 上通過模擬小樣本情景進行了測試。具體做法是對每個類別隨機採樣 K 張圖片進行算法測試。每組實驗均採用了不同的隨機種子,最終報告的結果為多輪測試的均值和標準差。

2. 實驗結果

表 1 和表 2 分別展示了當剪枝方案固定和樣本數量固定時,不同模型壓縮方法的測試結果。可以看到,Ours (交叉蒸餾優化目標凸組合)和 Ours-S(交叉蒸餾特徵圖凸組合,見原文) 代表的新方法在 VGG-16 和 ResNet-34 網絡上都普遍優於其它基準方法,其中 Ours 在 VGG-16 上的優勢更大,而 Ours-S 在 ResNet-34 上的表現更優。與此同時,樣本數據越小,交叉蒸餾相比於其它方法帶來的優勢更大,這說明當學生網絡在更少量訓練樣本上更嚴重的過擬合時,交叉蒸餾能為逐層迴歸提供更多助益。

騰訊聯合港中文提出新型神經網絡壓縮方法

表 1:VGG-16 在 CIFAR-10 上隨樣本數量 K 變化的準確率


騰訊聯合港中文提出新型神經網絡壓縮方法

表 2:ResNet-34 在 ImageNet 上不同模型稀疏度下的準確率,K=1


在圖 2 中,我們對比了交叉蒸餾算法與傳統逐層蒸餾算法的估計誤差。其中橫軸代表層數,縱軸代表與傳統逐層算法估計誤差的比值(越低越好)。從圖中可見隨網絡層數加深,交叉蒸餾算法的估計誤差普遍降低,顯示出對估計誤差傳播良好的抑制性。

騰訊聯合港中文提出新型神經網絡壓縮方法

圖 2: 交叉蒸餾算法與傳統逐層蒸餾算法的估計誤差對比


另外,通過對交叉蒸餾算法凸組合係數進行敏感度分析,騰訊 AI Lab 還發現不同係數配置下的交叉蒸餾算法都優於傳統的逐層訓練方法。當其處於中間值時,效果相對端點值更好。

騰訊聯合港中文提出新型神經網絡壓縮方法

圖 3: 目標函數凸組合係數分析。紅色為交叉蒸餾方法,灰色為傳統逐層訓練方法。


更多實驗、分析和拓展討論可參閱論文原文。

總結起來,相比於其它基準方法,騰訊 AI Lab 新提出的基於交叉蒸餾的神經網絡壓縮方法可通過降低學生網絡和教師網絡之間的估計誤差而有效地實現性能更強且泛化能力更優的學生網絡


分享到:


相關文章: