---
# System prepended metadata

title: 'Learning both weights and connections for efficient neural network, NIPS 2015'
tags: [model compression]

---

# Learning both weights and connections for efficient neural network, NIPS 2015


## 3. Learning Connections in Addition to Weights
![](https://i.imgur.com/47FN4aC.png)

Figure 2 說明三步驟的 pruning 流程

### 3.1. Regularization

選擇正確的 regularization 方法會影響 performance。L1 regularization 會在 pruning 之後、retraining 之前 有更好的 accuracy，但是 retraining 之後的 performance 比 L2 regularization 差，因此整體而言，**L2 regularization 給予最佳的 pruning 結果**。

### 3.2. Dropout Ratio Adjustment
Dropout 用來避免 overfitting, 且套用在本篇中 train 及 retrain 過程中。由於三階段中 pruning 後模型已簡化，因此在 retrain 階段中 drpoout ratio 應該更小，將之 ratio 稱為 $D_r$ ，公式為:
$C_i = N_iN_{i-1}$
$D_r = D_o \sqrt{\frac{C_{ir}}{C_{io}}}$


### 3.3. Local Pruning and Parameter Co-adaptation
* 在 retrain 完 pruned 過的模型後，應該保留這些 weight 做為下一次 retrain 初始化的 weight。
* 為了避免模型越深層時造成梯度消失，而使得 pruning error 在retrain model 時越無法回復，本篇將固定 conv layer 的 weight 來 retrain FC layer，**反之亦然(???)**。 

### 3.4. Iterative Pruning
learning the right connections 是一個迭代的過程，「pruning 之後 retraining」是一個 iteration，經過許多這樣的 iteration 之後可以找到一個最小數量的 connections (即最小的網路)。在不損失 accuracy 的情況下，本方法可以將 AlexNet 的 pruning rate 從 5倍 變成 9倍 (和 single-step aggressive pruning 比較)。

- **每次 iteration 都是一個想找最佳 connections 的 greedy search。 (???)**
- **同時也做了實驗根據 parameter 的絕對值來隨機刪除，但得到更差的結果 (???)**


### 3.5. Pruning Neurons

pruned 階段會將 connection weight 為零的刪掉。且利用 Regularization 將訓練的 weight 趨近於零，**dead neuron 會在下次 retain 的時候自動去除。(???)**







###### tags: `model compression`
