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)라고 하자.
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의 가능성이다.
'딥러닝 > light weight modeling' 카테고리의 다른 글
Deep learning compiler란 무엇인가 (0) | 2024.08.29 |
---|---|
hardware-software codesign 개념 (0) | 2024.08.27 |
tensor decomposition - Tucker decomposition, CP decomposition (0) | 2024.08.19 |
network pruning이란 (0) | 2024.08.18 |
MobileNet과 network decoupling (0) | 2024.08.18 |