Fast AutoAugment 정리
by Sangheon Lee
Fast AutoAugment 정리
- 저자 : Sungbin Lim, Ildoo Kim, Taesup Kim, Chiheon Kim, Sungwoong Kim
- 학회 : ICML 2019 (AutoML Workshop)
- 날짜 : 2019.05.01 (last revised 2019.05.25)
- 인용 : 2회
- 논문 : paper
1. Introduction
1-1. Data Augmentation
- Augmenation = Generalization = Avoid Overfitting
- Overfitting = 모델이 학습 데이터를 너무 따라가서, test 성능이 낮게 나타나는 경우. (조금 더 자세한 설명은 여기)
- 일반적으로 학습 데이터의 개수가 많으면, overfitting을 피하기 쉽다. = 데이터 manifold를 일반화하기 쉽다.
-
그림 출처
-
따라서, 학습 데이터의 양과 다양성을 늘려서 generalization을 이룩하자 = Augmenatation
- 그렇다고 너무 막 생성하면 안됨.
- 모델 성능을 최대로 높이려면 augmentation도 잘 해야한다.
- 즉, 전문가의 지식이 필요하다. (여기서, hyperparameter tuning과 비슷한 모습을 보임)
1-2. AutoAugment
- 2018년 Google Brain 논문
-
RNN (Recurrent Neural Network) + RL (Reinforcement Learning)
(1) Augmentation 기법을 출력하는 RNN controller 생성.
(2) 이를 통해 얻은 augmentation 기법을 학습 데이터에 적용.
(3) 모델을 학습 및 성능을 평가하여 reward(R)를 얻음.
(4) 계산된 reward를 통해 RNN controller 학습.
-
Augmentation 기법을 policy, sub-policy 단위로 나누어 search space를 체계화함.
- Fast AutoAugment에도 비슷한 단위로 적용됨.
- 약간 NAS (Neural Architecture Search), 특히 ENAS와 방식이 비슷함.
-
성능 개선은 매우 높지만 (몇몇은 SOTA 갱신), 시간이 너무 오래걸린다 는 단점이 있음.
- RNN 한 번 업데이트를 위해 분류 모델을 full로 학습시켜야 함.
- 몇 천 GPU 시간이 걸림.
1-3. PBA (Population Based Augmentation)
- 2019년 arXiv 논문
-
기존의 Hyperparameter optimization 기법 중, PBT(Population Based Training) 알고리즘을 기반으로 함.
(1) { 동일한 모델 + 다른 augmentation 기법 적용 } X 여러 개 를 동시에 학습.
(2) 중간 지점에서 각 모델의 성능을 비교.
(3) 성능이 높은 모델의 parameter를 복제하고 (exploit), 적용된 augmentation 기법에 약간의 변형을 줌. (explore)
(4) 동시 학습 진행. (2)와 (3)을 반복.
-
결과
- AutoAugment 보다 높은 성능 개선 및 짧은 실행 시간 기록.
2. Proposed Method
Fast AutoAugment
- TPE (Bayesian Optimization과 비슷한 black-box optimization 기법) 기반의 빠르고 효과적인 augmentation policy search 기법 제안.
2-1. Search Space
- Operation O
- Augmentation 기법 단위.
- 각 operation은 확률 p 와 세기 $\lambda$ 값을 가짐. (p, $\lambda$ $\in$ [0,1])
- Sub-policy $\tau$ $\in$ S
- $N_\tau$ 개의 operation들.
- 이미지에 적용 시, 각 operation을 확률에 따라 순서대로 적용.
- 하나의 sub-policy = 하나의 이미지 생성. (위의 그림에서, 오른쪽 4장의 이미지 중 하나.)
- Policy $T$
- $N_T$ 개의 sub-policy들.
- 하나의 policy = $N_T$ 개의 이미지 생성.
- 우리가 찾고 싶은 최종.
2-2. Search Strategy
- 핵심 개념
- Augmenation은 학습 데이터 분포 중 빵꾸난 데이터를 만드는 것.
- 즉, train data ($D_{train}$) 와 validation data ($D_{valid}$) 의 데이터 분포(density)를 맞춰주는 역할.
- $D_{train}$ 에 augmentation 적용 == $D_{valid}$
- (반대로 생각해서) $D_{valid}$ 에 augmentation 적용 == $D_{train}$
- 실제로는 $D_{train}$만 이용해서 augmentation policy 찾을 거니까
- $D_{train} = D_M \cup D_A$ 로 나눔.
- 목표: $D_M$ 의 density == Augmented $D_A$ 의 density.
- 데이터의 density 비교를 어떻게 하는가?
- 학습된 model 을 이용하자.
- $T_* = \arg\max_{T}{R(\theta^{*} \vert T(D_{A}))}$
- $\theta^{*}$ : $D_M$ 으로 학습한 모델의 parameter.
- $R(\theta \vert D)$ : 데이터 D의 모델 $\theta$ 에 대한 정확도(accuracy).
- 즉, $D_M$ 으로 학습한 모델을 기준으로, augmented $D_{A}$ 에 대한 성능이 높은, 그런 policy를 찾자.
- 기존 Augmentation 개념과 반대로 생각함.
- 기존 개념: 학습 데이터에 augmentation을 적용한 데이터로 학습된 모델을 기준으로, 검증 데이터에 대한 성능이 높은 augmentation policy가 최적.
-
제안 개념: 학습 데이터로 학습된 모델을 기준으로, 검증 데이터에 augmentation을 적용한 데이터에 대한 성능이 높은 augmentation policy가 최적.
- 이렇게 하면, 모델을 재학습할 필요가 없음 : 시간 단축 가능.
2-3. Algorithm
-
단계
(1) 학습 데이터 $D_{train}$을 k개의 묶음으로 (class 비율을 맞추어) 나눔. 각각의 묶음은 $D_M$과 $D_A$로 이루어짐.
(2) $D_M$으로 모델 학습($\theta$) 및 Bayesian Optimization 을 통해 $L(\theta \vert T(D_{A}))$ 가 최소가 되는 policy $T$를 search함.
- $L(\theta \vert T(D_{A}))$ : 모델 $\theta$에 대한 $T(D_{A})$ 데이터의 검증 loss.
- Bayesian Optimization : TPE 사용.
(3) 성능이 좋은 N개의 policy들을 병합함. ($T_*^{(k)}$)
(4) (2)와 (3)을 T번 반복하여 모든 결과 policy를 병합함.
(4) 각 k-fold에 대해 (2)~(4)를 반복하여, 모든 결과 policy를 하나로 병합함. ($T_*$)
(5) (4)의 결과를 $D_{train}$에 적용한 augmented data로 모델을 재학습함.
-
알고리즘
-
이점
- 학습된 모델 1개만을 이용하여 최적의 policy 탐색.
- 즉, Bayesian Optimization 과정에서, 성능이 높을 것으로 기대되는 augmentation policy를 뽑아낼 때마다 모델을 학습시킬 필요가 없음.
- 탐색 시간이 매우 단축됨.
- 또한 search space를 numerical한 공간으로 표현하였기 때문에 (p, $\lambda$ $\in$ [0,1]), Bayesian Optimization의 특성과 잘 맞음.
3. Experiments
- 4가지 이미지 데이터에 대한 분류 모델에 augmentation 적용.
- CIFAR-10, CIFAR-100, (reduced) SVHN, (reduced) ImageNet
3-1. Hyperparameters 설정
- Operation 종류 = 16 (Shear X, Rotate, Invert, …)
- $N_{\tau}$ (sub-policy 내의 operation 수) = 2
- $N_{T}$ (policy내 sub-policy 수) = 5
- k (fold 수) = 5, T (각 fold data마다 반복 횟수) = 2
-
B (TPE를 뽑아내는 후보 개수) = 200, N (각 반복마다 성능이 좋은 policy 저장할 개수) = 10
- 즉, 최종적으로 100개의 policy를 찾으며, 이에 따라 1장의 data로부터 500장의 augmented data가 생성됨.
3-2. 실험 결과
-
정확도 향상
- Baseline : Augmentation을 적용하지 않은 것, Cutout : 가장 널리 사용되는 augmentation 기법
- AA : AutoAugment, PBA : Population Based Augmentation
-
Fast AA의 transfer : Wide-ResNet-40-2 모델과 조금 축소한 데이터를 이용하여 찾은 augmentation 기법들을 그대로 적용한 것.
- 제안된 기법인 Fast AA는 Baseline 및 기존 augmentation 기법보다 좋은 성능을 보임.
- 또한 AA 및 PBA보다 높진 않지만, 이에 준하는 성능을 보임.
-
속도
- 이 논문의 핵심 = AutoAugment에 비하여 탐색 속도의 엄청난 개선.
-
AA보다 빠르다는 PBA에 준하는 속도를 보임. 다음은 PBA 논문에 있는 탐색 속도.
- PBA와 Fast AA의 속도 비교는 (reduced) ImageNet 이용한 실험에서 제대로 비교해봐야 할 것 같음.
4. Conclusions
- 딥러닝 모델의 overfitting을 피하기 위한 generalization 기법들 중, 데이터 단계에서 적용할 수 있는 augmentation의 자율 최적화에 관한 연구.
- 기존의 AutoAugment라는 augmentation 최적화 기법은 강화학습을 통해 RNN controller를 학습 구조로서, 탐색 시간이 매우 오래걸린다는 단점이 있음.
- “Augmentation은 데이터 분포의 빈 공간을 채우는 것” 이라는 개념 하에, augmetation 기법을 검증 데이터에 적용 및 한 번 학습된 모델로 augmentation 기법 성능 평가.
- 탐색 결과 마다 모델을 학습할 필요가 없기 때문에, 최적화에 소요되는 총 소요 시간이 감소함.
-
다양한 이미지 분류 데이터에 대한 실험 결과, AutoAugment 및 PBA에 준하는 성능과 함께 단축된 소요 시간을 보임.
-
Auto Augmentation 연구는 후에 NAS (Neural Architecture Search, 신경망 구조 탐색) 분야에 접목되어, 모델의 일반화 및 자율 최적화 기법에 관한 연구가 진행될 필요가 있음.
- (개인적인 생각)
- BO를 뽑아낼 때마다 매 번 학습을 할 필요가 없는 것은 매우 큰 장점인듯 함.
- 하지만 검증 데이터에 augmentation 기법을 적용하고, 이미 학습된 모델로 loss를 계산하는 것이 과연 그 augmentation 기법에 대한 성능을 100% 반영하는지에 대한 의문이 듦.
- 두 가지 데이터의 density matching 관점에서 봤을 때 어느 정도 이해는 되지만, 필요충분조건에 대한 수학적인 증명이 필요하다고 생각됨.
Subscribe via RSS