Deep Learning 방법이 나온 이후로 더 정확도가 높으면서 빠른 효율적인 모델을 만들기 위해 수많은 시도들이 있었다.
첫번째로 나온 모델은 AlexNet이었다.
지금 보면 단순한 convolution과 pooling, fully connected layer의 조합이지만 당시에 Deep learning을 쓰지 않는 방법에 비해 압도적인 성능을 냈었다. 그리고 초반부에 11x11, 5x5 convolution의 큰 convolution을 사용했었다.
이후에 나온 주목할만한 모델은 VGG 이다.
VGG의 경우 오로지 3x3 convolution만을 사용했다. 위의 그림에서 볼 수 있듯이 3x3을 두 번 사용하면 5x5를 사용한 것과 같은 receptive field를 얻을 수 있는데 연산량은 5x5에 비해 더 작다. 이런식으로 작은 convolution을 더 많이 사용하면서 더 효율적이면서 성능이 좋은 모델을 발견할 수 있었다. 하지만 여전히 3x3 convolution은 많은 연산량을 필요로 했다.
따라서 3x3 convolution을 대체할 방법을 제시한 모델이 SqueezeNet이다. 1x1 convolution을 이용해 아래와 같은 모듈을 만들었다.
3x3 convolution에 들어갈 input을 1x1 convolution을 통해 channel size를 줄여서 사용하고 일부는 1x1 convolution으로 대체해서 연산량을 줄이면서도 정확도를 유지할 수 있게 했다.
이런 방식을 비슷하게 resnet에서도 사용해서 1x1 convolution 으로 채널을 줄이고 3x3 convolution에 통과시킨 뒤 다시 1x1 convolution으로 채널을 늘리는 식이다. 그리고 residual connection을 이용해 이전 feature와 합해서 다음 layer에 보내준다.
이후에 MobileNet에서는 depthwise-separable block을 제시한다.
이는 convolution을 채널별로 분리하여 적용해 사용했다. 일반적인 convolution이 채널 수의 제곱에 비례하게 연산량이 증가하는 반면 depthwise-convolution은 채널수에 linear하게 연산량이 증가한다는 점이 특징이다.
이를 이용해 1x1 convolution으로 채널을 늘리고 3x3 convolution은 depthwise를 적용하고 다시 1x1으로 채널을 줄이면 3x3 convolution을 더 많은 채널과 더 적은 연산량으로 사용할 수 있다. 이런 방식이 MobileNet V2이다.
depthwise-convolution은 효율적이긴 하지만 서로 다른 channel끼리의 정보가 잘 섞이지 않는다는 단점도 존재한다. 이를 해결하기 위해 depthwise-convolution에 넣기 전에 feature를 채널 별로 섞는 ShuffleNet도 등장했다.
간략하게 여기까지 사람들이 직접 디자인한 (Manually-designed) 모델들을 설명했다. 하지만 과연 이렇게 직접 디자인한 모델 아키텍쳐가 과연 최선일까? 답은 아니었다.
위의 그림을 보면 Handcrafted 모델들에 지금까지 설명한 ResNet, MobileNet, ShuffleNet 등등이 있는데 보면 AutoML 방식을 사용한 MobileNetV3, EfficientNet, Once-for-all 방식이 더 효율적이고 정확도가 높은 것을 볼 수 있다. 사람이 직접 디자인하지 않고 Neural Architecture Search (NAS) 방식을 사용해서 아키텍처를 찾아낸 것이고 앞으로 이에 관해 설명할 예정이다.
'AI 강의 정리 > TinyML and Efficient Deep Learning' 카테고리의 다른 글
Neural Architecture Search (NAS) - Once-for-All (0) | 2023.06.26 |
---|---|
Neural Architecture Search (NAS) - Hardware-Aware NAS (ProxylessNAS) (0) | 2023.06.22 |
Neural Architecture Search (NAS) - Framework (0) | 2023.06.17 |
[MIT 6.S965] Lecture 03 - Pruning and Sparsity (Part I) (2022 Fall) (0) | 2023.03.17 |