1. Convolutional Neural Network Pruning
CNN은 이미지 분야에서 다양하게 활용되고 있는 기본 모델이다. 모델의 성능을 높이기 위해 모델을 깊게 쌓거나 넓게 쌓는 등 크기를 증가 시키는 방향으로 연구가 진행됐다. 하지만 이에 따라서 모델이 학습해야 하는 파라미터 수가 많아졌고, 모바일이나 IoT 디바이스 등 경량 디바이스에서는 활용하기가 어려워졌다. 이를 위해 성능 저하가 최소화할 수 있는 방향에서 모델의 크기를 줄이는 방법이 필요하다.
본 논문에서는 CNN에서 Pruning하는 방법과 학습 Strategy, 그리고 Estimation Criterion에 대해서 설명한다.
2. Pruning Method
Pruning Method는 1) Non-Structured Pruning과 2) Structured Pruning으로 크게 두 가지로 나뉜다. Non-Structured Pruning은 Convolution의 weight를 pruning 하는 것을 말하며, output shape 유지를 위해 weight를 지운다기보단 0 값으로 변환하는 방식을 사용한다. Structured Pruning은 직접적으로 CNN kernel을 지우는 방식으로 진행한다. 따라서 output shape이 변화하고 이를 전체 모델에서 고려하는 것이 중요하다.
2.1 Non-Structured Pruning
Non-structured pruning은 특정한 구조나 패턴 없이 개별 가중치 또는 매개변수를 독립적으로 제거한다. 불필요한 가중치 직접 제거하지 않고 이를 0으로 변환하여 가지치기를 진행함으로 네트워크의 연결 구조가 변경되지 않는다. 하지만 가중치 일부를 제거하거나 가중치에 대한 가치 평가를 하는데 연산량이 많이 필요하다는 단점이 있다. 아래 그림과 같이 weight를 기준으로 일부 unit을 prune하는prune 하는 방법과 kernel을 prune 하는 방법이 존재한다.


Non-structured pruning의 경우에는 여전히 filter를 살려두기 때문에 가중치 크기가 줄어드는것 외에는 큰 변화는 없다. 다만, 일반적으로 메모리 사용이 비효율적이며, 연산도 비효율적 일 수 있다. 때로는 특별한 장비가 필요하기도 하다.
2.2 Structured Pruning
Structured pruning은 특정한 구조나 패턴을 갖고 가중치 또는 매개변수를 직접 제거한다. 주로 필터 단위로 가중치를 제거하여 해당 필터의 입력 및 출력 채널에 영향을 미친다. 아래 그림의 경우, l 번째 layer에서 흰색 필터를 제거함으로써 출력 채널에 영향을 미친 것을 확인할 수 있다. 이는 연쇄적으로 다음 layer의 입력값에도 영향을 미칠 뿐만 아니라 최종 출력에도 영향을 준다.

하지만 여기서 오해 할 수 있는 것이 모든 메소드에서 filter를 완전히 제거하는 것은 아니다. 이는 다음장에서 설명하려는 Training strategy와 연관이 깊은데, hard pruning의 경우는 완전히 제거하는 것이 맞고 soft pruning에서는 매 epoch마다 prune을 하되 다음 epoch에서는 학습을 진행한다.
Structured pruning는 모델의 깊이나 넓이를 효과적으로 제거 할 수 있다는 특징이 있다. Filter-kernel pruning[2, 3]는 불필요한 filter와 kernel을 제거함으로써 모델의 넓이를 효과적이게 줄일 수 있고, Block pruning[4]의 경우에는 불필요한 block 자체를 제거함으로써 모델의 깊이를 효과적으로 줄일 수 있다. 다만 zero input을 회피하기 위해 Residual connection이 존재하는 block만 제거 가능하다는 단점이 있다.
3. Training Strategy
Pruning strategy는 Hard pruning과 Soft pruning으로 나뉜다.

3.1 Hard Pruning
Hard pruning은 모델을 정상적으로 학습 후, 필터 또는 Weight를 제거하는 pruning method를 수행하고 retrain을 통해서 accuracy 차이를 줄이는 방법이다. Soft pruning 방법이 개발되기 전에 가장 보편적으로 많이 사용했던 방법이다. 다만, 이 방법에 경우에는 retrain을 수행해야 하다 보니 학습시간이 2배로 소요된다는 단점과 필터 또는 weight를 완전히 제거하다 보니 성능이 많이 떨어진다. [5, 6]
3.2 Soft Pruning
최근에는 Soft pruning을 활용한 방법이 대체로 연구되고있다. 학습과정에서 Pruning을 할 대상을 정하고 pruning을 동시에 수행함으로써 retrain을 하지 않아도 된다. 또한 제거한 가중치를 완전히 버리는것이 아닌 해당 epoch에서만 제거하고 다음 epoch에서는 제거할 대상을 다시 선정하는 과정을 거치기 때문에 성능 저하 이슈도 해결했다. 예를들어 첫 번째 epoch의 결과에 따라 가장 마지막 필터가 제거되어야 한다면, 이 필터의 가중치를 모두 0으로 변환한다. 하지만 여전히 gradient는 계산하도록 텐서를 유지하고 다음 epoch에 대한 학습을 진행한다. 그리고 위의 방법을 반복하여 sparse 한 network를 만들어 내는 것이다.
Soft pruning을 수행하는 방법에 있어서 Binary mask[9]를 활용하는 방법이 있고,

3.3 Redundant Learning Strategy
앞서 소개 해준 방법들은 특정 weight나 filter를 zeroize하는 방법들이다. 반면 최근에는 redundant learning이 나타나고 있다. 이 방법은 비슷한 필터들을 제거하는 대신에 하나의 클러스터로 묶어서 데이터를 처리하는 방법이다. C-SGD[7]라는 방법은 back propagation 단계에서 비슷한 가중치 필터를 K-means cluster로 묶어서 처리하는 방법을 제안했다.
그럼에도 불구하고 세가지 학습 시나리오중 가장 효과가 좋은 것은 Soft pruning 방법이다.

4. Estimation Criterion
지금까지는 불필요한 필터 또는 가중치를 제거하는 방법과 학습 시나리오에 대해서 설명했다. 그렇다면 이제 생각될 수 있는 질문은 어떤 가중치를? 이라는 질문일 것이다. 이번에는 이 부분에 대해 설명하고자 한다.
4.1 Importance-based Criterion
Importance-based criterion은 말 그대로 importance를 측정해서 중요하지 않은 가중치를 제거하는 방법이다. 일반적으로 norm을 측정해서 importance를 estimate 한다. Filter의 norm을 계산하여 norm 값이 크다면 다 다양한 정보를 반영하고 있다고 가정한다. 하지만 무조건 norm 값이 크다고 해서 정보를 많이 반영하고 있는가? 그렇지 않을 수 있다[3]. 따라서 geometric median 값을 같이 고려하여 filter의 importance를 estimate 하는 방법도 있다.
Importance-based criterion은 computation이 빠르고, 구현하기 쉽다는 장점이 있는 반면, 고차원 정보를 압축하기 때문에 많은 정보 손실이 불가피하다는 단점이 존재한다. 결국 많은 정보 손실은 정확도 하락에 기여한다.
4.2 Sparsity-based Criterion
Sparsitiy-based criterion은 고차원 정보에 더 집중한다. 비슷한 정보를 공유하고 있는 필터를 제거하여 더 적은 파라미터와 더 강력한 feature extraction power를 기반으로 하는 sparser architecture를 갖는 것을 목적으로 한다. Li의 논문[8]에서는 input feature map이 sparse 하다면 학습하는 가중치도 sparse 하다는 가정을 바탕으로 kernel sparsity와 entropy를 estimate 하여 모델 pruning을 수행했다.
4.3 Reconstrucion-based Criterion
마지막으로 reconstruction-based criterion은 output feature map에 직접 관여한다. 주요한 아이디어는 reconstruction error을 minimize 하여 pretrained model과 prune 모델의 성능차이가 나지 않도록 모델을 재 생성하는 기법이다.
아래 표를 보면 Importance-based criterion이 pruning rate도 높으면서 성능저하도 최소화한 것을 알 수 있다. 정리하자면 Soft-pruning을 수행하면서 importance-based criterion을 활용하는 method가 현재(To the best of my knowledge)까지는 가장 좋은 것으로 확인된다.

5. Conclusion
최근에는 이미지 분야에서 Convolution Neural Network 보다는 Vision Transformer가 더 흥미롭게 연구가 많이 되고 있으나. 그럼에도 불구하고 아직도 CNN은 많이 활용되고 있다. 비단 모델을 압축하기 위한 용도뿐만 아니라 어떻게 중요한 정보를 뽑을 것이고, 무엇이 중요한 정보인지에 대한 궁금증은 아직도 명확히 해결되고 있지 않기 때문에 형태가 다를 뿐 계속해서 연구가 될 것으로 보인다.
그 연구의 시작점으로써 model pruning이라는 시점이 매우 흥미롭고, 현재까지 연구된 결과를 바탕으로도 다양한 method에 적용 가능해 보인다.
References
[1] Xu, Sheng, et al. "Convolutional neural network pruning: A survey." 2020 39th Chinese Control Conference (CCC). IEEE, 2020.
[2] He, Yang, et al. "Soft filter pruning for accelerating deep convolutional neural networks." arXiv preprint arXiv:1808.06866(2018).
[3] He, Yang, et al. "Filter pruning via geometric median for deep convolutional neural networks acceleration." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019.
[4] Lin, Shaohui, et al. "Towards optimal structured cnn pruning via generative adversarial learning." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019.
[5] Luo, Jian-Hao, Jianxin Wu, and Weiyao Lin. "Thinet: A filter level pruning method for deep neural network compression." Proceedings of the IEEE international conference on computer vision. 2017.
[6] Li, Hao, et al. "Pruning filters for efficient convnets." arXiv preprint arXiv:1608.08710 (2016).
[7] Ding, Xiaohan, et al. "Centripetal sgd for pruning very deep convolutional networks with complicated structure." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019.
[8] Li, Yuchao, et al. "Exploiting kernel sparsity and entropy for interpretable CNN compression." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019.
[9] Yu, Ruichi, et al. "Nisp: Pruning networks using neuron importance score propagation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.