VALSE 2018年度進展報告 | 深度神經網路加速與壓縮

VALSE 2018年度進展報告 | 深度神經網路加速與壓縮

來自專欄 計算機視覺life

2018年4月下旬在大連舉辦的VALSE 2018大會上,中科院自動化研究所的老師介紹了深度神經網路加速和壓縮最近一年的進展和趨勢。

以下內容是在PPT的基礎上進行的整理,並加入了個人理解部分,不完全代表講者本身觀點。

研究背景

如下圖所示,是常用的幾種卷積神經網路計算複雜度的情況。我們發現網路層數越來越多,計算複雜度也越來越大。

過去我們的深度神經網路大部分都是在GPU上或高性能的CPU上做計算,對加速壓縮的需求沒有那麼強烈。但當深度神經網路在應用到具體場景時,有很多情況下必須在智能手機、穿戴設備等嵌入式設備上使用。這些嵌入式設備對模型體積、計算性能、功耗等方面都有比較嚴格的要求,這就限制了上述對計算性能要求較高的深度神經網路模型的應用。

基於此,深度神經網路加速與壓縮的研究目的是:在保證現有模型的性能基本不變的前提下,採用一些方法能夠有效的大幅減少計算量、降低模型的體積,那就再好不過了。

加速與壓縮年度學術進展

深度神經網路加速與壓縮主要有以下幾種方法:Low-Rank、Pruning、Quantization、Knowledge Distillation、Compact Network Design。如下圖所示是最近一年幾個的頂級會議收錄的加速與壓縮方面的論文情況。可以看到Pruning、Quantization是該領域研究的熱點。

下面分別介紹。

1、Low-Rank

卷積神經網路主要的計算量就在於卷積計算。卷積計算本質就是矩陣分析問題。利用SVD可以有效的減少低維矩陣的運算量。所以早期MSRA在TPAMI上發表了SVD進行網路加速的方法。而對於高維的情況,一般使用CP分解、Tucker分解、Tensor Train分解、Block Term分解方法。

不過,用矩陣分解進行模型壓縮和加速的工作越來越難做了。原因是:矩陣分解是一種非常成熟的方法,方法直觀顯而易見,比較容易做,另外就是現在很多網路都是1x1的小的卷積,已經比較快了,用矩陣分解很難進行加速和壓縮。

2、Pruning

該方法就是把一些網路連接剪掉,剪掉後網路複雜度、模型大小就會降低很多。早期的工作有一種隨機剪枝方法,對硬體非常不友好,而且不一定能夠起到較好的網路壓縮的效果。而最近大家採用比較多的是結構化的、濾波、梯度等prunning方法。

下面分別展開簡單介紹一下。

ICML2017的一篇論文利用組稀疏的方法來對權重進行稀疏化,再加上一些exclusive Sparsity可以得到一個較好的剪枝結果。

還有一種就是對feature map上做一些pruning的工作,ICCV2017的一個工作是給每個feature map加了尺度因子,根據尺度因子大小進行pruning,剪掉值比較小的從而對channel進行簡化,實現網路的瘦身。

前面都是對inference進行的pruning,能否在training的時候引入pruning,加快training的過程?

ICML2017的一個工作是在training的BP過程中對梯度幅值進行了分析,如果幅值比較小,就去掉,簡化了BP的傳播,從而速度更快,結果顯示僅僅更新1-4%的權值就可以達到接近原始的效果。

3、Quantization

量化主要分為以下幾種方法:

分別展開講一下。

低比特量化函數通常是不連續的,這樣求梯度會比較困難,AAAI2018的一個工作把低比特量化轉化為ADMM可以優化的一個目標函數。

AAAI2018還有一個工作就是利用hashing求解量化的二值權重:

前面都是考慮對權重的量化,能否考慮將權重和activation一起量化?

受到兩步hashing的啟發,CVPR2018的一個工作進行了兩步量化工作,第一步先對activation進行量化,然後第二步再對權重進行量化。

前面都是對inference過程的量化,同樣training過程也可以量化,如下是NIPS2017 的一個工作Flexpoint,其核心思想是把指數項進行共享,把浮點問題轉化為尾數的整數定點運算,從而加速訓練過程。

很多時候訓練深度神經網路會用到分散式計算來加速訓練。但分散式計算時有個問題,每個分散式伺服器節點要和中心伺服器做一個大量的梯度信息的傳輸,這會受到帶寬的限制。NIP2017的這個工作把傳輸的梯度展開為一個ternay梯度來解決。

4、Knowledge Distillation

Knowledge Distillation最早是Hinton大神做的一個工作,還有後來的FitNets。Knowledge Distillation存在的兩個關鍵問題是:第一,如何定義知識?第二:怎樣優化損失函數來度量teacher和student網路的相似度?

下面是Knowledge Distillation方面的幾個最新的進展。

下圖是是該領域幾種方法的對比:

5、Compact Network Design

前面介紹的所有方法是針對原有的比較大型的網路的量化、剪枝等進行加速和壓縮。那麼能否從一開始就設計一個又小又快又好的網路呢?這就是緊緻網路設計的目的。

這裡主要介紹三個工作:

Google 在17年底和18年連續推出了的MobileNetV1和MobileNetV2。其核心如下圖所示:

shuffleNet也是基於類似原理,把1x1卷積進行分組計算,但這會使得不同channel間信息交流比較少,因此加了shuffle隨機擾亂的過程,增加channel間信息的交流。

上面幾種方法的比較結果:

未來研究趨勢

趨勢1:Non-fine-tuning or Unsupervised Compression

目前大部分加速壓縮方法都需要一個fine-tuning過程,還得有一定量的原始帶標籤的訓練樣本,這在很大程度上限制了使用場景。未來研究趨勢是不需要fine-tuning或者不需要監督的方法。

趨勢2:Self-adaptive Compression

目前加速和壓縮過程中通常涉及到很多的經驗參數。未來研究趨勢就是減少經驗參數的使用,自適應進行壓縮加速,提高泛化能力。

趨勢3: Network Acceleration for other tasks

目前大部分加速壓縮方法還是集中在物體分類問題上,未來的研究趨勢是逐漸擴展到其他領域(如物體分割)。

趨勢4: Hardware-Software Co-design

加速和壓縮演算法與硬體設計關係非常緊密,未來軟硬體的協同設計是一個趨勢。

趨勢5: Binarized Neural Networks

二值神經網路的研究越來越成熟,將來會成為一個更熱門的研究方向。

溫馨提示:首發於微信公眾號:計算機視覺life。PPT可以在官網下載,也可以在公眾號菜單欄下回復:加速壓縮,即可獲取。原文鏈接:VALSE 2018年度進展報告 | 深度神經網路加速與壓縮

推薦閱讀:

TAG:深度學習DeepLearning | 神經網路 | 計算機視覺 |