OPTUNA

Optuna:一个超参数优化框架

Optuna 是一个自动超参数优化软件框架,尤其为机器学习设计。它具有命令式的、即时定义 (define-by-run) 风格的用户 API。感谢我们的即时定义 (define-by-run) API,使用 Optuna 编写的代码享有高度的模块化,Optuna 用户可以动态地构建超参数的搜索空间。

主要特性

Optuna 拥有如下的现代功能:

基本概念

我们如下使用术语study(研究)和trial(试验):

  • Study: 基于目标函数进行的优化

  • Trial: 目标函数的单次执行

请参考下面的示例代码。study 的目标是通过多次trial(例如,n_trials=100)来找出最佳的超参数值集合(例如,classifiersvm_c)。Optuna 是一个为自动化和加速优化study 而设计的框架。

Open in Colab

import ...

# Define an objective function to be minimized.
def objective(trial):

    # Invoke suggest methods of a Trial object to generate hyperparameters.
    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  # An objective value linked with the Trial object.

study = optuna.create_study()  # Create a new study.
study.optimize(objective, n_trials=100)  # Invoke optimization of the objective function.

Web Dashboard

Optuna Dashboard 是 Optuna 的实时 Web Dashboard。您可以通过图表和表格查看优化历史、超参数重要性等。您无需编写 Python 脚本来调用Optuna 的可视化函数。功能请求和 Bug 报告均受欢迎!

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

optuna-dashboard 可以通过 pip 安装

$ pip install optuna-dashboard

提示

请查看 Optuna Dashboard 官方文档的入门部分。

OptunaHub

OptunaHub 是 Optuna 的功能共享平台。您可以使用注册的功能并发布您的软件包。更多详情,请参阅官方文档

_images/optunahub-introduction.png

optunahub 可以通过 pip 安装

$ pip install optunahub

交流

贡献

欢迎任何对 Optuna 的贡献!当您提交 Pull Request 时,请遵循贡献指南

许可

MIT 许可(参见LICENSE)。

Optuna 使用了 SciPy 和 fdlibm 项目的代码(参见第三方许可)。

参考文献

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

目录

索引和表格