基於連接重要性的稀疏剪枝

"SNIP: single shot network pruning based on connection sensitivity" 這篇文章提出了基於權重連接重要性(saliency)的剪枝方法,能夠在深度模型訓練之前(初始化階段),通過mini-batch的多次採樣,決定不同權重連接的重要性,進而根據剪枝目標生成剪枝模板(prunning mask)、應用於稀疏剪枝,從而節省了相對耗時的剪枝-微調迭代週期。

通常,深度網絡的稀疏剪枝可以視作如下優化問題,即通過對參數集合的L0 範數施加不等式約束,確保模型收斂:

網絡中第個權重連接的重要性(saliency)記作sj,則可按權重wj 的幅度或Hessian矩陣元素決定sj 的大小: 

此外,文章提出了一種新的saliency 衡量準則,即損失函數關於權重連接的梯度。首先,剪枝優化問題重新定義如下:

其中矩陣c 表示深度網絡的連接模板,數值1表示連接,數值0表示斷接。cj 從1變爲0所引起的loss變化,可以反映權重連接的重要性,並進一步等價於loss關於cj 的梯度:

在剪枝階段,爲了跨層比較sj,梯度gj 的大小需要做標準化處理,然後根據剪枝目標可決定剪枝模板:

基於新定義的saliency,整體剪枝流程如下圖所示。在初始化階段完成單次操作之後,便可以按照常規方式訓練剪枝後模型,避免了耗時的剪枝-微調迭代過程:

文章最後在Tiny-ImageNet等數據集上做了實驗驗證,具體見實驗部分

Paper地址:https://arxiv.org/abs/1810.02340

GitHub地址:https://github.com/gahaalt/ICLR-SNIP-pruning

GitHub地址:https://github.com/mi-lad/snip

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