세가지만 기억하자: objective, trial, study
•
objective는 parameter 조합을 하나의 스칼라 값으로 변환해주는 함수
◦
실제 함숫값일수도, 학습 결과로 나온 모델 성능일수도 있다
•
trial은 파라미터 값들의 조합
•
study는 trial들의 history로부터 어떤 값을 시도해볼 것인지를 판단하는 전체적인 시스템
가장 간단한 예제
•
•
기본값 설정으로는 objective의 값을 최소로 만들지만, optuna.create_study(direction='maximize') 로 만들면 objective를 최대화한다.
import optuna
def objective(trial: optuna.Trial):
x = trial.suggest_float('x', 10, 10)
return (x - 2) ** 2
study = optuna.create_study()
study.optimize(objective, n_trials=100) # timeout=[SECONDS]로 시간 제한을 둘 수도 있다.
study.best_params # E.g. {'x': 2.002108042}
Python
복사
Trial 오브젝트로부터 다음 시도해볼 값 얻기
•
목록의 값들 중 하나 취하기 trial.suggest_categorical(name, choices)
•
범위 내의 정수 값 얻기 trial.suggest_int(name, low, high)
•
범위 내의 float 값 얻기 trial.suggest_float(name, low, high)
•
Uniform distribution으로부터 값 추출하기 trial.suggest_uniform(name, low, high)
•
Log-Uniform distribution으로부터 값 추출하기 trial.suggest_loguniform(name, low, high)
Paralleization 되나?
•
어떤 optimization 방법을 이용하는지는 알고 쓰자!
Sampler
•
디폴트 값은 Tree-structured Parzen Estimator algorithm을 sampler로서 사용한다. (optuna.samplers.TPESampler)
•
Sampler의 종류는 아래와 같다 doc
◦
Grid Search GridSampler
◦
Random Search RandomSampler
◦
Tree-structured Parzen Estimator algorithm TPESampler
◦
CMA-ES based algorithm CmaEsSampler
◦
Algorithm to enable partial fixed parameters PartialFixedSampler
◦
Nondominated Sorting Genetic Algorithm II NSGAIISampler
◦
A Quasi Monte Carlo sampling algorithm QMCSampler
•
optuna.create_study(sampler=optuna.samplers.RandomSampler()) 와 같이 사용하면 된다.