【知識星球】剪枝量化初完結,蒸餾學習又上線
- 2019 年 10 月 8 日
- 筆記
歡迎大家來到《知識星球》專欄,這裡是網路結構1000變小專題,模型壓縮是當前工業界的核心技術,我們這一個月一直在更新相關的內容,剛剛更新完了一批剪枝和量化相關的文章,最近又開始更新蒸餾學習相關的內容。
作者&編輯 | 言有三
1 剪枝
剪枝是一項古老的技術,從上個世紀傳承至今,在學術界和工業界相關的研究工作都是很活躍的。剪枝根據不同的粒度有很多種,小到一個卷積連接,大到一個網路層。

下面是Google關於剪枝的一個典型研究。
有三AI知識星球-網路結構1000變
To prune, or not to prune

本文探討了具有同樣大小的稀疏大模型和稠密小模型的性能對比,在影像和語音任務上表明稀疏大模型普遍有更好的性能。
作者/編輯 言有三
模型剪枝是一項重要的模型壓縮技術,它給網路參數帶來了稀疏性,在開源框架中可以通過和權重矩陣大小相等的掩膜來實現。
那麼,剪枝到底對性能會有什麼影響呢?首先看Inception V3模型的實驗,在稀疏性分別為0%,50%,75%,87.5%時的結果,此時模型中非零參數分別是原始模型的1,0.5,0.25,0.128倍,即實現了1,2,4,8倍的壓縮。

可以看到,在稀疏性為50%,性能幾乎不變。稀疏性為87.5%時,指標下降為2%。

上表展示了MobileNet的實驗結果,分別比較更窄的MobileNet和更加稀疏的MobileNet的結果,可以發現稀疏的MobileNet性能明顯優於稠密的MobileNet。
75%的Sparse Model比0.5倍寬的Dense Model在top-
1指標上超出了4%,而且模型更小。90%的Sparse Model比0.25倍寬的Dense Model在top-1指標上超出了10%,模型大小相當。
從這裡可以看出剪枝真的是一個非常有前途的課題,值得研究。
[1] Zhu M, Gupta S. To prune, or not to prune: exploring the efficacy of pruning for model compression[J]. arXiv preprint arXiv:1710.01878, 2017.
其他相關的內容如果感興趣可以移步有三AI知識星球。


2 量化
量化是深度學習模型在各大硬體平台落地的重要基礎技術,從全精度到8bit及以下的相關研究和實踐都非常多。早期的研究關注在訓練後模型的權重量化,而現在更多的研究已經集中在訓練過程中同時完成量化,並且並不僅僅限制在模型的權重,而是從權重到激活,甚至是誤差和梯度,並且開始關注混合精度量化,下面是一個典型的研究。
有三AI知識星球-網路結構1000變
HAQ

HAQ(Hardware-Aware Automated Quantization with Mixed Precision)是一個自動化的混合精度量化框架,使用增強學習讓每一層都學習到了適合該層的量化位寬。
作者/編輯 言有三
不同的網路層有不同的冗餘性,因此對於精度的要求也不同,當前已經有許多的晶片開始支援混合精度。通常來說,淺層特徵提取需要更高的精度,卷積層比全連接層需要更高的精度。如果手動的去搜索每一層的位寬肯定是不現實的,因此需要採用自動搜索策略。
另一方面,一般大家使用FLOPS,模型大小等指標來評估模型壓縮的好壞,然後不同的平台表現出來的差異可能很大,因此本文使用了新的指標,即晶片的延遲和功耗。
搜索的學習過程是代理Agent接收到層配置和統計資訊作為觀察,然後輸出動作行為即權值和激活的位寬。其中一些概念如下:
(1) 觀測值-狀態空間,一個10維變數,如下:

(2) 動作空間,使用了連續函數來決定位寬,離散的位寬如下:

(3) 回饋,利用硬體加速器來獲取延遲和能量作為回饋訊號,以指導Agent滿足資源約束。
(4) 量化,直接使用線性量化方法,其中s是縮放因子,clamp是截斷函數。

c的選擇是計算原始分布和量化後分布的KL散度,這也是很多框架中的做法。

(5) 獎勵函數,在所有層被量化過後,再進行1個epoch的微調,並將重訓練後的驗證精度作為獎勵訊號。

(6)代理,使用了深度確定性策略梯度(DDPG)方法。
下面我們看實驗結果,這是延遲約束量化下的結果。

上圖是MobileNet-V1/V2模型在邊緣端和雲端設備上的實驗結果,與固定的8bit量化方法相比,分別取得了1.4倍到1.95倍的加速。

上圖分別是邊緣端和雲端設備上MobileNet-V1各個網路層的量化特點,可以發現在邊緣端設備上depthwise卷積有更少的bits,pointwise有更多,在雲端則是完全相反。這是因為雲設備具有更大的記憶體頻寬和更高的並行性,而depthwise就是記憶體受限的操作,pointwise則是計算受限的操作,MobileNet-V2上能觀察到同樣的特點。
另外還有能量約束和模型大小約束的結果,讀者可以讀原始論文獲取細節。
[1] Wang K, Liu Z, Lin Y, et al. HAQ: Hardware-Aware Automated Quantization with Mixed Precision[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 8612-8620.
更多相關內容感興趣請移步有三AI知識星球。

3 蒸餾學習
人類學習都需要一個經驗更加豐富的老師引導,這一思想也可以更自然地遷移到深度學習模型的訓練上,即知識蒸餾(Knowledge Distilling)技術,由此引發了很多的相關研究,大佬雲集。下面是Hinton研究組最早期的經典方法。
有三AI知識星球-網路結構1000變
Knowledge Distilling

知識蒸餾(Knowledge Distilling)是一項重要的模型壓縮技術,它將Teacher模型的知識遷移到了Student模型上,有著很廣泛的應用。
作者/編輯 言有三
知識蒸餾法包含了一個大模型,也被稱為teacher模型,一個小模型,也被稱為student模型,teacher模型和student模型的訓練是同時進行的。
Hinton最早在文章「Distilling the knowledge in a neural network」中提出了這個概念,核心思想是一旦複雜網路模型訓練完成,便可以用另一種訓練方法從複雜模型中提取出來更小的模型。
「蒸餾」的難點在於如何縮減網路結構但保留有效資訊,文中以softmax分類為例子,T就是一個常量參數:

當T=1時,這就是softmax的定義,當T>1,稱之為soft softmax,T越大,因為Zk產生的概率差異就會越小。
文中提出這個方法用於生成軟標籤,然後將軟標籤和硬標籤同時用於新網路的學習。當訓練好一個模型之後,模型為所有的誤標籤都分配了很小的概率。然而實際上對於不同的錯誤標籤,其被分配的概率仍然可能存在數個量級的懸殊差距。這個差距,在softmax中直接就被忽略了,但這其實是一部分有用的資訊。文章的做法是先利用softmax loss訓練獲得一個大模型,然後基於大模型的softmax輸出結果獲取每一類的概率,將這個概率,作為小模型訓練時的標籤,網路結構如上圖。真實的損失函數包含了硬標籤(hard label)和軟標籤(soft label)兩部分。
MNIST和JAT數據集上的結果都驗證了該方法的有消性,如下圖:


[1] Hinton G, Vinyals O, Dean J. Distilling the knowledge in a neural network[J]. arXiv preprint arXiv:1503.02531, 2015.