模型壓縮:識別感知的深度神經網路通道裁剪 | 論文分享

極驗發表於2019-01-10

通道裁剪是深度模型壓縮的主要領域之一。現存的裁剪方法有的用通道的稀疏約束來訓練模型,有的用最小化預訓練模型和壓縮模型間的特徵圖重建誤差。兩種策略都有一些限制:前者計算代價高而且難以收斂,後者優化重建誤差但忽視了通道的識別能力。本文提出了一個簡單而有效的方法,稱作識別感知通道裁剪,用於選擇真正對識別能力有貢獻的通道。

本文介紹的方法是開源模型壓縮框架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誤差。

本文地址:https://arxiv.org/pdf/1810.11809.pdf

相關文章