Jakub Czakon, Neptune.ai作者和中华、林亦霖校对王菁编辑陈之炎翻译

简单三步实现Python脚本超参数调优(附代码)

在编写完成一个Python脚本之后,便可以用它训练和评估机器学习模型了,现在,问题来了,是否能对它自动调整参数以提高其性能呢?

自有办法!

在本文中,将展示如何将脚本转换为可以用任何参数优化库优化的目标函数

只需要三个步骤,便可实现模型的参数调整。

准备好了?

那就开始吧!

假设main.py 脚本如下所示:

第1步:从代码中解耦出搜索参数

提取想要调整的参数,将它们放在脚本顶部的字典中,这样做之后,便可以有效地将搜索参数与代码的其余部分解耦。

第2步:将训练和评估打包为一个函数


现在,可以将整个训练和评估逻辑放在 train_evaluate函数的内部。此函数以参数为输入,输出验证分数。

第3步:运行参数调整脚本

快要实现了。

现在,利用train_evaluate函数作为选定的黑盒优化库的目标。

本例采用Scikit Optimize实现优化,我在另一篇文章中,对此作了详细描述,同时,你也可以使用其它参数优化库。

Scikit Optimize

https://neptune.ai/blog/scikit-optimize

总之:
  • 定义搜索空间,

  • 创建目标函数以对它最小化,

  • 通过forest_minimize函数运行优化。

在这个例子中,我随机选定了10个参数集,尝试了100种不同的配置下的调优。

这就是全部过程。

result对象包含有关最佳分数和对应参数的信息。

注:如果想在训练结束后进行可视化,并保存诊断图表,那么可以向Neptune中添加一个回调函数和一个记录每次参数搜索的函数。只需调用库中 helper function from neptune-contrib。

helper function from neptune-contrib

https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2&action=edit&isNew=1&type=10&token=832229466&lang=zh_CN#NeptuneMonitor

现在,运行参数扫描时,可以看到以下内容:

查看代码、图表和结果中的skopt hyperparameter sweep experiment。

skopt hyperparameter sweep experiment

https://ui.neptune.ai/jakub-czakon/blog-hpo/e/BLOG-369/charts

结语

 
在本文中,我们学习了如何通过3个步骤对 Python脚本的参数进行优化。

希望有了这些知识,你能更便捷地建立更优的机器学习模型。

相关文献:

参数优化实战

如何自动实现参数优化

用Google Colab的Hyperas实现 Keras参数调优

原文标题:

How to Do Hyperparameter Tuning on Any Python Script in 3 Easy Steps

原文链接:

https://www.kdnuggets.com/2020/04/hyperparameter-tuning-python.html

THU数据派
THU数据派

THU数据派"基于清华,放眼世界",以扎实的理工功底闯荡“数据江湖”。发布全球大数据资讯,定期组织线下活动,分享前沿产业动态。了解清华大数据,敬请关注姐妹号“数据派THU”。

工程超参数Python
11
相关数据
机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

超参数优化技术

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

目标函数技术

目标函数f(x)就是用设计变量来表示的所追求的目标形式,所以目标函数就是设计变量的函数,是一个标量。从工程意义讲,目标函数是系统的性能标准,比如,一个结构的最轻重量、最低造价、最合理形式;一件产品的最短生产时间、最小能量消耗;一个实验的最佳配方等等,建立目标函数的过程就是寻找设计变量与目标的关系的过程,目标函数和设计变量的关系可用曲线、曲面或超曲面表示。

推荐文章
京东・算法工程师
虽然很简单,但是很实用