剪枝是一種幫助神經網路實現規模更小、效率更高的深度學習方法。這是一種模型優化技術,它刪除權重張量中不必要的值,從而使得壓縮後的神經網路執行速度更快,網路訓練過程中的計算成本也有所降低。在將模型部署到手機等邊緣裝置上時,剪枝的作用更加明顯現。
本篇精選了神經網路剪枝領域的一些研究論文,供大家學習參考。
論文 1:Pruning from Scratch (2019)
作者提出了一種從頭開始剪枝的網路剪枝流程。他們在 CIFAR10 和 ImageNet 資料集上對多個壓縮分類模型進行了試驗,結果表明該流程降低了正常剪枝方法的預訓練開銷,同時提高了網路的準確率。
論文連結:https://arxiv.org/pdf/1909.12579.pdf
下圖展示了傳統剪枝流程的三個階段:預訓練、剪枝和微調。
這篇論文提出的剪枝技術包括可基於隨機初始化權重學得的新的剪枝流程。通道重要性(channel importance)則可通過關聯標量門控(scalar gate)值和每個網路層來學得。
優化通道重要性,可在稀疏性正則化的情況下提高模型效能。在此過程中,隨機權重並未得到更新。然後,基於給定資源約束,使用二分搜尋策略確定剪枝後模型的通道數配置。
下表展示了模型在不同資料集上的準確率:
論文 2:Adversarial Neural Pruning (2019)
這篇論文主要探討在遇到對抗擾動時網路隱特徵的失真問題。該論文提出的方法是:學習貝葉斯剪枝掩碼,來抑制較高階的失真特徵,從而最大化其面對對抗擾動的穩健性。
論文連結:https://arxiv.org/pdf/1908.04355.pdf
作者考慮了深度神經網路中隱特徵的脆弱性。該方法提出剪除脆弱的特徵,同時保留穩健的特徵。這一過程可通過在貝葉斯框架中對抗地學習剪枝掩碼來完成。
對抗神經剪枝(Adversarial Neural Pruning,ANP)結合了對抗訓練和貝葉斯剪枝方法。該論文提出的新模型及其基線模型是:
標準的卷積神經網路(Standard)
使用貝塔-伯努利 dropout(beta-Bernoulli dropout)的 base 網路,即貝葉斯剪枝(BP)
對抗訓練網路(AT)
使用貝塔-伯努利 dropout 的對抗神經剪枝(ANP)
使用脆弱抑制損失(vulnerability suppression loss)進行正則化得到的對抗訓練網路(AT-VS)
使用脆弱抑制損失進行正則化得到的對抗神經剪枝網路(ANP-VS)
下表展示了模型的效能:
論文 3:Rethinking the Value of Network Pruning (ICLR 2019)
這篇論文提出的網路剪枝方法分為兩類,目標剪枝模型的架構由人類或剪枝演算法來決定。在實驗中,作者對比了從頭開始訓練剪枝模型和基於繼承權重進行微調得到的剪枝模型的結果,該對比針對預定義方法和自動化方法。
論文連結:https://arxiv.org/pdf/1810.05270v2.pdf
下圖展示了使用基於 L1 範數的濾波器剪枝的預定義結構化剪枝所得到的結果。每一層都使用較小的 L1 範數剪掉一定比例的濾波器。「Pruned Model」列是用於配置每個模型的預定義目標模型列表。我們可以看到,每一行中,從頭開始訓練的模型效能至少與微調模型持平。
如下表所示,ThiNet 貪婪地剪去了對下一層的啟用值影響最小的通道。
下表展示了基於迴歸的特徵重建方法的結果。該方法最小化了下一層的特徵圖重建誤差,從而實現對通道剪枝。該優化問題可以通過 LASSO 迴歸解決。
至於 Network Slimming,在訓練過程中,對批歸一化層中的通道級縮放因子施加 L1 稀疏性。之後,利用較低的縮放因子對通道剪枝。由於通道縮放因子經過跨層對比,因此該方法能夠得到自動發現的目標架構。
論文 4:Network Pruning via Transformable Architecture Search (NeurIPS 2019)
這篇論文提出了直接對具備靈活通道數和層數的網路應用神經架構搜尋。實現剪枝網路的損失最小化有利於學習通道數。剪枝網路的特徵圖由基於概率分佈取樣的 K 個特徵圖片段組成,通過反向傳播將損失傳輸到網路權重和引數化分佈。
論文連結:https://arxiv.org/pdf/1905.09717v5.pdf
剪枝網路的寬度和深度是基於每個分佈規模的最大概率得來的,然後通過從原始網路進行知識遷移來獲取這些引數。論文作者在 CIFAR-10、CIFAR-100、ImageNet 資料集上評估了該模型。
該剪枝方法包含三個步驟:
用標準分類訓練步驟訓練未經剪枝的大規模網路;
通過 Transformable Architecture Search (TAS) 搜尋小規模網路的深度和寬度,旨在搜尋最佳規模的網路。
用簡單的知識蒸餾(KD)方法,將未經剪枝網路的資訊遷移到搜尋得到的小規模網路中去。
下表對比了不同 ResNet 模型經過不同剪枝演算法後,所得到的模型在 ImageNet 資料集上的各自表現:
論文 5:Self-Adaptive Network Pruning (ICONIP 2019)
這篇論文提出通過自適應網路剪枝方法(SANP)降低 CNN 的計算成本,通過對每個卷積層引入 Saliency-and-Pruning Module (SPM) 來實現,SPM 模組可以學習預測顯著性分數,並對每個通道剪枝。SANP 會根據每個層和每個樣本決定對應的剪枝策略。
論文連結:https://arxiv.org/pdf/1910.08906.pdf
根據下面的架構圖,SPM 模組嵌入在卷積網路的每個層中。該模組可以基於輸入特徵去預測通道的顯著性分數,然後為每個通道生成對應的剪枝決策。
對於剪枝決策為 0 的通道,則跳過卷積運算,然後利用分類目標和成本目標聯合訓練骨幹網路和 SPM 模組。計算成本取決於每一層的剪枝決策。
下表展示了該方法的一些結果:
論文 6:Structured Pruning of Large Language Models (2019)
這篇論文提出的剪枝方法基於低秩分解和增強拉格朗日 L_0 範數正則化(augmented Lagrangian 10 norm regularization)的原理。L_0 正則化放寬了結構化剪枝帶來的約束,而低秩分解則保留了矩陣的密集結構。
論文連結:https://arxiv.org/pdf/1910.04732.pdf
正則化讓網路去選擇待移除的權重。權重矩陣被分解為兩個較小的矩陣,然後設定這兩個矩陣之間的對角線掩碼(diagonal mask)。在訓練過程中,使用 L_0 正則化對該掩碼執行剪枝。增強拉格朗日方法用於控制模型的最終稀疏程度, 論文作者將該方法叫做 FLOP (Factorized L0 Pruning)。
論文使用的字元級語言模型用在 enwik8 資料集的實驗中,該資料集包含選取自維基百科的 100M 資料。作者在 SRU 和 Transformer-XL 模型上評估了 FLOP 方法。下表展示了部分結果:
以上就是本次為大家介紹的幾種剪枝技術,本文介紹的論文也有程式碼實現,大家可以親自測試。