You only search once: single shot neural architecture search via direct sparse optimization

convolutional
nas
oneshot-nas

(Curtis Kim) #1

Essence

Contribution

  • DARTS 와 유사하나 더 넓은 Search Space를 갖는다고 주장
  • DARTS의 경우 Softmax output을 통해 1개의 Operation을 선택하나, 여기에서는 Sparsity Regularization을 통해 여러 개의 Operation을 선택할 수 있다는 점이 차이
  • Proximal Gradient Method
  • Block Structure 의 공유(반복) 없이도 실험해 Imagenet에서 더 나은 결과 얻음
  • Imagenet 데이터셋에 대해 직접 Architecture Search를 함

Key Ideas

Operation 들은 Block의 Input과 이전 Level에서의 Operation을 통한 Output을 Input으로 받아 Weighted Sum을 하게 됩니다. 이 때 Weighted Sum에 사용되는 파라미터를 Sparse하게 만들어 각 Operation 들을 연결하는 Graph를 찾겠다는 것이 핵심 아이디어입니다.

image

아래와 같은 N(=4)개의 Operation을 M Level만큼 반복하면 이게 하나의 Block이 됩니다. 이를 B번 반복하는 것을 하나의 Stage라고 부르며, Stage를 여러번 반복하여 Network를 완성합니다.

  • Separable Conv 3x3
  • Separable Conv 5x5
  • Average Pooling 3x3
  • Max Pooling 3x3

각 Block의 Output은 Output에 연결된 Tensor들을 Concatenate한 후 1x1 Conv로 Channel Reduction을 하도록 되어 있습니다. 역시 Darts와 유사한 것 같습니다.

위와 같이 \lambda 에 대한 Sparsity Regularization 텀이 추가된 Loss로 학습하게 됩니다. 이 때, lambda가 sparse한 vector가 되게 만들면 더 복잡한 최적화 문제가 됩니다. (참고로 DARTS에서는 linear combination으로 relaxation한 채로 풀고, 나중에 top1 operation만 가져와서 retraining을 했습니다)

여기에서는 Accelerated Proximal Gradient 라는 방법을 변형해서 풀었다고 하며, 이 부분에서 차이가 있는 것 같습니다.

또 추가로, 네트워크 오퍼레이션에 계산양 혹은 메모리양을 Weight로 주어서 Budget을 같이 최적화하는 것도 제안합니다.

Results

3단계의 학습 과정이 있습니다.

  • 모두 다 연결된 큰 네트워크를 프리트레이닝
  • 프리트레이닝된 큰 네트워크로부터 시작해 아키텍쳐 pruning을 시작
  • 찾아진 architecture를 scratch로부터 다시 트레이닝

적은 양의 GPU Cost로 Imagenet에서 더 나은 결과를 찾은 것을 볼 수 있으며, 특히 Imagenet에 직접 NAS를 적용한 것은 최초라고 합니다. 기존에는 CIFAR 등에서 찾은 네트워크를 가져와서 사용한 보고만 있습니다.