Optuna: 一个超参数优化框架
Optuna 是一个自动超参数优化软件框架,特别为机器学习设计。它具有一种命令式的、*定义即运行*风格的用户API。得益于我们的*定义即运行*API,使用Optuna编写的代码具有高模块化,Optuna的用户可以动态构建超参数的搜索空间。
主要特点
Optuna 具有以下现代功能:
-
通过简单的安装处理各种任务,且需求很少。
-
使用熟悉的 Python 语法(包括条件和循环)定义搜索空间。
-
采用最先进的算法来采样超参数并有效剪枝不具前景的试验。
-
无需或仅需少量代码修改,即可将研究规模扩展到数十或数百个工作者。
-
从各种绘图函数中检查优化历史。
基本概念
我们使用术语 研究 和 试验 如下:
研究:基于目标函数的优化
试验:目标函数的单次执行
请参考下面的示例代码。研究 的目标是通过多个 试验 (例如,n_trials=100
)找出最优的超参数值集(例如,classifier
和 svm_c
)。Optuna 是一个为优化 研究 的自动化和加速而设计的框架。
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 仪表板
Optuna Dashboard 是一个 Optuna 的实时网页仪表板。您可以在图表和表格中查看优化历史、超参数重要性等。您无需创建 Python 脚本来调用 Optuna 的可视化 功能。欢迎提出功能请求和错误报告!
![https://user-images.githubusercontent.com/5564044/204975098-95c2cb8c-0fb5-4388-abc4-da32f56cb4e5.gif](https://user-images.githubusercontent.com/5564044/204975098-95c2cb8c-0fb5-4388-abc4-da32f56cb4e5.gif)
optuna-dashboard
可以通过 pip 安装:
$ pip install optuna-dashboard
小技巧
请查看 Optuna Dashboard 官方文档的 入门指南 部分。
通信
GitHub 讨论 用于提问。
GitHub Issues 用于错误报告和功能请求。
贡献
欢迎对 Optuna 的任何贡献!当你发送拉取请求时,请遵循 贡献指南。
许可证
MIT 许可证(参见 LICENSE)。
Optuna 使用了来自 SciPy 和 fdlibm 项目的代码(参见 第三方许可证)。
参考
Takuya Akiba, Shotaro Sano, Toshihiko Yanase, Takeru Ohta, 和 Masanori Koyama. 2019. Optuna: 下一代超参数优化框架. 在 KDD (arXiv).
目录:
- 安装
- 教程
- API 参考
- 常见问题解答
- 我可以用 Optuna 和 X 一起使用吗?(其中 X 是你最喜欢的机器学习库)
- 如何定义具有自身参数的目标函数?
- 我可以不使用远程RDB服务器来使用Optuna吗?
- 如何保存和恢复学习?
- 如何抑制 Optuna 的日志消息?
- 如何在目标函数中保存训练好的机器学习模型?
- 如何获得可重复的优化结果?
- 试验中的异常是如何处理的?
- 试验返回的NaN如何处理?
- 当我动态改变搜索空间时会发生什么?
- 如何同时使用两块GPU来评估两个试验?
- 我如何测试我的目标函数?
- 在优化研究时,如何避免内存不足(OOM)?
- 我如何才能只在最佳值更新时输出日志?
- 如何建议表示比例的变量,即符合狄利克雷分布的变量?
- 如何使用一些约束条件优化模型?
- 如何并行化优化?
- 如何在执行SQLite3的并行优化时解决出现的错误?
- 我可以监控试验并在它们意外终止时自动标记为失败吗?
- 如何处理排列作为参数?
- 如何忽略重复的样本?
- 如何删除上传到研究中的所有工件?
索引和表格
总索引
模块索引
搜索