在编写完成一个Python脚本之后,便可以用它训练和评估机器学习模型了,现在,问题来了,是否能对它自动调整超参数以提高其性能呢?
自有办法!
在本文中,将展示如何将脚本转换为可以用任何超参数优化库优化的目标函数。
只需要三个步骤,便可实现模型的参数调整。
准备好了?
那就开始吧!
假设main.py 脚本如下所示:
第1步:从代码中解耦出搜索参数
提取想要调整的参数,将它们放在脚本顶部的字典中,这样做之后,便可以有效地将搜索参数与代码的其余部分解耦。
第2步:将训练和评估打包为一个函数现在,可以将整个训练和评估逻辑放在 train_evaluate函数的内部。 此函数以参数为输入,输出验证分数。
第3步:运行超参数调整脚本
快要实现了。
现在,利用train_evaluate函数作为选定的黑盒优化库的目标。
本例采用Scikit Optimize实现优化,我在另一篇文章中,对此作了详细描述,同时,你也可以使用其它超参数优化库。
总之:
·定义搜索空间,
·创建目标函数以对它最小化,
·通过forest_minimize函数运行优化。
在这个例子中,我随机选定了10个参数集,尝试了100种不同的配置下的调优。
这就是全部过程。
result对象包含有关最佳分数和对应参数的信息。
注:
如果想在训练结束后进行可视化,并保存诊断图表,那么可以向Neptune中添加一个回调函数和一个记录每次超参数搜索的函数。 只需调用库中 helper function from neptune-contrib。
现在,运行参数扫描时,可以看到以下内容:
查看代码、图表和结果中的skopt hyperparameter sweep experiment。
结语在本文中,我们学习了如何通过3个步骤对 Python脚本的超参数进行优化。
希望有了这些知识,你能更便捷地建立更优的机器学习模型。
祝训练愉快!