【神經網絡壓縮加速之剪枝二】Pruning Filters for Efficient ConvNets

Abstract

神經網絡的廣泛應用伴隨着計算量的增加和參數存儲成本. 最近的研究工作在不損害原來準確度的基礎上,通過剪枝和壓縮不同層間的權重進行網絡壓縮. 然而,基於幅值的剪枝(magnitude-based pruning)僅能夠減少全連接層的參數,而由於修剪網絡中的不規則稀疏性,可能無法充分降低卷積層中的計算成本. 

我們提出了一個加速的剪枝方法,即修剪那些被認爲對輸出準確度有很小影響的卷積核.該方法通過刪除網絡中的整個卷積核及其連接特徵圖,可顯着降低計算成本. 與修剪權重相反,此方法不會導致稀疏連接模式. 因此,它不需要稀疏卷積庫的支持,並且可以與現有的高效BLAS庫一起用於密集矩陣乘法.

即使是簡單的卷積核修剪技術, 在CIFAR-10上VGG-16的推理成本最多可降低34%; ResNet-110的推理成本最多可降低38%,同時通過重新訓練網絡來恢復接近原始精度.


3. PRUNING FILTERS AND FEATURE MAPS

如下圖Figure 1所示, 輸入特徵圖爲x[i], 輸出特徵圖爲x[i+1], 3D卷積核F[i,j], 2D卷積核K. 

在進行卷積核剪枝時,即卷積核F[i,j]被修剪掉(F[i,j]=n[i]*k*k, 代表n[i]個通道的k*k卷積核被裁減), 這樣導致輸出特徵圖x[i+1]少一個通道, 這也同時導致下一個3D卷積核少一個通道.

在這一節中一共分爲四個部分進行了討論:

  1. 確定在單個層中修剪的卷積核
  2. 確定單層修剪時的敏感性
  3. 修剪多層卷積核
  4. 重新訓練修剪的網絡以保持準確性

3.1 確定在單個層中修剪的卷積核

文章使用 l1-norm決定卷積核的重要性,簡單說就是將3D卷積核F[i,j] (n[i]個k*k卷積核, 其中n[i]爲輸入特徵圖的通道數)中的參數取絕對值並相加求和, 然後修剪掉和值最小的或者最小的m個3D卷積核.

下圖是修剪流程:

3.2 確定單層修剪時的敏感性

這一節對VGG16在CIFAR10上的仿真結果進行分析.

如下圖Figure 2(a)顯示的是VGG16不同卷積層中每個3D卷積核的參數絕對值之和. 可以看到,淺層網絡的值偏大且分佈區間小,深層網絡的值分佈範圍大.

如下圖Figure 2(b)顯示的是裁剪VGG16不同卷積層的比率增加時,分類準確度的變化情況. 可以看到,淺層網絡只能裁剪小比率,深層網絡可以裁剪較大比率(60%)而準確度保持不變.(Table 2也證實實際裁剪了深層的卷積核)

如下圖Figure 2(c)顯示的是將裁剪的VGG16網絡re-train,裁剪深層網絡較大比率時同樣可以恢復到原來準確度!!

我的疑問: 其他神經網絡在不同數據集上的統計結果是否和下圖一致???


4. 實驗

下圖是總的實驗結果:

在這一節中一共分爲五個部分進行了實驗分析:

  1. VGG-16 ON CIFAR-10
  2. RESNET-56/110 ON CIFAR-10
  3. RESNET-34 ON ILSVRC2012
  4. 與修剪隨機卷積核和最大卷積核的比較

4.4 與修剪隨機卷積核和最大卷積核的比較

將本文的方法與修剪隨機卷積核和最大卷積核進行比較. 如上圖8所示,在不同的修剪率下,對大多數網絡層的修剪效果要優於修剪隨機卷積核.  例如,對於所有層,當修剪率爲90%時, 最小的卷積核修剪比隨機過濾器修剪具有更好的精度.

l1範數最大的卷積核修剪的精度隨修剪率的增加而迅速下降,這表明使用“ l1”範數較大卷積核的重要性.


Reference Paper: Pruning Filters for Efficient ConvNets

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章