AutoAugment: Learning Augmentation Policies from Data

automl
vision

(Curtis Kim) #1

Essence

Contribution

  • 최근의 NAS 방식으로부터 영감을 얻어, Image Augmentation 방식을 자동으로 찾아주는 알고리즘 제안
  • Validation Error 를 Reward로 받도록 설계해 Generalization에 유리
  • CIFAR, ImageNet 등에서 SOTA 갱신
  • 기존 semi-supervised(+unlabeled data) 대비 성능 개선.

Key Ideas

데이터셋 별로 특징과 분포가 다른데, 이런 특성을 Network 구조에 반영하는 것보다는 Data Augmentation을 통해 학습 데이터를 생성하는 것이 쉽고 유리하다는 관점에서 출발한 논문입니다.

AutoAugment

  • operation : 이미지 변형을 위한 연산들
    • 16개 : ShareX/Y, TranslateX/Y, Rotate, AutoContrast, Invert, Equalize, Solarize, Posterize, Contrast, Color, Brightness, Sharpness, Cutout, Sample Pairing
    • 적용될 확률(11단계)과 적용할 파라미터(10단계)가 포함됨(uniform spacing, discretized)
  • sub-policy : 2개의 operation으로 이루어짐(eg. Rotation + Share)
    • 각 sub-policy는 (변형 16개 \times 확률 11개 \times 파라미터 10개) ^ 2 만큼의 Search Space를 가짐
  • policy : 5개의 sub-policy로 이루어짐
    • (subpolicy)^5=(16 \times 11 \times 10)^{10}=2.9\times 10^{32} 만큼의 Search Space

위와 같이 정의된 Search Space를 Reinforcement Learning으로 찾습니다. RNN으로 구성된 Controller를 PPO(Proximal Policy Optimization Algorithm)으로 최적화합니다.

  • 30개의 softmax output = 5개 sub-policies(=5 X 2개 operation X (type, magnitude, probability)
  • Reward : child 모델은 5개의 sub-policies 중 1개를 선택 적용한 후 validation셋에서 accuracy를 측정

이렇게 학습되고 나면 5개의 sub-policies 각각에서 best 5 policy를 가져옵니다.
그러면 총 25개의 policy가 되고, 이를 모두 적용하도록 되어 있습니다. 이 때, 기본적인 baseline method는 적용하고 거기에 추가로 학습된 25개의 augmentation을 적용합니다.

Results

CIFAR-10 & CIFAR-100

CIFAR-10 에서 일부 데이터만 선별하여 reduced-CIFAR-10을 만들고, 이를 통해 policy를 학습했습니다. 이렇게 한 이유는 적은 데이터로도 충분히 전체 데이터 분포를 대변할 수 있다면, 이 방식이 훨씬 빠른 학습이 가능하기 때문인 것 같습니다.

Table1을 보면 각 모델들이 baseline augmentation이 적용된 것에 비해 1%+ 수준의 향상이 있음을 알 수 있습니다. Table2는 reduced-CIFAR-10에서 얻은 policy를 그대로 CIFAR100에 적용한 것인데, 역시 마찬가지로 큰 성능 향상이 있습니다.

Semi-Supervised Learning

training data 수를 확 줄인 케이스에 대한 실험입니다. 데이터 수가 확 줄더라도 좋은 augmentation 방법이 있다면, 데이터 분포를 잘 나타낼테니 성능이 좋게 나올 것으로 예상할 수 있고, 실험결과도 이를 뒷받침해줍니다. 기존의 SOTA의 semi-supervised learning보다 더 좋은 성능을 보입니다. 심지어 기존의 방법론들은 unlabeled training data를 추가로 수만장 사용했다는 점을 고려하면 AutoAugmentation의 향상이 더 두드러집니다.

SVHN Results

마찬가지로 큰 성능향상이 있습니다.

CIFAR 등과는 다른 형태의 augmentation policy가 학습되었다고 합니다. 예를 들면 invert 같은 augmentation이 활성화되었다고 합니다.

Imagenet

Fine Grained Visual Classification Datasets

클래스는 많고, 각 클래스별 데이터는 적은 데이터셋입니다. 이미지넷에서 구한 policy를 transfer해서 적용했습니다.

마찬가지로 전체적으로 고른 성능향상을 보입니다. 학습 시에 특이한 점은 하이퍼파라미터(learning rate, weight decay 등)를 validation set performance로 구한 후 고정하고, validation set역시 training set에 합쳐서 학습했다는 점입니다. 이는 트레이닝 셋이 적은 한계를 극복하기 위함으로 보입니다.

Discussion

몇가지 디스커션 내용을 요약했습니다.

  • 트레이닝 초반에는 augmentation 학습이 잘 안된다. 트레이닝이 어느정도 되어야 augmentation policy가 effective하게 학습이 된다.
  • sub-policy 숫자가 늘수록 성능이 오른다. --> diversity가 중요하다고 해석.
  • 데이터셋 간에 분포가 유사할수록 policy를 가져다 쓰는 것이 잘 된다. 물론 그 데이터셋에 맞추어서 policy를 학습하는 것이 제일 좋다.