본문 바로가기

Deep Learning/Efficient Network

Condensenet: An efficient densenet using learned group convolutions

 

Huang, Gao, et al. "Condensenet: An efficient densenet using learned group convolutions." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.

Link

 

 

Abstract

모바일기기에서 딥러닝 네트워크를 필요로 함에 따라, computational resource가 제한된 상황에서 좋은 성능을 내는 efficient network에 대해 많은 연구가 이루어지고 있다. 제안하는 CondenseNet은 DenseNet의 dense connectivity와 learned group convolution을 활용하여 parameter efficiency를 높인다. Learned group convolution은 feature re-use가 적은 connection은 제거하며, test 시에는 일반적인 group convolution가 된다. CondenseNet은 다른 CNN와 비교하여 efficiency면에서 state-of-the-art를 달성한다.

 

 

 

Introduction

Efficient CNN을 위해 quantization, pruning방법 등이 많이 사용되고 있다. DenseNet은 directly connection을 늘려 feature re-use를 향상시키지만, layer마다 connection이 존재하기 때문에 필요없는 connection수도 증가한다. 이에, training 중에 불필요한 connection을 제거하는 pruning method를 본 논문에서 제안한다. 제안된  CondenseNet은 DenseNet에 비해 1/10 computation으로 비슷한 accuracy를 달성한다.

 

 

 

Related Work

Weight pruning and quantization

네트워크 경량화를 위해 weight quantization 또는 weight pruning 방법을 사용한다. Weight pruning은 fine-grained pruning, coarse-grained pruning 방법으로 나뉜다. Fine-grained pruning은 weight 한개 단위로 pruning을 진행하는 것으로, 실제 뉴런 pruning을 모방하는 것처럼 진행이 된다. 하지만, 각 weight에 대한 index를 저장해야하고 GPU의 계산상으로 이점이 크지 않다. Coarse-grained pruning은 filter-level 등 좀더 큰 규모에서 pruning을 진행하는 방법이다. CondenseNet은 coarse-grained pruning에 해당된다. 하지만 CondenseNet은 일반 pruning과 다른 점이 있다. 먼저, pruning이 training early stage에서 이루어진다는 점, 그리고 일반 filter-level pruning보다 degree of sparsity가 크다는 점이다.

Efficient network architectures

Depthwise separable convolution, NAS 등을 사용하여 CNN의 계산량을 줄이는 방법들이 계속 소개되고 있다. CondenseNet은 grouped convolution을 이용해 계산량을 대폭 줄이는 방법을 사용한다.

 

 

 

CondenseNets

Grouped convolution은 representation을 더 좋게 하여 accuracy를 높게 하기도 하지만, 일반적인 grouped convolution의 적용은 accuracy의 저하를 일으킨다. 여기서 저자는 두가지 가정을 내세웠다.

 

1. Conv의 input은 intrinsic order가 존재한다.

2. Conv의 input은 좀 더 diverse하다.

 

이 두 요인으로 인해 accuracy의 저하를 일으킨다고 설명한다. 이를 통해, training 도중에 input feature를 grouping하는 것이 좋다라고 설득한다. 그리고 grouping과정을 배우는 learned group convolution을 제안한다.

 

Learned group convolution

Learned group convolution은 pruning 방법 중 하나로, condensing stage를 단위로 진행된다. Condening stage가 종료될 때마다 averaged absolute weight가 낮은 순으로 unimportant filter를 제거한다. 마지막에는 optimization stage를 통해 최종 학습을 진행한다.

 

 

 

 

 

Group Lasso

이 논문에서는 weight pruning으로 인한 negative effect를 줄이기 위해 다음과 같은 $L_{1}$ regularization을 사용하였다. 이는 sparsity를 증가시키는 역할을 하며, same incoming feature를 같은 group으로 묶는 역할을 한다.

 

 

Condensation Factor

Group의 개수를 G라고 했을 때, 꼭 $1 \over G$만큼의 connection만 남길 필요가 없다. Connection을 제거하는 비율을 C라고 정의하고 condensation factor라고 한다. 매 Condesnsing stage마다 feature 입장에서 $1 \over C$만큼의 connection (filter)를 제거한다.

 

Learning rate

여기서는 consine shape learning rate를 사용하였다. 아래는 loss curve를 나타낸 것으로, 마지막 optimization stage에서는 반 정도의 weight를 제거하기 때문에 급격히 training loss가 증가함을 볼 수 있다.

 

 

 

 

 

 

Index layer

Pruning 과정을 거쳐서 grouping이 형성되었다면, 일반적인 grouped convolution으로 만들기 위해 test stage에서 index layer를 추가한다. 일반적인 grouped convolution으로 만듦으로써 computation power를 줄인다.

 

Exponentially increasing growth rate

DenseNet에서 고정된 growth rate를 사용하였지만, CondenseNet에서는 layer의 뒷쪽으로 갈수록 커지는 growth rate를 사용하여 더 많은 feature와 connection이 이어지도록 설계하였다.

 

Fully dense connectivity

DenseNet에서는 DenseBlock내에서만 dense connection이 있었지만, CondenseNet에는 network내의 모든 layer마다 dense connection을 형성한다. 아래 두개의 전략은 pruning으로 인해 줄어든 parameter를 connection의 증가로 보완했다는 관점으로 해석할 수 있다. 아래 그래프는 increasing growth rate (IGR)과 fully dense connectivity(FDC)를 적용했을 때의 효과를 보여준다.

 

 

 

 

 

 

Experiments

CondenseNet은 CIFAR dataset, ImageNet dataset에 대해 다른 SOTA, efficient network에 비해 좋은 성능을 보인다.

 

 

 

 

 

 

 

 

Conclusion

이 논문에서 CondenseNet이라는 efficient convolution network를 제안한다. 이 네트워크는 dense connectivity와 pruning filter를 통해 feature re-use를 늘린다. 여기서 사용된 pruning method는 간단하면서도 아주 작은 computation을 추가한다. 그 결과, CondenseNet은 다른 efficient network에 비해 작은 parameter로 좋은 성능에 도달할 수 있다.

 

 

 

 

 

'Deep Learning > Efficient Network' 카테고리의 다른 글

Densely connected convolutional networks  (0) 2021.02.25