早く試さないといけないといけないと思いながら先延ばしにしていたOptunaをいよいよ触ってみました。
公式ページ: Optuna – A hyperparameter optimization framework
ドキュメント: Welcome to Optuna’s documentation! — Optuna 0.16.0 documentation
まずはインストールと、最も簡単なサンプルから動かしてみましょう。コードはチュートリアルの写経です。
インストールはpipでできました。
$ pip install optuna
そして、チュートリアルの First Optimization をみて、
2次関数の最小値を求めてみましょう。
import optuna
def objective(trial):
x = trial.suggest_uniform('x', -10, 10)
return (x - 2) ** 2
study = optuna.create_study()
study.optimize(objective, n_trials=100)
# 結果表示
print(study.best_params)
# {'x': 1.9825559314627845}
print(study.best_value)
# 0.0003042955271310708
正しそうな結果が得られていますね。
study.optimize
を繰り返し実行することで、追加で探索することもできるようです。
これは便利そう。
# この時点での探索回数
print(len(study.trials))
# 100
# 追加で探索する
study.optimize(objective, n_trials=100)
# 結果表示
print(study.best_params)
# {'x': 1.9857135612242507}
print(study.best_value)
# 0.00020410233289323346
print(len(study.trials))
# 200
とりあえず一番シンプルな例は試したということで、今後もっと実用的な例を試していきたいと思います。
感想としては、hyperoptとほとんど同じように使えるという噂を聞いていたのですが、若干使用感は違うかなぁという気もします。
ただ、最近は Optuna のほうが良い評判を聞くことが多いのでこれに慣れていった方がよさそうです。