ICCV2019 | 港科大、清華與曠視提出基於元學習的自動化神經網路通道剪枝網路

AMiner学术头条發表於2019-11-18
MetaPruning:Meta Learning for Automatic Neural Network Channel Pruning

論文作者:Zechun Liu , Haoyuan Mu ,Xiangyu Zhang ,Zichao Guo ,Xin Yang ,Tim Kwang-Ting  Cheng , Jian Sun(香港科技大學,清華大學,曠視科技等)

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

開源地址:https://github.com/liuzechun/MetaPruning

前言

本文將對ICCV2019會議論文《MetaPruning:Meta Learning for Automatic Neural Network Channel Pruning》進行解讀,這篇論文在神經網路壓縮領域的通道剪枝方面有所創新。作者基於元學習(meta learning)方法,首先訓練了一個PruningNet網路,可為給定目標網路的任何裁剪結構生成權重係數,然後採用進化過程通過不同約束條件來搜尋效能好的剪枝網路,並且由於權重由PruningNet生成,不需要在搜尋過程中進行任何微調。與當前最新的剪枝演算法比較,作者所採用的演算法在MobileNet V1 / V2和ResNet上有非常好的表現。

相關工作

通道剪枝(Channel Pruning)

通道剪枝是一種有效的神經網路壓縮/加速方法,在業界已廣泛使用剪枝方法包括三個階段:訓練大型的超引數化網路,修剪不太重要的權重或通道,微調或重新訓練修剪的網路。其中,第二階段是關鍵,實現逐層的迭代修剪和快速微調或權重重構,以保持精度【Jose M Alvarez and Mathieu Salzmann. Learning the number of neurons in deep networks. In Advances in Neural Information Processing Systems, pages 2270-2278, 2016】。

在權重修剪時, Han等修剪單個權重以壓縮模型尺寸【Song Han, Huizi Mao, and William J Dally. Deep compression:Compressing deep neural networks with pruning】。但是,權重修剪會導致非結構化的稀疏濾波器,通用硬體幾乎無法加速這種結構。近年來,Hu和Li等聚焦於CNN中的通道修剪,而不是單個權重,該方法刪除了整個權重過濾器【Hengyuan Hu, Rui Peng, Yu-Wing Tai, and Chi-Keung Tang. Network trimming:A data-driven neuron pruning approach towards efficient deep architectures. arXiv preprint arXiv:1607.03250, 2016】。

傳統的通道剪枝方法主要依靠資料驅動的稀疏度約束【Zehao Huang and Naiyan Wang. Data-driven sparse structure selection for deep neural networks. In Proceedings of the European Conference on Computer Vision (ECCV), pages 304-320, 2018】或人為設計的策略【Yihui He, Xiangyu Zhang, and Jian Sun. Channel pruning for accelerating very deep neural networks. In Proceedings of the IEEE International Conference on Computer Vision, pages 1389-1397, 2017】。在大多數傳統的通道剪枝中,需要人為設定每一層的壓縮率,比較耗時,且容易陷入次優解。

AutoML(Automated Machine Learning)

AutoML方法基於反饋迴圈【Jiahui Yu, Linjie Yang, Ning Xu, Jianchao Yang, and Thomas Huang. Slimmable neural networks. arXiv preprint arXiv:1812.08928, 2018】或強化學習【Yihui He, Ji Lin, Zhijian Liu, Hanrui Wang, Li-Jia Li, and Song Han. Amc:Automl for model compression and acceleration on mobile devices. In Proceedings of the European Conference on Computer Vision (ECCV), pages 784-800, 2018】,以迭代模式自動修剪通道。與傳統的通道剪枝方法相比,AutoML方法節省人力,有助於減輕通道剪枝中的超引數所需的手動工作,並且可以直接優化如硬體latency(推理時延)之類的指標。

元學習(Meta Learning)

元學習是指通過觀察不同的機器學習方法如何執行各種學習任務來學習。權重預測是指神經網路的權重是由另一個神經網路預測的,而非直接學習【David Ha, Andrew Dai, and Quoc V Le. Hypernetworks. arXiv preprint arXiv:1609.09106, 2016】。元學習可用於零樣本學習(few/zero-shot learning)【Sachin Ravi and Hugo Larochelle. Optimization as a model for few-shot learning. 2016】和轉移學習【Yu-Xiong Wang and Martial Hebert. Learning to learn:Model regression networks for easy small sample learning. In European Conference on Computer Vision, pages 616-634. Springer, 2016】。

神經網路架構搜尋(Neural Architecture Search)

神經網路架構搜尋通過強化學習【Barret Zoph and Quoc V Le. Neural architecture search with reinforcement learning. arXiv preprint arXiv:1611.01578,2016】,遺傳演算法【Lingxi Xie and Alan Yuille. Genetic cnn. In Proceedings of the IEEE International Conference on Computer Vision, pages 1379-1388, 2017.】或基於梯度【Bichen Wu, Xiaoliang Dai, Peizhao Zhang, Yanghan Wang, Fei Sun, YimingWu, Yuandong Tian, Peter Vajda, Yangqing Jia, and Kurt Keutzer. Fbnet:Hardware-aware efficient convnet design via differentiable neural architecture search. arXiv preprint arXiv:1812.03443, 2018.】的方法找到最佳的網路結構和超引數。作者將訓練PruningNet通過權重預測來做連續的通道修剪。

整體架構

如下圖所示,MetaPruning有兩個階段:(1)訓練一個PruningNet:在每次迭代過程中,隨機地生成網路編碼向量(即每層中的通道數),剪枝網路也相應地構建。PruningNet將上述網路編碼向量作為輸入,來生成剪枝網路的權重。(2)搜尋最佳剪枝網路:通過改變網路編碼向量來構造許多剪枝網路,並利用PruningNet預測的權重對驗證集的優劣進行了評估,搜尋時無需微調或重新訓練。

ICCV2019 | 港科大、清華與曠視提出基於元學習的自動化神經網路通道剪枝網路

MetaPruning具有如下優點:

  • 與傳統剪枝方法相比,MetaPruning無需人工調超引數,並可直接給定優化指標。

  • 與其他AutoML方法相比,MetaPruning能方便搜尋到所需結構,而無需手動調整強化學習超引數。

  • 採用元學習修剪類似於ResNet結構的“快捷通道”(shortcuts)。

方法

通道剪枝問題描述 

通道剪枝問題用公式表示為:

ICCV2019 | 港科大、清華與曠視提出基於元學習的自動化神經網路通道剪枝網路

在此公式中,A是剪枝前的網路,需嘗試找到剪枝網路的第1層到第L層的通道寬度(c_1, c_2,····, c_l),使訓練後的權重有最小的損失,同時C滿足相應的約束(FLOPs或者latency)。為此,作者構建一個PruningNet元網路,可通過驗證集來快速評估所有可能的剪枝網路結構。 然後採用搜尋方法(作者採用進化演算法)來搜尋最佳的剪枝網路。

PruningNet訓練

以前的剪枝方法將通道修剪問題分解為子問題,即逐層修剪不重要的通道或新增稀疏正則化。考慮整個被修剪的網路結構來執行通道修剪任務,有利於找到用於剪枝的最佳解決方案,並且可以解決“shortcuts”通道的修剪問題。而且研究表明剪枝後的權重與剪枝後的網路結構相比並不重要【Zhuang Liu, Mingjie Sun, Tinghui Zhou, Gao Huang, and Trevor Darrell. Rethinking the value of network pruning. arXiv preprint arXiv:1810.05270, 2018】。從這個角度,作者認為可以直接預測最佳剪枝網路,而無需迭代確定權重過濾器。PruningNet是一個元網路,將一個網路編碼向量(c_1, c_2,····, c_l)作為輸入,輸出剪枝網路的權重,如下:

ICCV2019 | 港科大、清華與曠視提出基於元學習的自動化神經網路通道剪枝網路

如下圖所示,PruningNet塊由兩個全連線層組成,在前向傳遞中,PruningNet將網路編碼向量作為輸入,並生成權重矩陣。同時,構建剪枝網路,並使每層中的輸出通道寬度等於網路編碼向量中的元素。修剪生成的權重矩陣以匹配修剪網路中輸入和輸出通道的數量。如給定一批輸入影像,就可以使用上述生成的權重來計算修剪網路的損失。

在後向傳遞過程中,並不更新剪枝網路的權重,而是計算PruningNet權重的梯度。由於PruningNet中全連線層的輸出與PrunedNet中先前卷積層的輸出之間的reshape以及convolution也是可微的,因此可以通過鏈式規則計算PruningNet中權重的梯度。

ICCV2019 | 港科大、清華與曠視提出基於元學習的自動化神經網路通道剪枝網路

在每次迭代中,作者將網路編碼向量隨機化。PruningNet通過將向量作為輸入來生成權重。在每次迭代中再調整網路編碼向量,PruningNet可學會為各種剪枝的網路生成不同的權重。

ICCV2019 | 港科大、清華與曠視提出基於元學習的自動化神經網路通道剪枝網路

如上圖(a)所示為與Pruned Network連線的PruningNet的網路結構。 PruningNet和Pruned Network通過網路編碼向量的輸入以及影像的小批量進行聯合訓練。(b)對PruningNet塊生成的權重矩陣進行reshape和crop操作。

剪枝網路搜尋

在PruningNet訓練後,可以將輸入網路編碼到PruningNet中,生成相應的權重,並在驗證集上進行評估,來獲取每個可能剪枝網路的準確度。由於網路編碼向量數量巨大,為了找到約束條件下較高準確度的剪枝網路,作者使用進化搜尋,同時兼顧任何軟約束或硬約束。

每個剪枝網路被編碼成一個包含每層通道數量的向量,稱為“剪枝網路的基因”(genes of pruned networks)。在嚴格約束條件下,首先隨機挑選多個基因,通過評估獲得相應剪枝網路的準確度。然後選擇準確度top k個基因,以產生具有變異(mutation)和交叉(crossover)的新基因。變異通過隨機改變基因中元素的比例來實現,交叉通過隨機重組兩個親本基因中的基因以產生後代。經過多次迭代上述過程,可獲得滿足約束條件的基因,同時獲得最高的準確度。

實驗

MobileNets、ResNet網路的處理

1.MobileNet V1

MobileNet V1沒有shortcut結構。為此,作者構造了等於MobileNet v1中卷積層數的PruningNet塊,並且每個PruningNet塊都由兩個串聯的全連線層組成。通過修剪原始權重矩陣的左上部分,來匹配輸入和輸出通道,在不同的迭代中,生成了不同通道寬度的編碼向量。

2.MobileNet V2

每個階段都從匹配兩個階段之間的維度bottleneck block開始。如含有shortcut結構,則將輸入特徵圖與輸出特徵圖相加,為了修剪這種結構,會生成兩個網路編碼向量,一個編碼整個階段的輸出通道以shortcut中的通道,另一個編碼每個block的中間通道。在PruningNet中,先將網路編碼向量解碼為每個block的輸入,輸出和中間通道壓縮比,然後生成block中相應的權重矩陣。

3.ResNet

ResNet與MobileNet v2結構相似,只是中間層的卷積型別、下采樣塊和每個階段的塊數不同,因此,處理過程相同。

FLOPs約束下的剪枝

如下表所示為MetaPruning的效果。MobileNet V1上,在0.25x時,MetaPruning提升了6.6%的準確度。MobileNet V2上,當約束到43M FLOPs時,MetaPruning提升了3.7%的準確度。

ICCV2019 | 港科大、清華與曠視提出基於元學習的自動化神經網路通道剪枝網路

ICCV2019 | 港科大、清華與曠視提出基於元學習的自動化神經網路通道剪枝網路

在ResNet-50上,MetaPruning也明顯優於統一基準和其他傳統修剪方法。

ICCV2019 | 港科大、清華與曠視提出基於元學習的自動化神經網路通道剪枝網路

作者也與AutoML剪枝方法做了對比,結果如下表所示。與AMC【Yihui He, Ji Lin, Zhijian Liu, Hanrui Wang, Li-Jia Li, and Song Han. Amc:Automl for model compression and acceleration on mobile devices. In Proceedings of the European Conference on Computer Vision (ECCV), pages 784-800, 2018】相比,MetaPruning在MobileNet V1、MobileNet V2分別有0.1%、0.4%的提升,甚至FLOPs更低。此外,MetaPruning擺脫了手動調整強化學習超引數的麻煩。

ICCV2019 | 港科大、清華與曠視提出基於元學習的自動化神經網路通道剪枝網路

latency約束下的剪枝

首先估計出在目標裝置上執行不同輸入和輸出通道寬度的卷積層的latency,構建一個look-up表。然後從這個look-up表中計算得到構建網路的latency。如下表所示,在MobileNet V1和MobileNet V2上, MetaPruning剪枝網路在具有相同latency下具有更高的準確度。

ICCV2019 | 港科大、清華與曠視提出基於元學習的自動化神經網路通道剪枝網路

ICCV2019 | 港科大、清華與曠視提出基於元學習的自動化神經網路通道剪枝網路

剪枝網路的視覺化

作者發現瞭如下圖所示現象:(1)當向下取樣方式為stride=2的深度卷積,需用更多通道來補償特徵圖解析度的下降,而MetaPruning自動學會了在下采樣時儲存更多的通道。(2)MetaPruning方法學會在最後階段中修剪較少的shortcut通道數,如145M網路在最後階段保留的通道數與300M網路的相似,而前階段修剪了更多通道數。

ICCV2019 | 港科大、清華與曠視提出基於元學習的自動化神經網路通道剪枝網路

ICCV2019 | 港科大、清華與曠視提出基於元學習的自動化神經網路通道剪枝網路

消融實驗

元學習中的權重預測機制可以有效地使不同剪枝結構的權重去相關,從而為PruningNet獲得更高的準確度。

ICCV2019 | 港科大、清華與曠視提出基於元學習的自動化神經網路通道剪枝網路

總結

作者介紹了用於通道剪枝的MetaPruning,它具有以下優點:1)與統一剪枝基準以及其他的通道剪枝方法(包括傳統的和最新的AutoML)相比,其具有更好的效能;2)可以針對不同的約束條件靈活優化,而無需引入額外的超引數;3)可以有效處理類似ResNet的結構;4)整個過程非常高效。

相關文章