머신러닝에서 hyperparameter search를 도와주는 optuna 라이브러리 소개

1. introduction

 

hyperparameter tuning을 도와주는 open source framework

 

파이썬을 이용하여 최적화된 hyperparameter를 자동으로 찾아줌

 

큰 공간을 더욱 빠르고 효과적으로 찾아주는 최신 알고리즘인 bayesian optimization을 사용?

 

hyperparameter search가 특별한 코드 수정없이도 쉽게 병렬화가 가능해서 대규모 탐색도 분산 머신으로 탐색할 수있는 방법을 제공

 

쉽게 디자인 되어 있어서 상당히 쉽게 사용가능함

 

 

2. 기본적인 사용방법

 

optimize하고 싶은 objective function을 정의함

 

trial.suggest_uniform, trial.suggest_int 등으로 탐색하고자 하는 값의 범위를 설정함

 

실제 search를 수행할 class를 정의함

 

그 class에 optimize를 호출하여 n_trials로 시도횟수를 줌

 

기본 optimization 문제의 optuna 사용방법

 

 

예를 들면 위 그림은 $(x-2)^{2}$을 (-10,10)에서 랜덤하게 100번 뽑으면서 bayesian optimization 방법으로 최적값을 찾아준 코드

 

study.best_params는 최적 parameter를 제공

 

 

3. 예시로 이해하는 optuna

 

objective에 tuning하고자하는 hyperparameter를 정의하고

 

 

 

return으로 accuracy를 줬는데 accuracy를 최적화하고자 하는 것임

 

accuracy는 클수록 좋으니까 direction으로 maximize를 정해줌

 

정의해놓은 parameter에서 n_trials=100번 랜덤하게 탐색하여 bayesian optimization으로 hyperparameter를 찾아나감

 

 

4. 탐색 결과 저장기능

 

storage API는 optuna의 탐색 결과를 저장하는 기능을 제공함

 

RDB나 REdis같은 영구적인 저장소 형태로 저장하나봄

 

hyperparameter 탐색은 분명 대규모이면 시간이 오래 걸려 무한정 돌리기는 힘든데

 

저장이 가능하다면 몇번 돌려놓고 저장해서 불러온 뒤에 이전 결과에 이어서 다시 시작함

 

이것을 쓰면 기존 결과를 불러와서 기존 결과부터 계속 bayesian optimization을 수행하게 해줌

 

그러면 효율적으로 끊어서 해도 이전 결과를 이어서 더 좋은 방식으로 hyperparameter를 찾아낼 수 있다

 

storage 사용하는 방법

 

 

storage를 정의하고 create_study에 인자로 storage=storage를 준다

 

 

5. optuna visualization

 

1) hyperparameter importance

 

모델의 성능이 어떠한 hyperparameter에 크게 좌우되었는지 측정

 

optuna.visualization.plot_param_importances

 

hyperparameter importance visualization

 

 

x,y,z중에 x에 의해 성능이 크게 좌우되었다는 사실 확인가능

 

 

2) history visualization

 

시도 횟수에 따라 objective value가 어떻게 변하면서 best parameter는 어디인지

 

optuna.visualization.plot_optimization_history

 

history visualization 예시

 

 

 

3) slice visualization

 

개별 hyperparameter들의 변화에 따라 objective value가 어떻게 변하는지

 

optuna.visualization.plot_slice

 

slice visualization 예시

 

 

 

4) contour visualization

 

여러개의 hyperparameter와 objective value 변화간의 heatmap 표현

 

optuna.visualization.plot_contour

 

contour visualization 예시

 

 

objective value값이 작은 곳이 좋은 곳인데 실제로도 hyperparameter들이 작은 곳에 몰려있음

 

 

5) parallel coordinate visualization

 

hyperparameter 변화에 따라 objective value가 어떻게 변화했는지 선으로 전부 그려줌

 

optuna.visualization.plot_parallel_coordinate

 

 

 

 

TAGS.

Comments