OPTUNA

Optuna: ハイパーパラメータ最適化フレームワーク

Optuna は機械学習向けに設計された自動ハイパーパラメータ最適化ソフトウェアフレームワークです。 命令型の define-by-run スタイルのユーザーAPIを備えており、 define-by-run APIにより、Optunaで記述されたコードは高いモジュール性を持ち、 ユーザーはハイパーパラメータの探索空間を動的に構築できます。

Note

本資料は、 Optuna公式ドキュメントPLaMo翻訳 を活用して日本語に翻訳、一部手作業による修正を加えたものです。 翻訳対象のリビジョンは optuna/optuna@219726d65 です。 現時点では試作・検証段階であり、長期的な運用フローが確立していないため、今後のOptunaアップデートに継続的に対応することは保証できません。 あらかじめご注意ください。

主な特徴

Optunaには以下のような最新の機能があります:

基本概念

以下の用語を以下のように定義します:

  • study: 目的関数に基づく最適化

  • trial: 目的関数の単一実行

以下のサンプルコードを参照してください。 study の目的は、 複数の trial (例:n_trials=100)を通じて最適なハイパーパラメータ値 (例:classifiersvm_c)を見つけることです。Optunaは最適化 の自動化と高速化を目的としたフレームワークです。

Colabで開く

import ...

# 最小化する目的関数を定義
def objective(trial):

    # Trialオブジェクトのsuggestメソッドを呼び出してハイパーパラメータを生成
    regressor_name = trial.suggest_categorical('classifier', ['SVR', 'RandomForest'])
    if regressor_name == 'SVR':
        svr_c = trial.suggest_float('svr_c', 1e-10, 1e10, log=True)
        regressor_obj = sklearn.svm.SVR(C=svr_c)
    else:
        rf_max_depth = trial.suggest_int('rf_max_depth', 2, 32)
        regressor_obj = sklearn.ensemble.RandomForestRegressor(max_depth=rf_max_depth)

    X, y = sklearn.datasets.fetch_california_housing(return_X_y=True)
    X_train, X_val, y_train, y_val = sklearn.model_selection.train_test_split(X, y, random_state=0)

    regressor_obj.fit(X_train, y_train)
    y_pred = regressor_obj.predict(X_val)

    error = sklearn.metrics.mean_squared_error(y_val, y_pred)

    return error  # Trialオブジェクトに紐づく目的値

study = optuna.create_study()  # 新しいstudyを作成
study.optimize(objective, n_trials=100)  # 目的関数の最適化を実行

Webダッシュボード

Optuna Dashboard はOptunaのリアルタイムWebダッシュボードです。 最適化履歴やハイパーパラメータの重要度などをグラフや表で確認できます。 Optunaの可視化 機能を呼び出すために Pythonスクリプトを作成する必要はありません。機能要望やバグ報告を歓迎します!

https://user-images.githubusercontent.com/5564044/204975098-95c2cb8c-0fb5-4388-abc4-da32f56cb4e5.gif

optuna-dashboard はpipでインストール可能です:

$ pip install optuna-dashboard

Tip

Optuna Dashboardの公式ドキュメントの Getting Started セクションをご覧ください。

コミュニケーション

貢献

Optunaへの貢献を歓迎します!プルリクエストを送る際は、 貢献ガイド に従ってください。

ライセンス

MITライセンス(LICENSE 参照)

OptunaはSciPyとfdlibmプロジェクトのコードを使用しています( Third-party License 参照)。

参考文献

Takuya Akiba, Shotaro Sano, Toshihiko Yanase, Takeru Ohta, and Masanori Koyama. 2019. Optuna: A Next-generation Hyperparameter Optimization Framework. In KDD (arXiv).

目次:

索引と表