새소식

딥러닝

[모델 경량화] 작은 모델, 좋은 파라미터 찾기 - AutoML

  • -
부스트코스의 모델 경량화 강의를 듣고 정리하였습니다.

 

1. 모델 경량화 관점에서의 AutoML

 

1.1 Conventional Deep Learning Training Pipeline

 

 

일반적으로 "데이터 엔지니어링"은 데이터 클린징, 전처리, 피쳐 엔지니어링, ML 알고리즘 선택, 하이퍼파라미터 설정이라는 일련의 과정을 의미한다.

딥러닝에서는 ML 알고리즘 선택은 백본 모델을 선택하는 과정, 하이퍼파라미터 설정에는 Loss, Optimizer 등을 조정하는 과정이다.

 

모델을 학습하고 하이퍼 파라미터를 선정하는 과정은,
주어진 Task와 데이터셋이 있다면 성능이 잘 나올 것 같은 Model Architecture를 선정하고 하이퍼파라미터를 선택한다.
그 다음 성능이 얼마나 잘 나오는지 Train & Evaluate 과정이 나온다.

그러나 문제점사람이 좋은 configuration을 찾을 때 까지 반복적으로 수행해야 한다는 점이다.

 

1.2 Objective of AutoML

사람 없이 반복적인 수행을 하고자 하는 것AutoML의 목표이다.

AutoML의 Hyperparameter Optimization어떤 학습/검증 데이터가 주어지고, 알고리즘과 하이퍼파라미터가 정의되어 있을 때 Loss를 가장 최소화해주는 하이퍼 파라미터를 찾는 것이다.

 

1.3 Properties of configurations in Deep Learning

AutoML을 하기 위해서는 딥러닝 Configuration의 특징을 알아야 한다.

모델 학습 전에 설정하는 하이퍼파라미터들의 주요 타입들은 아래처럼 구분할 수 있다.

 

 

딥러닝 Configuration은 Conditional 하다는 특징이 있다.
다시말해 한 Configuration에 따라 search space가 달라질 수 있다.

예를 들어 SGD를 사용한다고 할 때, SGD는 모멘텀이라는 파라미터가 있을 것이고, Adam의 경우에는 alpha, beta_1, beta_2 같은 파라미터가 있다.

 

1.4 모델 경량화 관점에서 AutoML

현재의 모델 경량화는 크게 두 가지로 볼 수 있다.

1. 기존의 모델을 경량화 할지 : Pruning, Tensor Decomposition

2. 새로운 경량 모델을 찾을지 : NAS(Neural Architecture Search), AutoML(Automated Machine Learning)

즉, AutoML은 탐색(Search)를 통해 경량 모델을 찾는 기법이라고 볼 수 있다.

 


2.  AutoML 파이프라인

 

2.1 AutoML Pipeline

1. Configuration λ 설정
: 백본 모델, 하이퍼파라미터 등

2. Configuration으로 모델 학습
: 학습이 잘 되는지는 black box

3. Evaluate Objective f(λ)
: 목적 함수는 상황에 따라 다르다.
속도는 상관없이 성능만 좋았으면 좋겠다, 성능이 적당하되 사이즈가 작았으면 좋겠다 등

4. Blackbox optimization
: Objective 함수를 Maximize 합니다.

 

 

2.2 AutoML Pipeline; Bayesian Optimization(BO)

Bayesian Otpimization은 Blackbox optimization이 2가지 과정으로 이뤄진다.

  • Update Surrogate Function
    : f(λ)를 예측하는 regression model
  • Update Acquisition Function: Surrogate Function을 사용해서 다음 시도해 볼 λ를 결정하는 model

 

 

Step by Step on Bayesian Optimization with Gaussian Process Regression

 

탐색 과정은 아래와 같은 일련의 순서가 반복되며 탐색한다.

  1. (n = 2) acquisition max가 가장 높은 곳이 다음 가능성이 됨
  2. (n = 3) 학습을 수행하고 n=2일 때 가능성의 실제 값을 취함
  3. (n = 3) surrogate model update, acquisition function update
  4. (n = 3) acquisition max가 가장 높은 곳이 다음 가능성이 됨

 

 

Gaussian Process Regression

Gaussian Process Regression은 불확실성을 모델링을 할 수 있다는 장점이 있다.

불확실성을 모델링 한다는 것은 (n = 2) 일 때 우리가 알고 있는 점은 2개 밖에 없지만 그 사이의 값을 불확실성을 가지고 표현을 할 수 있다.
즉,  "대충 이 정도 범위 안에 있는 것 같아" 라고 할 수 있다.

Gaussian Process Regression

 

기본 아이디어

  • 일반적인 Regression task의 문제 정의 :  "데이터를 가장 가깝게 피팅하는 함수  f 를 찾자"
  • 학습 데이터: $(X, Y)$ , 테스트 데이터: $(X_{*}, Y_{*})$
    $Y$를 잘 설명하는 $f(X)$를 찾는 것, $ Y \approx f(X) + e$
  • 우리가 알고자 하는 특정 위치의 $Y_{*}$ 값은 우리가 알고 있는 $X,Y,Y_{*}$​​ 들과(positive건, negative건) 연관이 있지 않을까?⇒ 알고있는 값들로부터 $Y_{*}$를 추정하는 것이 Gaussian Process Regression    연관에 대한 표현은 Kernel 함수 K로 표현

 

Gaussian Process Regression에서는 $f(x)$를 분포라고 바라본다.

input x가 들어왔을 때 가능한 함수 f의 분포라고 보고
함수 값들에 대한 random variable들이 Multivarate Gaussian 분포를 가진다고 가정한다.

즉, 함수들의 분포를 정의하고 이 분포들이 Multivarate Gaussian 분포를 가진다고 가정한다는 것은
함수 f가 Gaussian process를 따른다는 의미이다.

 

$f$와 $f_{*}$가 Multivariate Gaussian 분포이라는 관계 안에서 정의가 된다.
알고 있는 point가 50개이고, 모르는 point를 1개라고 한다면 51개의 벡터가 되는 것이고,
우측의 가우시안 분포의 covariance는 51X51 Matrix가 된다.

 

 

Surrogate Model Function :  f(λ)에 대한 Regression model

점점 관측이 늘어날수록 함수가 피팅이 되면서 불확실성도 줄어드는 것을 확인할 수 있다.

  • Objective f(λ) 값을 예측하는 모델
  • Objective를 estimate하는 surrogate model을 학습, 다음 좋은 λ를 선택하는 기준으로 사용
  • 대표적인 Surrogate model로는 Gaussian Process Regression(GPR) Model이 존재

 

 

Acquisition Function : 다음은 어디를 trial하는 것이 좋을까?

  • Surrogate model의 output으로부터, 다음 시도해보면 좋을  λ를 계산하는 함수
  • Exploration vs Exploitation
    : “불확실한 지점을 trial vs 알고있는 가장 좋은 곳 근처에서 좋은 곳이 있지 않을까?”의 trade off
  • Acquisition function의 max 지점을 다음 iteration에서 trial
  • Ex) Upper Confidence Bound

 

 

Bayesian Optimization (with Tree-structured Parzen Estimator : TPE)

GPR의 단점들

  • High-dim $O(N^3)$
  • Conditional 관계, Continuous, Discrete 파라미터가 혼재 되어 있을 때 다른 기법들이 적용되어야 함

 

특히 2번째 단점 때문에 요즘은 GPR 대신에 TPE를 더 사용하는 추세이다.

TPR은 GPR $p(f|\lambda)$와 다르게 $p(\lambda|f)$와 p(\lambda)를 계산한다.

 

 

TPE를 통한 다음 step의 λ 계산 방법

  1. 현재까지의 observation들을 특정 quantile(inverse CDF)로 구분
    : 예를 들어 위 그림처럼 observation이 6개 정도가 있다고 하 전체 중 75%는 나쁜 것으로, 25%는 좋은 것으로 가정한다.
  2. KDE(Kernel density estimation)으로 good observations 분포$p(g)$, bad observations의 분포 $p(b)$ 를 각각 추정 (greater의 분포,lower의 분포)
    KDE : sample 포인트 들이 있을 때 그걸 가지고 분포를 추정하는 방법론
  3. p(g)/p(b)EI(Expected Improvement, acquisition function 중 하나)에 비례하므로, 높은 값을 가지는 λ를 다음 step으로 설정

    좋았던 관측 분포 p(g) / 안좋아던 관측 분포 p(b)
    ⇒ p(g)/p(b)가 가장 높은 지점을 탐색한다?
    ⇒ p(g)가 높으면 좋은 것이니까 선호하되(Exploitation 관점) , g(b)가 낮다는 것은 해당 위치는 좋은지 안좋은지 모른다는 것이니까 (Exploration 관점) 이 쪽 부분도 찾아보기는 하자라는 의미

 

 


3. AutoML의 한계점 및 현실적인 접근 방법

 

3.1 한계점 및 연구 키워드

가장 큰 문제점은 한 iteration에 많은 시간이 걸린다는 점이다. (=리소스오 시간이 부족)

위 문제점을 해결하기 위해 활발하게 연구되고 있다.

- Hyperparameter Gradient Descent (탐색과 학습을 동시에)
- Meta-learning  (Auto "AutoML") : 좋은 모델을 찾는 것을 자동화 하자
- Multi-fidelity optimization : trial을 줄이나 trial에 걸리는 시간을 줄이자
   : Data의 subset을 활용
   : 적은 epoch
   : 강화학습을 활용한 적은 trial
   : Image Downsampling

 

3.2 현실적인 접근

앞에서 언급한 문제들이 크리티컬 한 것은 맞지만 AutoML은 그럼에도 불구하고 쓸만 할 충분한 가치가 있다.

  1. 어느 정도 prior를 개입해서 탐색 공간을 더 적게 잡고
  2. 적지만 대표성을 띄는 데이터셋을 찾은 후에
  3. 학습의 경향성을 보고 모델을 어느 정도 판단할 수 있다.

어느정도 사람이 반복하는 것 보다는 “충분히 좋은” configuration을 찾아볼 수 있다.

 

 


https://www.boostcourse.org/ai302

728x90
Contents