optunaについて
概要
- ハイパーパラメータ用の最適化ツール
- 簡単にできるのと、微分不能のようなものに対しても割と安定しているようである
- L-BFG-S等では正常に収束しないようなものが、optunaであれば割と良い解にたどり着く
- 基本的に最小化しかサポートしていないので、最大化したい場合は出力を反転させる
具体例
最適なパラメータを見つける
import optuna
def objective(trial):
x = trial.suggest_float("x", -10, 10) # 探索の範囲を限定できる
return (x - 2) ** 2
study = optuna.create_study()
study.optimize(objective, n_trials=100)
best_params = study.best_params
found_x = best_params["x"]
found_value = study.best_value
print("Found x: {found_x}, Found value: {found_value}")
探索中のログを保存する
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO) # Setup the root logger.
logger.addHandler(logging.FileHandler("optuna.log", mode="w"))
optuna.logging.enable_propagation() # root loggerに通知する