(5강) 작은 모델, 좋은 파라미터 찾기: Data Augmentation & AutoML 결과 분석
Last updated
Last updated
Data Augmentation
rand augmentation에 대해서
AutoML파트의 wrap-up으로 쉬운 예제를 활용해서 AutoML이 원하는 모델을 찾아가는 흐름에 대해 실험
[Further Reading]
부족한 데이터를 추가로 생성하기 위한 증강 방법. 이미지의 경우 좌우반전, 회전 등을 활용해서 증강할 수 있으며, NLP 측면에서는 EDA, AEDA 등의 방법으로 데이터 증강을 할 수 있다.
데이터 증강을 통해 얻을 수 있는 효과는 imbalance된 데이터 셋이나 적은 양의 데이터 셋에 활용할 수 있다는 것이 있습니다.
경량화 관점에서는 연결되진 않지만, 성능향상에 필수적인 요소이다 보니 해당 강의에 추가되었다. 또한 Augmentation 기법을 하나의 AutoML의 Parameter로 사용될 수 있다.
경량화 측면에서 핵심적인 내용은 아니지만, 성능향상에 주요 기술이라고 한다. 각각의 Augmentation기법과 관련해서는 이미 이미지 분류 강의에서 배웠으니 간단하게 넘어가기로 한다.
그 동안 프로젝트를 진행하면서 Augmentation이 그렇게 크게 성능향상을 주진 못했었는데... 데이터 양이 한정되어서이지 않을까 싶다.
예를 들어 숫자 인식 데이터 (MNIST) 같은 경우 회전을 시킨다면, 6과 9를 구분할 수 없을 것이다! 이처럼 데이터에 적합한 Augmentation을 하기 위해 AutoAugment가 생겨났다.
AutoAugment: Learning Augmentation Policies from Data
데이터의 특징을 잘 나타내는 policy를 찾는것을 목표로 한다.
총 5개의 sub policy, 각 sub policy는 2개의 augmentation type, 각 probability와 magnitude를 가진다.
2개의 augmentation 조합을 찾고 각각에 대해서 이를 적용할지 여부에 대한 확률과 magnitude 값을 구한다.
❗ 위 그림을 보면 sub-policy 1~5로 증강하여 학습하게 되면 성능이 잘나오더라라고 찾게 된다는 것이다. 이런 5개의 sub-policy를 구하는 과정은 아래와 같다.
단, 성능이 향상되지만 리소스가 정말 많이든다.... (하긴 그걸 다 해보려면....)
🎇 RandAugment
파라미터를 비약적으로 줄임으로써 (augmentation 한번에 몇개 적용할지, magnitude는 몇으로 할지?) 를 고려하지 않고, magnitude값을 고정함으로써 search space를 줄임 (RandAug: 10^2, AutoAug: 10^32)
보다시피 성능에 큰 차이가 없다는 것을 알 수 있다.
(스페셜 미션과 Baseline 코드를 통해 정리)
가용가능한 자원(GPU, CPU) 수 파악, 가능한 소요시간 등등을 고려해야할 것.
예를 들어, 하나의 Flow를 경험해보자.
PC 1대(CPU:8core, GPU: V-100 1대)
cifar 10 classification task에 파라미터는 적고, 성능좋은 모델
24시간 내로 완성
Objective는?
Multi objective 문제(minimize param, maximize accuracy)
task 수행에 걸리는 시간은?
1회에 2~4시간
주어진 리소스에서 몇개의 세션이 구동가능할지
2~3개 정도
일반적으로 100~200회의 task수행이 되어야 유의미한 결과를 도출할 수 있다고 알고 있다면, 주어진 기한으로 시도할 수 있는 횟수는 24회로 제한되어있다. (기한 / 학습시간 * 세션갯수, 24시간 / 3시간*3개)
Sample을 뽑아서 모델링해도 될지
주요 파라미터만 search space에서 활용
데이터를 축소한다.
search space에서 중요하지 않다고 판단되는 hyperparameter는 고정한다
batch:128, epoch:200, SGD(+Momentum), Cosine Annealing[11], Raduaug 적용(N:2, M:15)
AutoML로 데이터셋, task에 특화된 모델을 찾는 것이 가능
현실적인 제약(시간, 리소스 등)들을 해소하기 위한 엔지니어링은 사람의 손길이 필요