Search
Duplicate
⚙️

Optuna 사용법

세가지만 기억하자: objective, trial, study

objective는 parameter 조합을 하나의 스칼라 값으로 변환해주는 함수
실제 함숫값일수도, 학습 결과로 나온 모델 성능일수도 있다
trial은 파라미터 값들의 조합
study는 trial들의 history로부터 어떤 값을 시도해볼 것인지를 판단하는 전체적인 시스템

가장 간단한 예제

y=(x2)2y=(x-2)^2를 최소로 하는 x의 값을 구하는 예제 https://optuna.org/#code_examples
기본값 설정으로는 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()) 와 같이 사용하면 된다.