Understanding and Simplifying One-Shot Architecture Search

icml
nas
google
icml2018
oneshot-nas

(Curtis Kim) #1

Essence

  • Google Brain
  • ICML 2018

Contribution

  • 기존의 NAS 와는 다르게 네트워크를 1번만 학습하여 Architecture Candidate을 찾음
    • 효율을 높인 SMASH 등이 One-shot NAS를 위해 Hypernetwork를 사용
    • 이 논문에서는 Hypernet, RL Controller 등을 사용하지 않은 단순한 구조

Key Ideas

One-shot Model

3x3 Conv, 5x5 Conv, Max-pooling 중 어떤 것을 선택해야할까? 하는 위 그림과 같은 문제 상황을 가정합니다. 이 경우 각 Operation을 넣은 3개의 네트워크, 혹은 그들의 조합을 넣은 더 많은 수의 네트워크를 각각 학습하고 성능을 볼 수도 있습니다. 이 논문에서는 3개의 연산을 초기에 다 넣고 학습 한 후, 불필요하다고 판단되는 연산을 이후에 제거하는 방식입니다. 위 그림에서는 max-pooling만 제외하고 나머지 연산은 제거된 예시입니다. 이 때 모든 연산을 다 넣은 네트워크를 One-shot Model 이라고 부릅니다. 반면 여기에서 불필요하다고 판단한 연산을 제거한 (Architecture Search된) 네트워크를 stand-alone model 이라고 합니다.

  • Search Space는 충분히 다양하면서도, 메모리나 시간 등의 제약을 만족해야 함
  • one-shot model을 validation set에서 얻은 accuracy는 stand-alone model의 성능과 유사해야 함

Cell / Choice-Block Design

1개의 Cell은 여러개의 Choice Block으로 이루어져 있습니다. Choice Block은 여러개의 Input을 선정하게 되는데, 이 논문에서는 최대 4개까지 선정하도록 했습니다.

  • 최근 두 셀들의 아웃풋
  • 현재 셀 내에서 이전 Choice Block의 아웃풋

이는 Concatenate 된 후 1x1 Operation으로 일정한 사이즈의 텐서로 만들어집니다. 이렇게 만들어진 인풋에는 7개의 연산을 수행할 수 있는데

  • identity
  • 2개의 depthwise 3x3 conv
  • 2개의 depthwise 5x5 conv
  • 2개의 depthwise 7x7 conv
  • 1x7 conv + 7x1 conv
  • max-pooling
  • avg-pooling

입니다. Choice Block은 7개 중 최대 2개까지 선택할 수 있도록 했다고 합니다.

이런 구조에서 한 Cell은 가능한 경우의 수가 6 \times 10^9 입니다. 이러한 동일한 형태의 Cell을 여러번 반복해서 쌓은 것이 최종 Network가 됩니다.

Robustness to Co-adaptation

특정 Operation을 제거하는 것이 네트워크 성능에는 아주 큰 영향을 미칠 수 있습니다. 이러한 약점을 보완하기 위해 path dropout을 트레이닝 시점에 추가합니다. 학습이 진행됨에 따라 dropout ratio를 늘려서, operation 제거에 강인하게 만듭니다. 이 때, dropout rate은 $r^{1/k}$로 설계했습니다. 논문을 참조하세요.

Stabilization for Training

Path를 임의로 제거하는 것이 BN 등에서 영향을 미칠 수 있어서, BN-Relu-Conv 순으로 적용했다고 합니다. 그리고, 한 배치 안에서 path가 다르면 BN을 계산하는 것이 힘들기 때문에 Ghost Batch Normalization을 적용했습니다. 즉, Batch를 임의로 쪼갠 후, Sub-Batch 들은 동일한 Network Path를 공유하게 하고(연산이 쉽게 하기 위해), 서로 다른 Sub-Batch들 끼리는 서로 다른 Network Path를 이용하도록(학습이 잘 되게 하기 위해) 했습니다.

Proxy Metric

One-shot Network을 트레이닝하고 나면, 여러 Operation을 Drop해서 얻을 수 있는 다양한 네트워크를 직접 트레이닝하기 전에 성능을 추정할 방법이 필요합니다. 이 논문에서는 One-shot Network의 Validation set에서의 성능을 해당 metric으로 사용합니다.

Final Model Selection

학습된 One-Shot Network에서 일부 Operation을 Drop하는 방식을 통해 여러 개의 Network Candidate을 얻을 수 있습니다. 네트워크 크기와 성능 등의 요구사항에 따라 선별하고 튜닝할 수도 있지만 이 논문에서는 그런 과정은 생략했다고 합니다. 이렇게 얻어진 네트워크들은 Scratch로부터 CIFAR 300epoch, ImageNet 200epoch 를 학습한 후 test set 성능을 통해 최종 네트워크의 성능을 확인합니다.

Results

One-shot Model

왼쪽부터 Dropout Ratio를 높여가며 성능을 plot한 결과입니다. Dropout Ratio가 낮으면(왼쪽), one-shot model이 operation drop에 준비되지 않았기 때문에 one-shot model은 대체로 성능이 낮게 나옵니다. 또 One-shot Model에서 가장 좋은 성능이었던 모델이 Stand-Alone에서 가장 좋은 모델이 아닌 점도 눈에 띕니다.

Dropout Ratio가 높으면(오른쪽), One-Shot Model의 Accuracy Range가 줄어듭니다. 왼쪽의 경우 0.3~0.9인데, 오른쪽의 경우 0.66~0.78 입니다. 대체로 모델이 복잡해질 수록 Dropout Ratio가 높을 때 문제가 많이 된다고 합니다.

이러한 관찰로부터 Dropout Ratio는 트레이닝 초반에는 작게, 후반부로 갈수록 linearly 증가시키는 구조로 했습니다.

Random하게 2만개의 Architecture를 Sampling하고 난 후, 이들을 각각 (추가트레이닝없이) 성능을 측정합니다.

위 그래프는 찾은 Architecture로 retrain을 한 경우(Stand-Alone Model)와 그렇지 않은 경우를 비교한 것인데, near-monotonic correlation가 있음을 확인할 수 있습니다.

여기에서 성능이 좋았던 모델 10개를 뽑아 필터 사이즈 등을 늘린 후 추가적인 학습을 합니다.

  • One-Shot Top : 성능 좋은 모델 10개를 뽑아 필터사이즈에 따라 추가적인 학습한 모델
  • One-Shot Small : One-Shot Model에서의 Metric이 90percentile을 만족하면서 연산이 작은 순으로 뽑아 추가적인 학습한 모델
  • All-On : Operation Drop 없음
  • Random : 랜덤하게 Drop함

CIFAR

ImageNet

CIFAR와 ImageNet 모두 경쟁력있는 성능과 적은 수의 파라미터를 보여줍니다.

Understanding One-Shot Models

One-Shot Model의 성능범위(0.3~0.6) 대비 Stand-Alone Model의 성능 범위(0.9~)가 차이나는 것을 관찰하면서 재미있는 실험을 하나 합니다.

One-Shot Model과 Full Model(Refenrence Model)의 Output간의 KL-Divergence를 구해본 것인데, 강한 상관관계가 있습니다. 즉, Operation을 Drop하면서 Significant한 결과의 변화를 야기할 수록 Validation Set에서의 성능이 떨어진다는 뜻입니다. Candidate Network의 결과가 Full Model(Refenrence Model)과 가까울수록 Stand-Alone Model 역시도 퀄리티가 보장된다는 의미입니다.

Stand-Alone Network의 학습 과정에서도 동일한 경향이 나타납니다. Reference Network과 동일한 결과에 가까울수록(KL-Divergence ↓) 성능이 높게 나타납니다.

논문의 결론 부분에서 가져온 의의로 마무리합니다.

we explained how the fixed set of weights in a one-shot model can be used to predict the performance of stand-alone architectures, demonstrating that one shot architecture search only needs gradient descent, not rein- forcement learning or hypernetworks, to work well.