召唤新一代超参调优开源新神器,集十大主流模块于一身

召唤新一代超参调优开源新神器,集十大主流模块于一身

整理 | 凯隐

编辑 | Jane

来源 | AI科技大本营(ID:rgznai100)

Optuna是一款为机器学习任务设计的自动超参数优化软件框架,是一款按运行定义(define-by-run) 原则设计的优化软件,允许用户动态地调整搜索空间,在同类软件中尤属首创,是下一代超参调优框架的代表。接下来,带大家了解 Optuna——新一代超参调优框架。

召唤新一代超参调优开源新神器,集十大主流模块于一身

超参调优简介

在训练神经网络时,模型结构尺度,例如深度,宽度,每层分辨率等,都会影响到模型的最终性能,从这些参数组合中找到最适合当前任务的参数,就是常说的超参调优。

召唤新一代超参调优开源新神器,集十大主流模块于一身

传统的超参调优方法是经验性的手动调整参数,并记录实验结果,然后通过人工分析对比确定下一步的参数调整方向,这种方法吃力且效率低,还容易出错。Optuna的出现大大降低了超参调优的难度,下面让我们来看看Pptuna是如何工作的吧!

召唤新一代超参调优开源新神器,集十大主流模块于一身

Optuna工作方式和特点

1、按运行定义

首先通过 pip 命令安装 Optuna:

召唤新一代超参调优开源新神器,集十大主流模块于一身

以层数搜索为例,我们需要优化的是一个用于分类的多层感知器的层数以及每一层的神经元个数:

召唤新一代超参调优开源新神器,集十大主流模块于一身

将运行代码(5-11行)重新嵌入到试验(trial)函数中,试验函数通过单次执行代码来得到一组参数组合下的结果:

召唤新一代超参调优开源新神器,集十大主流模块于一身

然后添加一个关于层数的 for 循环:

召唤新一代超参调优开源新神器,集十大主流模块于一身

以及每层中神经元个数的 for 循环:

召唤新一代超参调优开源新神器,集十大主流模块于一身

最后定义一个 study 对象,将trial训练结果作为优化目标,便可以通过多次实验找出最优超参数组合,这里设置的实验次数(n_trials=100)是 100 次:

召唤新一代超参调优开源新神器,集十大主流模块于一身

完成以上步骤,便可以运行程序,让optuna来自动完成搜索过程,因此 Optuan 是一个专门为自动化设计的框架。此外我们可以看到代码编写是非常简单的,且非常灵活,可以随时调整搜索空间和次数上限,这也体现了Optuna按运行定义的特点。

2、并行分布式计算

上面的例子中我们使用的只是一个很简单的示例网络,但大部分情况下网络和数据集都要比示例大得多,此时 Optuna 的另一个特点就体现出来了:

召唤新一代超参调优开源新神器,集十大主流模块于一身

在上述代码中,我们将搜索过程做了并行化处理,这样实际运行时效果就如同下图:

召唤新一代超参调优开源新神器,集十大主流模块于一身

并行化处理能大幅减低调优所需时间,从而加速优化过程。此外 Optuna 还具有剪枝优化功能,即提前结束并行化实验中的低质量参数实验,从而提高效率。

3、支持多类型任务和框架

Optuna 不仅可以用于实验调参,也可以轻松地部署到生产作业以及数据分析任务中:

召唤新一代超参调优开源新神器,集十大主流模块于一身

Optuna 的环境依赖非常简单,并且能独立地完成任务:

召唤新一代超参调优开源新神器,集十大主流模块于一身

此外,Optuna 还支持许多其他深度学习框架和模块,例如 Tensorflow,Keras,PyTorch,MXNet等。

召唤新一代超参调优开源新神器,集十大主流模块于一身 召唤新一代超参调优开源新神器,集十大主流模块于一身

使用 Optuna

Optuna可以通过 pip 或 conda 指令进行安装,目前支持 python3.5 以上的版本,更多相关资料详见官网,官方文档,以及 Github 主页。

召唤新一代超参调优开源新神器,集十大主流模块于一身

https://optuna.org/

https://optuna.readthedocs.io/en/stable/

https://github.com/optuna/optuna

来源:CSDN

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年1月18日
下一篇 2020年1月18日

相关推荐