가장 좋은 augmentation을 찾기 위한 시도들 - AutoML, Rand augmentation

1. issue

 

task나 dataset 종류에 따라서 잘 되는 augmentation이 다르고 적용해야하는 강도나 크기도 달라

 

숫자를 인식해야하는 MNIST 데이터셋의 경우 9라는 이미지를 180도 회전한 이미지로 바꾸면 6으로 인식되는데

 

label은 여전히 9라고 하는데 누가봐도 6으로 보이니 성능이 저하될 수 있음

 

capacity가 작은 모델에 학습이 어려운 augmentation을 적용하면 오히려 부담을 느껴 성능이 저하됨

 

 

2. AutoAugment

 

그렇다면 컴퓨터의 힘을 빌려 AutoML을 통해 task와 데이터에 최적화된 augmentation을 찾아보자

 

auto augmentation의 개요

 

 

데이터로부터 data augmentation의 policy를 학습하는 모델을 만드는것

 

모델로부터 데이터의 특징을 잘 살려주는 augmentation policy를 찾는 것이 목표임

 

위 그림에서 오른쪽에 나온것과 같이 모델 학습을 통해 최종적으로 5개의 subpolicy를 선정함

 

subpolicy는 각각 2개의 augmentation type과 각각 probability p로 적용해야할지 말아야할지 여부와 어느정도의 강도로 적용해야할지가 담겨있음

 

오른쪽 그림의 상단 그림 첫번째 subpolicy는 ShearX가 0.9라는 probability로 7의 강도를 가지고 적용되는 1가지와

 

invert가 0.2의 probability로 3의 강도를 가지고 적용되는 1가지 policy의 합으로 이루어짐

 

학습을 통해 5개의 subpolicy를 찾았다면 이들의 적절한 조합으로 augmentation을 수행하면 해당 data task의 성능이 상승했다고함

 

이 policy들은 왼쪽에 나온것처럼 딥러닝의 강화학습을 이용했음

 

strategy는 operation type과 probability, magnitude로 이루어져있고 여기서 모델이 sampling을 함

 

sample된 strategy를 이용하여 network를 training하고 evaluation을 수행함

 

계산된 accuracy를 통해 다음번에는 모델이 이보다 더 나은 accuracy를 주는 augmentation을 추천

 

위 과정이 반복되어 최상의 subpolicy들을 찾아냄

 

 

 

성능은 1%정도 오르는데 CIFAR10만 해도 최적의 augmentation을 찾는데 5000시간이라는 학습에 매우 큰 자원이 소모됨

 

 

3. RandAugment

 

AutoAugment가 학습에 너무 오래걸려 parameter를 비약적으로 줄인 방법

 

augmentation 한번에 N개를 적용하고 각 augmentation의 강도는 공통적으로 M을 적용함

 

그러면 이 N,M을 정하고 미리 선정한 후보중에서 N개를 임의로 골라 M만큼의 augmentation을 다 적용해보면서 최적의 augmentation을 찾는다는 방법

 

논문에서 나온 pseudo code와 성능 결과 표

 

 

search space는 비약적으로 줄이면서 시간을 상당히 단축시키는데 성능은 다른 알고리즘들과 비슷함

 

pseudo code보면 transforms에 미리 후보를 선정해두고 여기서 임의로 N개를 선정한 뒤에 각 augmentation의 강도는 모두 M으로 정해놓고 추가시킴

 

TAGS.

Comments