본 문서에서는 FALCON: Lightweight and Accurate Convolution 논문을 소개합니다. 논문에 대한 상세한 정보는 다음과 같습니다.
모델 압축 (Model Compression)
딥러닝 기술은 컴퓨터 비전, 자연어 처리, 고장 예측, 추천 시스템 등 다양한 응용들에서 활용되고 있습니다. 특히, 최근 딥러닝 모델은 GPU나 TPU와 같이 강력한 컴퓨팅 자원을 활용할 수 있어 모델의 크기 및 계산량을 증가시켜 높은 성능을 내고 있습니다. 하지만, 컴퓨팅 자원이 제한되어 있는 세팅에서는 기존의 큰 모델들을 그대로 사용할 수가 없습니다. 그래서 스마트폰이나 자율주행차에서 딥러닝 모델을 사용하기 위해서는 기존의 딥러닝 모델들을 경량화하는 모델 압축 방법은 필수입니다. 모델 압축 작업의 목표는 1) 파라미터 수를 줄이고, 2) 계산량을 줄이고, 3) 기존 모델과 압축 모델간의 성능 (e.g., 정확도) 차이를 최소화하는 것입니다.
최근 스마트폰 혹은 자율주행차에서 이미지 분류, 객체 탐지, 이미지 생성 등 다양한 응용들이 CNNs (Convolutional Neural Networks)을 활용합니다. 제한된 컴퓨팅 자원에서 CNN 모델을 잘 활용하기 위해서는 기본 모듈이 되는 기존 합성곱 (standard convolution)을 효율적으로 만들 필요가 있습니다. 효율적인 기존 합성곱을 위해 가지치기 (pruning), 양자화 (quantization), 저차원 근사 (low-rank approximation)와 같은 다양한 기법들이 활용되고 있습니다. 또한, 기존 합성곱을 대신하여 깊이별 분리 합성곱 (depthwise separable convolution)을 활용하여 경량화된 CNN 모델을 만들기도 합니다.
깊이별 분리 합성곱 (Depthwise Separable Convolution)
깊이별 분리 합성곱 (depthwise separable convolution)은 기존 합성곱 (standard convolution)이 수행하는 일을 효율적으로 수행합니다. 깊이별 분리 합성곱은 깊이별 합성곱 (depthwise convolution)과 점별 합성곱 (pointwise convolution), 총 두 가지 합성곱으로 구성되어 있습니다. 깊이별 합성곱은 각 차원에 2D 합성곱 커널을 적용하고, 점별 합성곱은 채널 사이즈를 바꿉니다. 점별 합성곱은 1x1 convolution과 동일합니다. 깊이별 합성곱은 공간 피쳐를 추출하고, 점별 합성곱은 채널을 따라 피쳐들을 병합함으로써 기존 합성곱이 수행하는 두 가지 일을 각각 수행합니다. 두 가지 일을 분리함으로써 표현력을 유지하면서도 파라미터 수와 계산량을 줄일 수 있게 됩니다.
구체적으로 깊이별 합성곱은 여러 개의 DxD 크기의 2차원 필터들로 구성이 되어 있습니다. 각 필터는 각 채널의 피쳐맵에 적용되어 출력 피쳐맵을 생성합니다. 점별 합성곱은 앞서 언급한 것과 같이 1x1 convolution으로, 채널간의 피쳐들을 병합합니다.
하지만 깊이별 분리 합성곱과 기존 합성곱간의 관계는 명확하게 정의되어 있지 않습니다. 그래서, 학습된 기존 합성곱으로 구성된 CNN 모델을 압축할 때 학습된 기존 합성곱의 정보를 활용할 수도 없을 뿐더러, 깊이별 합성곱과 점별 합성곱을 어떻게 사용할 지에 대해서도 명확하게 정리할 수 없습니다. 그래서, 기존 깊이별 분리 합성곱 기반 압축 모델들은 정확도 감소를 피할 수 없습니다.
Proposed Method
Overview
본 논문에서는 학습된 CNN 모델을 압축할 때 기존 DSC 기반 방법들의 한계점을 극복하여 효과적으로 압축할 수 있는 기법인 FALCON을 제안합니다. FALCON의 핵심 아이디어는 아래와 같습니다.
- 학습된 CNN 모델의 정보를 활용하기 위해서 기존 합성곱과 깊이별 분리 컨볼루션간의 관계를 정밀하게 공식화합니다. 이 공식화를 통해 학습된 기존 합성곱 커널에 깊이별 분리 컨볼루션 커널들을 피팅함으로써 기존 CNN 모델과 압축된 CNN 모델간의 정확도 차이 최소화를 도모합니다.
- 기존 합성곱을 대체할 때 깊이별 합성곱과 점별 합성곱의 순서에 따라 정확도가 달라집니다. FALCON은 두 합성곱의 순서를 주의깊게 정하여 정확도 향상을 도모합니다.
- 효율성과 정확도 성능간의 trade-off 기능을 제공하기 위해서 제안했던 공식화를 일반화합니다.
Generalized Elementwise Product (GEP)
기존 합성곱의 학습된 정보를 활용하기 위해서는 기존 합성곱과 깊이별 분리 합성곱간의 관계를 알아내야 합니다. 하지만, 깊이별 합성곱과 점별 합성곱의 크기는 서로 다르기 때문에 관계를 정의하는데 요소별 곱셈을 간단하게 적용할 수 없습니다. 그러므로, 본 논문에서는 일반화된 요소별 곱셈 (Generalized Elementwise Product)을 통해서 관계를 정의합니다. 본 논문에서는 기존 합성곱과 깊이별 분리 합성곱간의 관계를 깊이별 합성곱의 하나의 요소와 점별 합성곱의 하나의 요소의 곱셈이 기존 합성곱의 요소와 같다로 정의합니다.
여기서 K는 기존 합성곱의 커널, D는 깊이별 합성곱의 커널, P는 점별 합성곱의 커널을 나타냅니다. 자세한 정의 및 증명은 논문[
link]을 참고하시면 됩니다. GEP는 학습된 기존 합성곱의 커널에 깊이별 합성곱과 점별 합성곱의 커널들을 피팅시키는 것을 가능하게 합니다.
FALCON: Lightweight and Accurate Convolution
본 논문에서는 깊이별 분리 합성곱 기반 모델 압축 기법인 FALCON을 제안합니다. FALCON은 정의된 GEP를 따라, 정밀하게 기존 합성곱을 깊이별 합성곱과 점별 합성곱으로 대체합니다. 본 논문에서는 아래와 같은 아이디어를 활용하여 FALCON을 구성합니다.
- GEP 정의에 따라 기존 합성곱을 대체하기 위해서 하나의 깊이별 합성곱과 하나의 점별 합성곱을 사용합니다. GEP에 맞춰 기존 합성곱을 대체하기 때문에 기존 합성곱의 커널에 깊이별 합성곱과 점별 합성곱의 커널들을 피팅시킬 수 있습니다. 랜덤 초기화 대신 기존 합성곱의 정보를 활용함으로써 정확도 감소를 최소화합니다.
- 기본적인 CNN 구조를 살펴보았을 때, 입력 채널 수보다 출력 채널 수가 항상 크거나 같습니다. 그러므로, 점별 합성곱을 먼저 수행하고 깊이별 합성곱을 수행하는 것이 풍부한 피쳐공간에서 다양한 피쳐들을 추출할 수 있습니다. 이것은 정확도 향상으로 이어집니다.
학습된 기존 합성곱으로 구성이 된 CNN 모델이 주어졌을 때, 먼저 각 레이어의 기존 합성곱을 점별 합성곱을 수행하고 깊이별 합성곱을 수행하는 FALCON으로 대체합니다. 그리고, FALCON의 커널들에 대해서 공식화를 활용하여 기존 합성곱에 피팅시킵니다. 마지막으로, 압축된 모델에 대해서 주어진 데이터셋을 활용하여 모델을 미세조정합니다. 자세한 수식과 증명은 논문[
link]을 참고하시면 됩니다.
Rank-k FALCON
일반적으로, 압축을 하면 정확도 감소는 피할 수가 없습니다. 이 때, 압축량은 줄지만 정확도 감소를 최소화하는 방법이 필요합니다. Rank-k FALCON은 기본 FALCON의 확장 버전으로 압축 정도를 줄이면서 정확도 향상을 도모하는 방법입니다. 이 방법은 1개의 FALCON이 기존 합성곱을 대체하는 대신 k개의 독립적인 FALCON을 사용하여 기존 합성곱을 대체합니다. 이 경우, 파라미터 수와 계산량은 k배 증가하지만, 학습된 기존 합성곱의 정보를 활용하면서도 많은 파라미터를 사용하기 때문에 정확도 향상이 가능합니다. 구체적인 수식과 증명은 논문[
link]을 참조하시면 됩니다.
Experiments
본 논문에서는 이미지 분류 문제에 대해서 정확도와 압축률 (파라미터 수와 FLOPs)을 확인합니다. 이미지 데이터는 CIFAR10, SVHN, ImageNet을 사용하였으며, CNN모델은 VGG, ResNet을 사용하였습니다. 아래 그림에서 보이는 것처럼 FALCON은 압축 방법 중 비슷한 파라미터와 계산량을 사용하여 가장 높은 정확도를 얻습니다. 또한, 압축 전 모델과 비교하였을 때 비슷한 정확도를 얻으면서도 최대 8배 작은 파라미터 수와 FLOPs 수를 사용하였습니다. 또한, rank-k FALCON은 기본 FALCON보다 더 많은 파라미터 수와 FLOPs를 요구하지만 압축 전 모델의 정확도와 유사한 높은 정확도를 얻는 것을 확인할 수 있습니다.
Conclusion
본 문서에서는 FALCON: Lightweight and Accurate Convolution 논문을 소개하였습니다. 해당 논문은 깊이별 분리 합성곱 (Depthwise Separable Convolution)을 활용하여 학습된 CNN 모델을 압축하는 FALCON을 제안하였습니다. 또한, 실험 결과를 통해서 FALCON이 기존 DSC 기반 방법들보다 비슷한 파라미터 수와 FLOPs를 사용하면서도 높은 정확도를 얻는 것을 확인하였습니다. 또한, 기본 합성곱과 비슷한 정확도를 가지면서 CNN 모델을 크게 압축하는 것을 확인하였습니다. 이미지 생성, 이미지 분류 등에 많이 활용되는 기존 합성곱 기반 CNN 모델들을 FALCON 기법으로 압축함으로써 스마트폰이나 자원이 제한적인 환경에 압축된 모델들을 쉽게 배포할 수 있습니다. FALCON을 이용한 CNN 모델 압축을 통해 여러 환경에서 사용자들이 보다 다양한 응용을 경험할 수 있을 것이라 기대합니다. 해당 논문에 대한 자세한 정보는 현재
링크를 통해 확인할 수 있습니다.