AutoML의 개념 알아보기

1. data engineering?

 

1) 전통적인 데이터 엔지니어링

 

data cleansing후에 data preprocessing을 수행하고

 

정제된 데이터로부터 feature engineering을 통해 적절한 feature를 선택하면

 

task에 맞는 적절한 ML 알고리즘을 선택하고

 

선택한 알고리즘의 hyperparameter를 tuning한다

 

딥러닝 관점에서 ML 알고리즘을 선택하는 과정은 task에 맞는 적절한 backbone network를 선택하는 것과 비슷

 

hyperparameter를 선택하는 과정은 딥러닝에서는 loss나 optimizer나 batchsize 등등을 선택하는 것과 비슷하다

 

 

2) 모델을 학습하는 과정?

 

task에 대한 데이터셋이 주어지면 cleansing, preprocessing, feature engineering을 수행하여 적절한 feature를 고르면

 

성능이 잘 나올것 같은 backbone model architecture를 선택하고

 

선택한 모델에 맞는 hyperparameter를 선정하여

 

training을 수행하고 성능이 얼마나 나오는지 evaluation을 수행함

 

모델 학습 과정 개념도

 

 

만약 원하는 성능이 나오지 않으면 model architecture를 바꿔보든가 hyperparameter를 바꿔보든가

 

바꾼 것으로 다시 training을 수행하고 성능평가를 진행하는 것을 반복

 

좋은 configuration = backbone model, hyperparameter의 조합을 찾을 때까지 반복적으로 수행함

 

이것의 문제점은 사람이 반복적으로 수행한다는 것이 문제이다

 

 

2. AutoML의 필요성

 

학습하고 튜닝해서 잘 찾았는데

 

갑자기 데이터가 추가된다면 다시 튜닝해야하고

 

튜닝해서 잘 찾았는데 상사가 모델을 바꿔보자고하면 다시 튜닝해야하는 무한 튜닝의 반복…

 

데이터 사이언티스트의 하루

 

 

튜닝을 하는건 좋은데 사람이 반복적으로 튜닝하면 이게 지쳐서 대충하게 된다는 것이 문제임..

 

 

3. AutoML의 목표

 

진정한 end-to-end learning

 

반복적인 tuning process를 사람이 하는것이 아니라 완전히 자동화를 시키자

 

 

4. AutoML의 문제 정의

 

hyperparameter optimization

 

선택한 ML 알고리즘 A의 hyperparameter들의 모든 조합의 집합에서 특정한 hyperparameter의 조합을 선택할 때 그것을 $\lambda$라고 합시다.

 

주어진 train set Dtrain과 valid set Dvalid과 선택한 hyperparameter set $\lambda$를 이용한 ML 알고리즘 A에 대한 loss를 𝓛($A_{\lambda}$,Dtrain,Dvalid)라고 하자.

 

hyperparameter optimization의 정의

 

 

AutoML이 풀고자하는 문제는 주어진 training set과 validation set, 선택한 hyperparameter configuration으로 알고리즘 A를 학습시켰을 때

 

계산되는 loss 𝓛($A_{\lambda}$,Dtrain,Dvalid)를 최소화시키는 hyperparameter의 특정한 configuration $\lambda$ *를 찾는 문제이다.

 

수학적으로 $\lambda$ *=argmin𝓛($A_{\lambda}$,Dtrain,Dvalid)

 

 

5. 딥러닝 모델의 configuration?

 

configuration은 가능한 model, hyperparameter의 조합을 말한다

 

딥러닝 모델의 hyperparameter는 여러가지 특징을 가진다.

 

첫번째로 optimizer나 module같이 categorical한 특징을 가진다.

 

예를 들어 optimizer=[‘adam’, ‘adamw’,’sgd’,...]에서 하나를 선택하면 되고

 

model=[‘conv’, ‘bottleneck’,’invertedresidual’,....]에서 하나를 선택하면 된다

 

두번째로 learning rate나 regularizer parameter 같은 것은 continuous한 변수들

 

세번째로 batch size나 epochs 같은 것은 integer한 변수들

 

네번째로 conditional하다는 특징을 가진다.

 

conditional하다는 것은 하나의 configuration이 결정되면 그것에 따라 search space가 달라질 수 있다는 것을 말한다.

 

예를 들어 optimizer로 ‘SGD’를 선택했다면 ‘SGD’가 가지는 parameter인 momentum 등등을 search해야하고

 

optimizer로 ‘Adam’을 선택했다면 ‘Adam’이 가지는 parameter인 $\alpha$, $\beta$같은 parameter를 search해야한다.

 

module같은 것도 Vanilla conv냐 BottleNeck이냐 invertedresidual이냐에 따라 그에 맞는 parameter의 space를 search해야함

 

 

6. 두 가지 경량화 접근법

 

기존에 가지고 있는 모델을 경량화 시키자

 

pruning이나 tensor decomposition

 

근데 이 방법들은 어느정도 후처리가 필요함.

 

예를 들어 pruning은 masking으로 weight를 지우더라도 layer를 실질적으로 없애버려야 성능이 나옴

 

다른 접근은 처음부터 경량화 모델을 직접 찾자

 

Neural Architecture Search나 AutoML

 

이러한 접근이 일반적으로 적용하기 더 쉬운 것 같다

 

 

7. AutoML의 한계점

 

좋아보이는데 왜 적극적으로 쓰지 않을까?

 

hyperparameter configuration $\lambda$를 추천해주는 것은 좋은데

 

추천한 hyperparameter로 딥러닝 모델을 train하는데 한번의 epoch조차도 상당히 오래걸릴수 있다

 

ImageNet을 학습하는데 며칠이 걸릴수도 있고 일반적으로 학습시킬려면 100~200epoch은 돌려야한다고 함

 

추가적으로 hyperparameter의 search space 크기만큼 시간과 자원이 더 들어가

 

결과적으로 감당 불가능할정도로 자원이 많이 소비됨

 

 

8. 극복하기 위한 노력들

 

AutoML의 scalability는 여전히 연구가 되고 있는 분야이다.

 

hyperparameter gradient descent: 모델을 학습하면서 hyperparameter도 미분가능하게 만들어 동시에 찾을수있도록 만든다

 

meta-learning: AutoML을 automation하는 방법

 

자동으로 hyperparameter를 찾는 AutoML을 자동화시킴

 

 

9. multi-fidelity optimization

 

가지고 있는 데이터의 subset을 사용하거나 적은 epoch으로 제한하거나

 

강화학습을 이용하여 적은 trial을 시도하거나

 

input image downsampling으로 trial 속도를 높이거나

 

전체적인 trial을 줄이거나 trial에 걸리는 시간을 줄이면서 수학적으로 approximation을 잘하도록 설계하여

 

원래 의도한 성능과 비슷한 결과를 얻을수 있다면 충분하다

 

 

10. AutoML의 가능성

 

여러가지 한계가 있음에도 감수하고서라도 쓸만한 가치가 충분히 있다

 

사람의 주관을 개입하여 search space를 최대한 작게 잡아 걸리는 시간을 줄이거나

 

가지고 있는 dataset에서 적지만 대표성을 띄는 데이터의 subset을 잘 찾는다면 학습속도를 높일수 있음

 

여기서 N-fold cross validation 기법들을 사용한다고??

 

학습과정의 profile을 보면서 애초에 가망이 없어보이면 AutoML을 시도조차 하지 않거나 떡잎부터 다르다면 AutoML을 시도해보거나

 

이런 가망성을 판단하는 ASHA scheduler나 BOHB 기법(Bayesian optimization&hyperband)들이 나와있음

 

prune 기법도 이런 것들의 일종일것 같은데???

 

그래서 한계점이 분명하더라도 어떻게 잘 해보면 사람이 반복하는 것보단 충분히 좋은 configuration을 찾을수 있다는 것이 AutoML의 가능성이다.

TAGS.

Comments