논문 읽기/Classification

[논문 읽기] NasNet(2018) 리뷰, Learning Transferable Architectures for Scalable Image Recognition

AI 꿈나무 2021. 3. 22. 14:52
반응형

 이번에 읽어볼 논문은 NasNet, Learning Transferable Architectures for Scalabel Image Recognition 입니다.

 

 NasNet은 RNN을 활용하여 생성된 convolution block으로 구성되어 있습니다. 이와 대조적으로 ResNet, Inception, MobileNet 등등은 사람이 블락을 설계하고, 블락을 쌓아서 모델을 구축했었습니다. 대표적으로 ResNet은 residual block을 설계하고, 차곡차곡 쌓아서 ResNet을 구축했었죠. NasNet은 block을 사람이 설계하는 것이 아니라, 강화학습과 RNN을 활용하여 block을 설계한 것입니다! 그리고 NasNet은 당시 SOTA를 달성합니다. 딥러닝이 생성한 모델 구조가 사람이 설계한 모델을 뛰어넘다니 놀랍네요..

 

 NasNet은 Nas(Neural Architecture Search)에서 영감을 받아서 탄생한 논문입니다. Nas와 NasNet의 가장 큰 차이점은 search space가 다릅니다. search space는 사람이 설정한 탐색 공간입니다. Nas는 모델 구조 전체를 search space로 설정하였고, NasNet은 모델을 구성하는 conv layer 연산을 search space로 설정합니다. search space에서 탐색한 conv layer 연산을 결합해서 하나의 블락을 만들고, 여러 개의 블락을 쌓아서 모델 구조 전체를 만드는 것입니다. 이렇게 search space를 설정하면 어떤 장점이 있을까요??

 

 우선, 빠릅니다. Nas는 ImageNet 데이터셋에 대한 전체 구조를 찾는데, 엄청 긴 시간이 소요됩니다. NasNet은 상대적으로 작은 데이터셋인 CIFAR10으로 convolution block을 찾고, 이 block들을 ImageNet 데이터셋에 적용합니다. 논문에서는 Nas방법보다 7배나 빠르다고 하네요. 또한 NasNet으로 생성한 block은 다양한 dataset에 적용할 수 있어서 유연성이 있습니다. 

 

NasNet Architecture

 NasNet 구조입니다. RNN과 강화학습으로 reduction cell과 normal cell을 생성하고, cell들을 쌓은 구조입니다. cell 갯수 N과 각 cell의 채널 수는 하이퍼파라미터 입니다.

 

 reduction cell은 feature map 크기를 감소시키기 위해 사용됩니다. CIFAR dataset으로 reduction cell과 normal cell을 찾고, 이 cell들을 쌓아서 ImageNet dataset에 적용한 것입니다. Reduction cell에서 피쳐맵 크기가 1/2로 감소할 때, 채널 수는 2배로 늘려줍니다.

 

 아래 그림은 각 cell의 구조입니다. 복잡해 보이네요.

 

 이제, 이 cell들을 어떻게 만드는지 살펴보겠습니다.

 

Controller RNN

 Reduction Cell과 Normal Cell은 Controller RNN과 강화학습으로 찾은 것입니다.

 

 RNN을 깊게 공부하지 않아서, 이해하기가 어려웠네요. RNN은 2x5B의 softmax prediction을 합니다. B는 cell을 구성하는 convolution block의 개수 의미합니다. 논문에서는 B=5를 사용합니다. 하나의 cell에 5개의 conv block이 있는 것입니다. reduction cell, normal cell 두 개에 대해 예측을 하므로 2x5B가 됩니다. 그리고 Controller RNN은 다음과 같은 과정을 통해 cell을 찾습니다.

 

 Step 1: hi, hi-1로부터 히든 스테이트 하나를 선택합니다. hi와 hi-1은 이전 블락에서 생성된 히든 스테이트를 의미합니다.

 Step 2: Step 1과 동일하게 두 번째 히든 스테이트를 선택합니다.

 Step 3: Step 1에서 선택된 히든 스테이트에 적용할 연산을 선택합니다.

 Step 4: Step 2에서 선택된 히든 스테이트에 적용할 연산을 선택합니다.

 연산은 아래 목록중에서 선택합니다. 

 Step 5: 새로운 히든 스테이트를 생성하기 위해 Step3과 Step4의 출력값을 결합할 방법을 선택합니다. 결합하는 방법은 (1) element-wise addition, (2) concatenation 두 가지중 하나를 선택합니다.

 

 이 과정을 통해 하나의 블락이 생성됩니다. 그리고 5번 반복해 5개의 블락을 생성하고, 5개의 블락으로 하나의 Cell을 생성합니다. Reduction cell과 Normal Cell을 생성해야 하므로 RNN의 각 레이어는 2x5B Soft max prediction을 합니다.

 

 Controller RNN의 작동 단계를 시각화한 그림입니다.

 

Random Search

Nas는 강화학습을 사용했지만, NasNet은 RNN에서 찾은 NasNet search space를 random search 합니다. Random search가 강화학습보다 성능이 약간 떨어지지만 나쁘지 않다고 합니다.

 

 

 Nas에서 강화학습을 어떻게 활용했는지 살펴보겠습니다.

 

 Nas는 NasNet과 마찬가지로 Controller RNN으로 모델 구조를 찾습니다. 그리고 이 모델 구조가 정확도 R에 수렴할 때 까지 학습을 합니다. 정확도는 미분이 안되므로 policy gradient(강화학습의 일종)을 사용하여 controller RNN의 가중치를 업데이트 합니다.

 

Performance

 ImageNet 에서 결과입니다.

 

 Object detection에서 결과입니다.


참고자료

[1] arxiv.org/abs/1707.07012

[2] sh-tsang.medium.com/review-nasnet-neural-architecture-search-network-image-classification-23139ea0425d

반응형