(NAS) Learning Transferable Architectures for Scalable Image Recognition

convolutional
google
automl
2017
cvpr
cvpr2018

(Curtis Kim) #1

위 논문의 저자가 CNN의 경우에 한정해서 매우 실용적으로 접근해본 논문입니다. NASNet이라는 새로운 아키텍쳐를 제안하며, 사람이 디자인한 네트워크 대비 성능도 좋고 연산량도 효율적인 것으로 주장합니다.

주요한 컨트리뷰션(Contribution)은 Search Space를 다르게 디자인했다는 점입니다. 이 덕분에 다른 데이터셋에 이식하기도 훨씬 좋아졌고(transferability), 검색 효율도 많이 개선되었습니다.

빠르게 학습할 수 있는 Cifar10 에서 네트워크 구조(Convolutional Block)를 찾은 후, 이를 ImageNet에서 그대로 사용해 좋은 성능을 내었습니다.

Architecture & Convolutional Cell

전체적인 네트워크 아키텍쳐를 사람이 직접 미리 정해줍니다.

그림의 왼편의 도식처럼, Cifar10을 위해서 Normal Cell(Convolutional Cell) 과 Reduction Cell을 반복해서 사용하는 구조로 되어 있습니다.

  • Normal Cell은 인풋과 동일한 크기(dimension)의 feature map을 출력하고,
  • Reduction Cell은 1/2 로 줄어든 feature map을 출력하는

두 종류의 셀입니다.

Cifar10 에서 학습을 거듭해 얻어낸 좋은 Normal Cell, Reduction Cell의 구조를 그대로 Imagenet에 가져와 학습하겠다는 것입니다.

Search Space

NAS에서 제안한 컨트롤러는 아래와 같이 조금 다르게 사용됩니다.

NAS에서는 단순히 Conv Layer의 하이퍼파라미터를 출력했다면, 이 논문에서는 어떤 연산을 사용할지 고르는 형태로 변했습니다.

각 인풋에 대해 사용할 수 있는 연산의 목록은 아래와 같습니다.

  • identity
  • 1x3 + 3x1 conv
  • 1x7 + 7x1 conv
  • 3x3 dilated conv
  • 3x3 average pooling
  • 3x3 max pooling
  • 5x5 max pooling
  • 7x7 max pooling
  • 1x1 conv
  • 3x3 conv
  • 3x3 depthwise-separable conv
  • 5x5 depthwise-separable conv
  • 7x7 depthwise-separable conv

컨트롤러가 디자인하는 방식은 아래와 같습니다.

  • 2개의 Input을 고르고,
  • 연산 목록 중 1개씩 각각 골라 인풋에 적용한 후
  • Add 혹은 Concatenation 중 하나를 골라 두 피쳐를 합치도록

이렇게 Search Space를 바꾼 덕택에 더 효과적으로 좋은 아키텍쳐를 찾을 수 있었다고 봅니다.

Results

NASNet의 Original Paper 보다 7배 빠른 4일 정도의 학습시간이 걸렸다고 합니다.

Cifar10에 대해 최고의 성능을 내는 두 Cell의 모습입니다.

얻어진 두 셀을 이용해 이미지넷에 대해 학습했더니, 위와 같이 좋은 성능을 보여줍니다.

이렇게 얻어진 두 셀은 Object Detection와 같이 Localization이 중요한 문제에서도 잘 동작했으며, Random Search와 비교해보았을 때에도 월등한 성능이었다고 합니다.

즉, 네트워크의 depth나 전반적인 구조에서 벗어나 convolutional cell 하나를 잘 디자인하는 문제로 잘 변경한 것이 복잡도를 낮추면서도 더 효율적인 search space를 이용하게 했다고 평할 수 있습니다.


(ENAS) Efficient Neural Architecture Search via Parameter Sharing
'Optimization / Training' Outline
DARTS: Differentiable Architecture Search
'nas' 카테고리의 설명