[논문리뷰] Soft Filter Pruning for Accelerating Deep Convolutional Neural Networks
1. Introduction and Motivation
일반적으로 데이터가 충분한 상태에서 CNN 모델은 더 넓게, 더 깊게 쌓을수록 성능이 좋다. 다만, 모델이 커짐으로써 연산량 증가가 불가피하다. 이를 해결하고자 CNN 모델의 불필요한 가중치를 제거하는 방법들이 연구되고 있다. 이전 survey 논문에서 언급했다 싶이 다양한 메소드가 존재한다. 본 논문은 그중에서 Filter pruning 방법을 채택하고 있으며, soft pruning 방법을 제시하고 l2-norm을 기준으로 importance를 estimate 한다.
본 논문 이전 연구에서는 Hard filter를 활용한 방법이 많이 활용되었다. 하지만 이 방법에는 (1) 모델 성능저하와 (2) pre-trained 모델에 대한 의존성이라는 두가지 문제점이 존재한다. 아래 그림과 같이 Hard pruning 방법에서는 불필요한 가중치를 제거하고 update과정을 전혀 수행하지 않는다. 따라서 Output feature map의 capacity reduction이 불가피하다. 더불어 Hard pruning 모델은 이러한 성능저하를 해결하기 위해 retrain 과정을 거치게 되는데, 이 또한 학습시간을 많이 소요하기 때문에 결국 총학습에 필요한 시간이 많이 필요하다.
위 문제를 해결하기 위해 본 논문의 저자들은 Soft Filter Pruning(SFP) 방법을 제시한다. SFP 방법에서는 dynamically 필터를 삭제한다. 우선 첫 에폭 학습을 시작하기 전에 l2-norm 값이 작은 필터를 선정해서 0 weight로 만든다. 이후 학습 데이터를 활용해서 pruned model을 학습시키고, 다음 에폭이 시작되기 전에 위와 똑같은 방법으로 l2-norm이 작은 필터를 선정해서 0 weight로 만든다. 위 과정을 수렴할때 까지 진행한다. 이를 통해 압축된 모델을 얻을 수 있다.
2. Soft Filter Pruning (SFP)
기존 Hard Filter Pruning 방법들은 한번 filter를 제거하고 나면 다시 활용하지 않는다. Filter를 제거함으로써 output feature map의 모양(shape)에 영향을 미치게 되고, 더 작은 feature map을 사용함으로써 당연히 성능저하에 영향을 미친다. 따라서 SFP 알고리즘에서는 filter pruning이 되더라고 가중치를 계속 업데이트를 하는 것이 핵심이다. 이 방법은 output shape이 달라지지 않기 때문에 학습 이후에 fine-tune 과정이 필요하지 않다는 점 외에도 특정 layer를 삭제하는 기존 방법과 달리 거의 모든 layer에서 동시에 pruning을 경험한다는 점이 특징이다.
아래 SFP 개요도를 보면 K-th 학습을 진행하고 l2-norm을 바탕으로 중요도를 산출한다. 산출한 중요도를 바탕으로 가중치 zeroize하고, 다음 epoch 학습을 진행한다. 본 논문에서는 이러한 일련의 과정을 1) Filter selection, 2) Filter Pruning, 3) Recondstruction, 그리고 4) Obtaining Compact Model로 정의한다.
2.1 Filter selection
본 논문에서는 l2-norm 값을 바탕으로 filter의 importance를 evaluate 했다. 일반적으로 필터의 Convolution 결과는 작은 l2-norm 값일수록 상대적으로 적은 activation 값을 갖는다. 즉, 적은 numerical impact을 갖는다고 생각할 수 있으며 상대적으로 다른 필터에 비해 덜 중요하다고 볼 수 있다. 본 논문에서 Filter selection을 위해 활용한 filter의 l2-norm을 구하기 위한 식은 아래와 같다.
$$ ||\mathcal{F}_{i,j}||_p=\sqrt[p]{\sum^{N_i}_{n=1}\sum^{K}_{k_1=1}\sum^{K}_{k_2=1}|\mathcal{F}_{i,j}(n, k_1, k_2)|^p} $$
여기서 $\mathcal{F_{i,j}}\in \mathbb{R}^{N_i\times K \times K}$는 $i$-th layer에서 $j$-th output feature map을 의미한다. 따라서 위 식은 각 layer에서의 filter map의 p-norm을 계산하는 것으로 정의할 수 있다.
2.2 Filter Pruning
본 논문에서는 선택된 필터를 물리적으로 제거하는 것이 아니라 가중치를 0으로 변경하는 형식으로 진행한다. 이렇게 진행함으로써 네트워크에서 해당 뉴런이 영향을 미치는 것을 배제할 수 있으면서도 선택된 필터들이 여전히 학습 가능하도록 할 수 있다. 또한 기존의 다른 방법에서 각 layer 마다 서로 다른 pruning rate를 부여하여 계산상 복잡했던 것과 달리 SFP에서는 모든 가중치 계층에 동일한 pruning rate를 적용함으로써 불필요한 하이퍼 파라미터도 줄였다.
2.3 Reconstruction
Pruning을 수행한 이후에 1에폭 pruned 필터에 대해서 재생성 기능을 수행한다. 재생성 과정은 필터를 직접 제거하지 않고 가중치를 0으로 만든 상태에서 일반 학습과정과 동일한 프로세스를 거친다. Hard pruning은 필터를 직접 제거하고 reconstruction 프로세스를 전체 데이터를 활용하여 다시 학습시키는 방법으로 진행하다 보니 학습시간이 일반적으로 2배 정도 소요되었지만, Soft pruning은 학습과 pruning 과정을 1 에폭 내에서 모두 수행하다 보니 학습시간을 크게 줄일 수 있다.
(필자의 개인의견) 논문을 읽다보면 reconstruction 과정에 엄청난 내용이 있을 것 같지만, 알고리즘과 소스코드를 확인해 보면 그냥 일반적인 학습 프로세스를 진행하는 것을 알 수 있다. 다만, 0으로 만들었던 가중치를 이번 에폭에 다시 업데이트하기 때문에 reconstruction으로 표현하는 듯하다.
2.4 Obtaining Compact Model
위 과정을 반복함으로써 최종적으로 compact model을 얻을 수 있다. 최종 모델은 zero가 포함된 네트워크일 것이다. 이 모델은 추론 과정에서 활성화되지 않음으로 추론에 필요한 연산 시간을 줄일 수 있다.
(필자의 의견) 개인적은 생각으로는 모델 압축에도 본 기술을 사용할 수 있으나, 논문에서의 표현처럼 ‘sparse network’를 얻을 수 있다는 것이 큰 장점으로 생각된다.
3. Evaluation and Results
3.1 Benchmark Datasets and Experimental Setting
본 논문에서는 다음 두 데이터를 주로 활용하여 실험을 진행했다.
- CIFAR-10
- ILSVRC-2012
모델은 주로 ResNet을 사용했다.
- ResNet-20
- ResNet-32
- ResNet-56
- ResNet-110
Ablation study로써 몇가지 다양한 실험을 진행했다.
- Filter Selection Criteria
- 본 논문에서는 $\ell_1$-norm과 $\ell_2$-norm을 기준으로 테스트를 수행했다
- 실험 결과로는 $\ell_2$-norm이 약간 더 좋은 결과를 나타냈다
- Varying pruning rates
- ResNet-110 모델을 대상으로 실험결과 0%~23% 제거율에서 기준보다 높은 정확도를 내다가 감소한다
- 저자들은 regularization 효과가 있음으로 over-fitting을 예방했다는 의견을 제시했다.
- Sensitivity of SFP interval
- SFP를 얼마만큼 진행할지에 대한 파라미터에 대한 실험도 진행했다.
- 기본 값은 매 애폭마다 진행하는 것이지만, 1~10 에폭에 대한 실험 결과는 Figure 3(b)에 있다
- 실험 결과에서는 정확도에 큰 차이는 없지만, 이 값에 따라서 모델의 성능이 매우 다르다는 것을 알 수 있다
- 따라서 필요한 경우, 이 파라미터를 잘 조율하는 것이 필요하다
- Selection of pruned layers
- 이전 연구에서는 layer에 따라서 pruning을 다르게 진행했다
- 예를 들어 Shallower layer에서는 pruning을 더 강하게 진행하고, deeper layer에서는 약하게 진행했다.
- 이와 비슷하게 실험해 본 결과 약간의 성능 향상은 있었으나, 0.06% 정도의 차이였으므로 구현의 난이도와 연산상 손실을 감안하면 전체 계층에 적용하는 게 더 낫다는 판단이다.
- 하지만, 어떤 layer에서 더 pruning을 많이 할지에 대한 고민은 필요해보인다.
3.2 Result
기존 연구에 비해 모든 결과가 우수했음을 알 수 있다. 또한 FLOPS 자체도 크게 줄였다.
이미지 넷에서의 실험 또한 유의미한 결과를 나타냈다. 특히 Layer가 깊어질수록 더 좋은 효과를 나타낸다.
4. Conclusion
(필자의 개인의견) 본 논문은 Soft pruning을 처음 제시 했다는 것에 큰 의의가 있다. 기존에도 filter pruning에 대한 방법이 존재했으나, 대부분 hard pruning를 활용한 방법이었다. 다만 실험한 모델과 데이터 셋이 제한적이기 때문에 모든 모델과 데이터에 적용이 가능할지는 개개인의 환경에 맞게 테스트해야 할 듯하다. 더불어 이 방법은 overfitting을 일부 해결하고 있는 것으로 보임으로 overfitting이 문제인 경우에도 활용해 볼 만한 가치가 있다고 생각한다.