超参数优化框架
项目描述
Optuna:超参数优化框架
Optuna是一个自动超参数优化软件框架,专为机器学习而设计。它具有命令式、运行时定义的用户 API。由于我们的 define-by-run API,使用Optuna编写的代码具有高度模块化,并且Optuna的用户可以动态地构建超参数的搜索空间。
消息
-
2022-02-14 Optuna 3.0 的预发布版本可用!早期采用者可能希望升级并提供反馈,以便更顺畅地过渡到即将到来的完整版本。您可以通过
pip install -U --pre optuna
. 在这里找到最新的 -
2021-10-11 Optuna 3.0 路线图发布以供审查。请查看对 Optuna 的计划改进,并在 github 问题中分享您的反馈。也欢迎 PR 贡献!
主要特征
Optuna 具有以下现代功能:
- 轻量级、多功能且与平台无关的架构
- 只需很少要求的简单安装即可处理各种任务。
- Pythonic 搜索空间
- 使用熟悉的 Python 语法定义搜索空间,包括条件和循环。
- 高效的优化算法
- 采用最先进的算法对超参数进行采样并有效地修剪没有希望的试验。
- 易于并行化
- 将研究扩展到数十或数百个或对代码几乎没有更改的工人。
- 快速可视化
- 检查各种绘图功能的优化历史记录。
基本概念
我们使用以下术语研究和试验:
- 研究:基于目标函数的优化
- 试验:目标函数的单次执行
请参考下面的示例代码。研究的目标是通过多次试验(例如
)找出最佳的超参数值集(例如regressor
和)。Optuna 是为优化研究的自动化和加速而设计的框架。svr_c
n_trials=100
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('regressor', ['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.
例子
示例可以在optuna/optuna-examples中找到。
集成
集成模块,允许修剪或提前停止没有希望的试验,可用于以下库:
- 艾伦NLP
- 催化剂
- Catboost
- 链纳
- 快速人工智能(V1,V2)
- 喀拉斯
- 光GBM
- MXNet
- PyTorch
- PyTorch 点燃
- PyTorch 闪电
- TensorFlow
- tf.keras
- XGBoost
网络仪表板(实验性)
optuna-dashboard正在开发新的 Web 仪表板。它仍然是实验性的,但在许多方面要好得多。欢迎功能请求和错误报告!
管理研究 | 使用交互式图表进行可视化 |
---|---|
optuna-dashboard
通过 pip安装:
$ pip install optuna-dashboard
$ optuna-dashboard sqlite:///db.sqlite3
...
Listening on http://localhost:8080/
Hit Ctrl-C to quit.
安装
Optuna 在Python Package Index和Anaconda Cloud上可用。
# PyPI
$ pip install optuna
# Anaconda Cloud
$ conda install -c conda-forge optuna
Optuna 支持 Python 3.6 或更高版本。
此外,我们还在 DockerHub 上提供了 Optuna docker镜像。
沟通
- GitHub 讨论问题。
- 用于错误报告和功能请求的GitHub 问题。
- Gitter用于与开发人员进行交互式聊天。
- 堆栈溢出问题。
贡献
任何对 Optuna 的贡献都非常受欢迎!
如果您是 Optuna 的新手,请查看良好的第一个问题。它们相对简单、定义明确,通常是您熟悉贡献工作流程和其他开发人员的良好起点。
如果您已经为 Optuna 做出过贡献,我们推荐其他的贡献欢迎问题。
有关如何为项目做出贡献的一般指南,请查看CONTRIBUTING.md。
参考
秋叶拓哉、佐野翔太郎、柳濑俊彦、太田健、小山正典。2019. Optuna:下一代超参数优化框架。在 KDD ( arXiv ) 中。