通道裁剪是深度模型壓縮的主要領域之一。現存的裁剪方法有的用通道的稀疏約束來訓練模型,有的用最小化預訓練模型和壓縮模型間的特徵圖重建誤差。兩種策略都有一些限制:前者計算代價高而且難以收斂,後者優化重建誤差但忽視了通道的識別能力。本文提出了一個簡單而有效的方法,稱作識別感知通道裁剪,用於選擇真正對識別能力有貢獻的通道。
本文介紹的方法是開源模型壓縮框架PocketFlow的裁剪方法之一。
相關研究
網路量化
Rastegari等人提出將網路中的引數量化為+1/-1。所提出的BWN和XNOR-Net可以在大規模資料集上達到能和對應全精度相媲美的準確度。在Dorefa-net中,CNN的高精度權重,啟用和梯度被量化為低位元位版本,帶來了資源和硬體能力需求的大量減少。通過引入0作為第三個量化值,三元權重網路TWNs能達到比二元神經網路更高的精度。
稀疏或低等級連線
為了減少神經網路儲存需求。Han等人提出零輸入或輸出連線的神經元能從神經網路中安全的移除。通過L1/L2正則化的幫助,權重在訓練中被推向0。隨後AlexNet的壓縮率通過剪枝、量化、哈夫曼編碼能達到1/35。考慮到引數重要性在剪枝過程中被改變,Guo等人提出動態網路手術。通過之後提出的使用稀疏約束訓練能達到更高的壓縮率。
通道裁剪
對比網路量化和稀疏連線,通道裁剪同時從網路中移除通道和相關過濾器。因此只需要一點工作就能很好地被現存深度學習庫支援。通道裁剪的關鍵問題是評估通道重要性。Li等人提出通過計算權重絕對值之和來測量通道重要性。Hu等人定義APoZ測量神經元的啟用。通過目標函式的稀疏正則化,基於訓練的方法能在訓練階段學習到壓縮模型。考慮到效率,重建方法將通道選擇問題轉換為重建損失的優化問題,並通過貪婪策略或LASSO迴歸來解決。
方法
使為訓練樣本,N代表樣本數量。給定一個L層CNN模型M,使為模型第l卷積層的引數。和為過濾器的高和寬;c和n代表輸入和輸出的通道數。和代表輸入的特徵圖和相應輸出特徵圖。為第i個樣本第k個通道的特徵圖。記為第k個輸入通道和第j個輸出通道對應的引數。第i個樣本第j個通道對應的特徵圖為: 給定預訓練模型M,通道裁剪的任務是裁剪W的冗餘通道,從而減少模型大小,加速運算。
為了選擇通道,本文介紹的變體:
如果則,則。||·||F代表Frobenius正則化。
動機
給定一個預訓練模型M,現存方法最小化M和裁剪模型的重建誤差:
為了增加中間層的識別能力,介紹對於深度網路中間層的額外損失。在本文中,我們均勻地插入P個識別感知損失。使為插入損失的層。
LP+1為最後一層L。對於第p個損失,我們在層中做通道裁剪,當p=1時。
構建識別感知損失
如圖1所示,每一個損失使用的輸出作為輸入特徵。為了使損失的計算更容易,本文在特徵圖上使用平均池化,為了加速收斂,在平均池化前使用batchnorm和ReLU,最終計算對於在層輸入特徵圖的損失。
代表層的輸出特徵圖,為第i個樣本的特徵圖。關於第p個loss的識別感知損失為:
I{·}是指示器函式。通過同時考慮交叉熵損失和重建損失,我們得到聯合損失函式:
最後對於識別感知的通道裁剪優化問題描述為:
識別感知的通道裁剪
通過在中間層加入P個損失,被提出的識別感知通道裁剪演算法如演算法1所示。從預訓練模型M開始,執行P+1個階段的通道裁剪。
用於通道選擇的貪婪演算法:
直接優化問題(7)是非常困難的,本文提出貪婪演算法解決。具體而言,首先移除所有通道,然後選擇真正對深度網路識別能力有貢獻的通道。使為被選擇通道的索引,期初未空集。如演算法2所示,一旦A被決定,根據被選擇的通道優化W,通過最小化如下問題:
通過優化。
停止條件
由於L是凸函式,L(Wt)將隨著演算法2中的迭代索引t單調下降。因此可以採取如下停止條件:
實驗
這一部分,本文經驗性的評價識別感知的通道裁剪。使用幾個state-of-the-art方法來作為基準,包括ThiNet、Channel pruning和Slimming。此外,對於提出的方法其他幾個變體也做了比較,包括DCP(使用裁剪率n的識別感知通道裁減),DCP-Adapt(使用停止條件的DCP),Random DCP(隨機選擇通道代替基於梯度測策略)。
本文在Pytorch上實現提出的方法。基於預訓練模型,應用本文方法選擇通道。在實踐中,通過網路深度選擇額外損失的數量P。具體的,在ResNet-50中插入3個損失,在VGG和ResNet-18中插入2個損失。
使用新增nesterov的SGD作為優化器,momentum和權重衰減設定為0.9和0.0001。設定為1.0。在CIFAR-10,使用大小為128的mini-batch微調400個epochs。學習率初始化為0.1,在epoch160和240處除以10。在ILSVRC-12我們微調60個epochs,mini-batch為256,學習率從0.01開始,在epoch36,48,54處除以10。
在CIFAR-10上的比較:
本文提出的方法在相同加速率上有最好的表現,DCP-Adapt裁剪的VGG網路比原與訓練模型降低了0.58%的測試誤差,並獲得了15.58倍的尺寸減少。
在ILSVRC-12上的比較:
為了驗證再大型資料集的有效性,本文使用該方法在ILSVRC-12資料集ResNet-50網路中實現2倍加速。本文方法比ThiNet在top-1中低0.81%誤差,在top-5中低0.51%誤差。對比channel pruning,降低了0.79%的top-5誤差。