掌握机器学习调参的8大技巧

总结了八种机器学习调参技巧,助力优化模型性能。

原文标题:机器学习8大调参技巧!

原文作者:数据派THU

冷月清谈:

本文介绍了机器学习调参的八种有效技巧,这些技巧帮助用户更好地调整模型的超参数,以实现最佳性能。首先提到贝叶斯优化,适合复杂模型,并能有效优化昂贵的黑盒函数;遗传算法则因其通用性和强大的适用性而优于传统的网格搜索。接下来,基于梯度的优化提供了多参数优化的方法,而网格搜索作为基础方法,详尽搜索用户指定的超参数,确保找到最优组合。此外,Keras Tuner作为深度学习模型的调参工具,也为追求准确性提供了支持。基于种群的优化方法与随机搜索同样被提及,前者结合了并行和顺序优化,而后者则被认为是比网格搜索更有效的改进方法。《机器学习算法那些事》一文对这些技术的应用与优势进行了详细探讨。

怜星夜思:

1、你认为哪个超参数调优方法在实际应用中最有效?
2、调参过程中遇到的常见问题你是怎么解决的?
3、在调参过程中,有哪些工具你认为特别好用?

原文内容

图片
来源:机器学习算法那些事

本文约1200字,建议阅读5分钟

今天给大家一篇关于机器学习调参技巧的文章。


超参数调优是机器学习例程中的基本步骤之一。该方法也称为超参数优化,需要搜索超参数的最佳配置以实现最佳性能。
机器学习算法需要用户定义的输入来实现准确性和通用性之间的平衡。这个过程称为超参数调整。有多种工具和方法可用于调整超参数。
原文出处:https://analyticsindiamag.com/top-8-approaches-for-tuning-hyperparameters-of-machine-learning-models/
我们整理了一份用于调整机器学习模型超参数的前八种方法的列表。

1 贝叶斯优化


贝叶斯优化已成为机器学习算法超参数调整的有效工具,更具体地说,适用于深度神经网络等复杂模型。


它提供了一个有效的框架来优化昂贵的黑盒功能,而无需知道它的形式。它已应用于多个领域,包括学习最优机器人力学、序列实验设计和合成基因设计。


2 遗传算法


遗传算法 (EA) 是一种优化算法,它通过根据称为算子的某些规则修改一组候选解决方案(种群)来工作。


EA 的主要优势之一是它们的通用性:这意味着 EA 可以在广泛的条件下使用,因为它们简单且独立于潜在问题。在超参数调整问题中,遗传算法已被证明比基于精度/速度的网格搜索技术表现更好。


3 基于梯度的优化


基于梯度的优化是一种优化多个超参数的方法,基于机器学习模型选择标准相对于超参数的梯度计算。


当满足训练标准的一些可微性和连续性条件时,可以应用这种超参数调整方法。


4 网格搜索


网格搜索是超参数调优的基本方法。它对用户指定的超参数集执行详尽的搜索。这种方法是最直接的导致最准确的预测。


使用这种调优方法,用户可以找到最佳组合。网格搜索适用于几个超参数,但是搜索空间有限。


5 Keras Tuner


Keras Tuner是一个库,允许用户为机器学习或深度学习模型找到最佳超参数。


该库有助于查找内核大小、优化学习率和不同的超参数。Keras Tuner可用于为各种深度学习模型获取最佳参数,以实现最高精度。


6 基于种群的优化


基于种群的方法本质上是一系列基于随机搜索(如遗传算法)的方法。


最广泛使用的基于种群的方法之一是 DeepMind 提出的基于种群的训练(PBT)。PBT在两个方面,是一种独特的方法:

  • 它允许在训练期间使用自适应超参数

  • 它结合了并行搜索和顺序优化


7 ParamILS


ParamILS(参数配置空间中的迭代局部搜索)是一种用于自动算法配置的通用随机局部搜索方法。ParamILS 是一种自动算法配置方法,有助于开发高性能算法及其应用程序。


ParamILS 使用默认和随机设置进行初始化,并采用迭代第一改进作为辅助本地搜索过程。它还使用固定数量的随机移动来进行扰动,并且总是接受更好或同样好的参数配置,但会随机重新初始化搜索。


8 随机搜索


随机搜索可以说是对网格搜索的基本改进。该方法是指对可能参数值的某些分布的超参数进行随机搜索。


搜索过程继续进行,直到达到所需的精度。随机搜索类似于网格搜索,但已证明比后者创建更好的结果。


该方法通常被用作 HPO 的基线来衡量新设计算法的效率。尽管随机搜索比网格搜索更有效,但它仍然是一种计算密集型方法。

编辑:文婧

Keras Tuner是我合理且常用的工具,特别是在处理神经网络模型时,能快速找到最优超参数,节省了很多时间。

我觉得Scikit-learn里的GridSearchCV和RandomizedSearchCV也非常实用,能让调参变得系统化,使用起来很方便。

还有Optuna,也算是个新兴的工具吧,功能强大,能够更好地进行超参数优化,有兴趣的朋友可以试试!

常见问题就是过拟合,特别是在调参数时容易调整过度。我通常会通过交叉验证来检查模型的表现,帮助我找到较为平衡的参数。

我有时候会用可视化工具来监控超参数对模型性能的影响,这样能直观地发现哪些参数设置可能出现问题。

调参时间长是个问题,特别是在数据量大的时候。我倾向于先使用随机搜索大致找个方向,再用网格搜索精细调参。

我觉得贝叶斯优化还是挺不错的,尤其是在处理复杂模型时,效率高而且能够避免无谓的计算。不过对于简单的模型,网格搜索可能更为直观。

我个人比较喜欢遗传算法,感觉它的随机性质在某些情况下可以找到意想不到的解决方案,尤其是在搜索空间特别大的时候,优势明显。

实际上,最有效的调优方法往往取决于具体的项目需求。我觉得在很多情况下,随机搜索的效率稳定而且易于实施,可以作为比较的基础。