본문 바로가기
AI 강의 정리/TinyML and Efficient Deep Learning

Neural Architecture Search (NAS) - Manually Designed Neural Networks

by donghunai 2023. 6. 16.

 Deep Learning 방법이 나온 이후로 더 정확도가 높으면서 빠른 효율적인 모델을 만들기 위해 수많은 시도들이 있었다. 

 

 첫번째로 나온 모델은 AlexNet이었다.

AlexNet, ImageNet classificaiton에서 에러 측정

 지금 보면 단순한 convolution과 pooling, fully connected layer의 조합이지만 당시에 Deep learning을 쓰지 않는 방법에 비해 압도적인 성능을 냈었다. 그리고 초반부에 11x11, 5x5 convolution의 큰 convolution을 사용했었다.

 

 이후에 나온 주목할만한 모델은 VGG 이다.

VGG

 VGG의 경우 오로지 3x3 convolution만을 사용했다. 위의 그림에서 볼 수 있듯이 3x3을 두 번 사용하면 5x5를 사용한 것과 같은 receptive field를 얻을 수 있는데 연산량은 5x5에 비해 더 작다. 이런식으로 작은 convolution을 더 많이 사용하면서 더 효율적이면서 성능이 좋은 모델을 발견할 수 있었다. 하지만 여전히 3x3 convolution은 많은 연산량을 필요로 했다.

3x3 convolution들이 모델에서 FLOP 수를 대부분 차지한다.

 

 따라서 3x3 convolution을 대체할 방법을 제시한 모델이 SqueezeNet이다. 1x1 convolution을 이용해 아래와 같은 모듈을 만들었다. 

SqueezeNet에 사용된 fire module

 3x3 convolution에 들어갈 input을 1x1 convolution을 통해 channel size를 줄여서 사용하고 일부는 1x1 convolution으로 대체해서 연산량을 줄이면서도 정확도를 유지할 수 있게 했다. 

 

 이런 방식을 비슷하게 resnet에서도 사용해서 1x1 convolution 으로 채널을 줄이고 3x3 convolution에 통과시킨 뒤 다시 1x1 convolution으로 채널을 늘리는 식이다. 그리고 residual connection을 이용해 이전 feature와 합해서 다음 layer에 보내준다. 

 

ResNet에 사용된 block

 이후에 MobileNet에서는 depthwise-separable block을 제시한다. 

MobileNet

 이는 convolution을 채널별로 분리하여 적용해 사용했다. 일반적인 convolution이 채널 수의 제곱에 비례하게 연산량이 증가하는 반면 depthwise-convolution은 채널수에 linear하게 연산량이 증가한다는 점이 특징이다.

 

 이를 이용해 1x1 convolution으로 채널을 늘리고 3x3 convolution은 depthwise를 적용하고 다시 1x1으로 채널을 줄이면 3x3 convolution을 더 많은 채널과 더 적은 연산량으로 사용할 수 있다. 이런 방식이 MobileNet V2이다. 

MobileNet V2

  depthwise-convolution은 효율적이긴 하지만 서로 다른 channel끼리의 정보가 잘 섞이지 않는다는 단점도 존재한다. 이를 해결하기 위해 depthwise-convolution에 넣기 전에 feature를 채널 별로 섞는 ShuffleNet도 등장했다. 

ShuffleNet

 간략하게 여기까지 사람들이 직접 디자인한 (Manually-designed) 모델들을 설명했다. 하지만 과연 이렇게 직접 디자인한 모델 아키텍쳐가 과연 최선일까? 답은 아니었다. 

위의 그림을 보면 Handcrafted 모델들에 지금까지 설명한 ResNet, MobileNet, ShuffleNet 등등이 있는데 보면 AutoML 방식을 사용한 MobileNetV3, EfficientNet, Once-for-all 방식이 더 효율적이고 정확도가 높은 것을 볼 수 있다. 사람이 직접 디자인하지 않고 Neural Architecture Search (NAS) 방식을 사용해서 아키텍처를 찾아낸 것이고 앞으로 이에 관해 설명할 예정이다.