---
# System prepended metadata

title: Deep Learning Model Pruning

---

# Deep Learning Model Pruning
因為本語義分割模型(UNet)應用於瑕疵檢測，需要即時的推論(inference)性能。
因此本研究利用網路剪枝，分析並剪枝(pruning)模型對於資料集不重要之權重，保留訓練後的權重並重新訓練(fine-tuning)網路。


## 方法
1. **L1 Filter Pruning** [ref](https://openreview.net/pdf?id=rJqFGTslg)
作者提出校小的網路權重對於該卷積層的輸出是沒有影響的，所以將每一卷積層權重排序並剪枝指定的比例，在保有一定準確率上減少模型大小(Size)。
3. **Similarity Pruning** [ref](https://www.sciencedirect.com/science/article/pii/S0893608019301273)
作者利用agglomerative hierarchical clustering將相似的特徵圖分群，並利用分群結果隨機保留權重，在重新訓練模型。
5. **Feature map Pruning with KL-divergence** [ref](https://arxiv.org/abs/1911.08114)
作者依序剪枝卷積層的各權重(filter)利用KL-dirvergence評估剪枝後模型與原始模型的預測結果分佈的差異。如果計算出來的值較大就表示該權重對於模型有較高的影響亦須要保留。

## 作法
利用上述做法可以獲得，每一卷積層權重的(filter)重要度排序，再設定剪枝比例剪枝較不重要的權重，推理剪枝後的驗證集性能(dice)，並再重新訓練該模型，模型性能得到最終結果。


## 結果與結論
### L1
![](https://i.imgur.com/RnnNaCX.png)

### Similarity Pruning
![](https://i.imgur.com/kDtNQoP.png)



### Feature map Pruning with KL-divergence
![](https://i.imgur.com/onuTA2x.png)

### 結論
以剪枝後的模型來看，第三種做法能保有一定的網路性能。在低剪枝率的結果中，重新訓練後全部的方法都能夠回到本來的模型性能(dice$$\approx$$0.65)。在高剪枝率中，第三種方法可以有效維持模型性能高於dice 0.62，並且大幅減少了推理時間。

## 討論
但是這篇[論文](https://arxiv.org/abs/1810.05270)指出對於剪枝有不一樣的觀點。在結構性剪枝中，**透過剪枝方法獲得小模型後，再訓練模型。還不如直接用小模型隨機初始化訓練。** 所以就利用相同大小的模型，初始化訓練權重(左)與剪枝後的小模型(右)，。猜測會產生這樣的問題是因為訓練資料集太小(286張圖片)，只小模型足以獲得合適的性能。
![](https://i.imgur.com/pd2Cn1M.png)


