本文主要是介绍或许是东半球最好用的超参数优化框架: Optuna 简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今年夏天参与了一个我很喜欢的超参数框架 Optuna (https://optuna.org)的文档翻译工作。现在翻译已经基本完成(https://zh-cn.optuna.org),而 Optuna 更成熟的 2.0 版本最近也要发布了。于是我们决定写一个介绍,希望让更多的中文用户了解和使用这个框架,并且能参与到社区中间来。
Tensorflow 和 Pytorch 已经将实现深度学习模型变成一个 10 分钟不到的过程:声明模型,定义参数、优化器,载入训练数据,启动梯度下降。然后一个接着一个 epoch, 模型在测试集上的精度稳步提升... 但是等等,在现实中,训练一个模型从来不会这么顺利,你总会碰到各种各样的问题,比如:
- 结果和paper上写的不一样(优化)
- 有些参数组合根本训练不出来,还把训练脚本搞崩溃了,你却不知道原因所在
- 训出来也不知道这个参数范围是否稳定(参数关系)
上面这些情况说明了超参数选择对于模型性能的重要性。于是为了调参,你开始手动往脚本里加内容:超参数优化不就是 for 循环里套 for 循环嘛,很简单。可很快,你又会其他碰到问题:
- 有一台好机器,for 循环一次却只能执行一个模型,浪费性能
- 优化完的参数输出到了一个 txt,还得自己写解析来分析
- for 循环里有些参数只是运气好,实际部署上去并不一样
总之你会碰到非常多问题,它们会浪费你的时间。而 Optuna 则是帮助你解决上面所有这些问题的一个工具,解放你的双手和时间,让你能更加专注于模型实现。它将定义一个超参数优化过程变得 非常简单,而且易于保存,方便分析,还支持无缝扩展。
Talk is cheap, show me the code. 我们将通过一个例子来展示 Optuna 的上述优点。
定义简单
一个极简的 optuna 的优化程序中只有三个最核心的概念,目标函数(objective),单次试验(trial),和研究(study). 其中 objective 负责定义待优化函数并指定参/超参数数范围,trial 对应着 objective 的单次执行,而 study 则负责管理优化,决定优化的方式,总试验的次数、试验结果的记录等功能。
假如要在 的范围内找到 这个函数的最大值对应的 ,那我们只需要下面的代码:
这篇关于或许是东半球最好用的超参数优化框架: Optuna 简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!