안녕하세요. 지난 포스팅의 [DA] Attentive CutMix: An Enhanced Data Augmentation Approach for Deep Learning Based Image Classification (ICASSP2020)에서는 분류기 외에 추가적인 pretrain된 추출기 (ResNet50)을 통해 영상 내에 중요한 영역을 선택하여 타겟 영상으로 paste하는 Attentive CutMix에 대해서 소개하였습니다. 오늘은 다른 방식으로 놀라운 성능을 보였던 AutoAugment를 소개시켜드리겠습니다.
Background
기본적으로 데이터 증강은 주어진 데이터 도메인에 대해서 불변성을 향상시키는 것을 목표로 합니다. 예를 들어서, 같은 고양이 사진이라고 해도 회전된 고양이 영상을 입력받으면 예측을 하지 못하는 경우가 있기 때문이죠. 그런데 1번 데이터셋에 적용한 데이터 증강은 새로운 데이터셋에 적용하면 학습이 제대로 안되는 경우가 있습니다. 대표적으로 CIFAR10의 데이터 증강으로 회전, 수직 및 수평 뒤집기를 적용했다고 가정하겠습니다. CIFAR10에서는 문제없이 잘 학습이 될겁니다. 이제 이 데이터 증강을 MNIST에 적용해보면 성능이 떨어지게 됩니다. 왜냐하면 "6"과 "9"는 서로 수직 뒤집기하면 동일해지기 때문이죠. 이로 인해 데이터셋에 따른 최적화된 데이터 증강 정책 (policy)가 필요하게 됩니다.
본 논문에서는 이러한 문제점을 지적하면 타겟 데이터셋에 대해 최적화된 데이터 증강 정책을 찾는 것을 목표로 합니다. 이러한 검색 알고리즘을 AutoAugment라고 정의하였으며 강화학습 (reinforcement learning)을 기반으로 주어진 타겟 데이터셋의 검증 정확도가 최적화시킬 수 있는 데이터 증강의 연산 종류, 연산 크기, 적용 확률을 학습하게 됩니다.
AutoAugment
그림1은 AutoAugment의 전체적인 학습 과정을 보여주고 있습니다. 기본적으로 학습되는 과정은 다음과 같습니다.
STEP1. 미리 정의된 데이터 증강 정책 $S$에서 임의의 정책 샘플링
STEP2. 샘플링된 데이터 증강을 이용해서 학습 및 평가 수행
STEP3. STEP2에서 얻은 평가 지표 $R$을 기반으로 controller RNN에게 입력
STEP4. controller RNN이 이를 기반으로 데이터 증강 정책 업데이트 (Proximal Policy Optimization Algorithm)
위 4번의 단계를 수행하면 데이터 증강 정책이 한번 업데이트 되는 것입니다. 이러한 과정을 어디서 많이 보시지 않았나요? 지난 포스팅의 [IC2D] Learning Transferable Architecture for Scalable Image Recognition (CVPR2018)에서 소개해드렸던 NASNet을 기억하실 지 모르겠습니다. NASNet에서는 데이터 증강이 아닌 Cell 이라는 개념을 도입하여 CIFAR10에 최적화된 모델을 찾는 것을 목표로 하였습니다. AutoAugment에서는 데이터 증강으로 주제가 바뀐 것 뿐이죠.
그렇다면 어떤 검색 공간에서 샘플링하는 지 알아봐야겠네요. 기본적으로 AutoAugment에서는 1개의 정책을 샘플링하면 5개의 서브 정책을 샘플링합니다. 그리고 그 서브 정책은 2개의 연산 (operation)으로 구성되어 있습니다. 여기서, 한 가지를 더 생각해야합니다. 모든 데이터 증강은 얼마만큼의 확률 (probability)로 적용할 건지? 얼마만큼의 크기 (magnitude)로 적용할 건지?에 대해서도 정해야합니다. 즉, 하나의 서브 정책은 연산, 확률, 크기로 이루어진 튜플로 구성된다는 것을 알 수 있습니다. AutoAugment에서 활용한 연산, 확률, 크기는 다음과 같습니다.
- 연산 (Operation): ShearX/Y, TranslationX/Y, Rotate, AutoContrast, Invert, Equalize, Solarize, Posterize, Contrast, Color, Brightness, Sharpness, CutOut, Sample Pairing
- 크기 (Magnitude): 10개의 값으로 균등하게 나누어 이산화
- 확률 (Probability): 10개의 값으로 균등하게 나누어 이산화
따라서, 전체 검색 공간의 크기는 $(16 \times 10 \times 11)^{2} \approx 2.9 \times 10^{32}$가 됩니다.
Experiment Results
AutoAugment의 실험결과는 다음과 같습니다.