机器学习中参数调优的目的是为了找到模型在测试集上表现最好的参数,目前常见的调参方法主要有四种:
- 1、手动调参;
- 2、网格搜索;
- 3、随机搜索;
- 4、基于贝叶斯方法的参数调优。
上面四种方法从上到下效率是依次上升的。除此之外,其实还有遗传算法和梯度算法可用来调参,但是梯度算法是不适用于调节超参的。超参数是指模型在训练之前人为设置的参数,例如随机森林中的树数量是一个超参数,而神经网络中的权重则不是,权重是训练期间学习得到的模型参数。
贝叶斯超参调优的简单总结就是:建立目标函数的概率模型,并使用它选择最优的超参数以对真实目标函数进行评估。
超参调优可用下式来表示:
其中f(x)表示模型的目标函数(或称loss函数),如RMSE。x*则是使得f(x)得分最好的参数。
手动调参是一件非常费时费力的工作,网格调参和随机调参虽然没那么费力但是费机器。网格调参和随机调参一个很关键的缺点是其不能从已经搜索过的参数结果中获取信息。从贝叶斯角度来说,网格调参和随机调参无法将已经搜索过的参数有效转化为先验信息,并与后续的最优参数选择(即后验)建立联系。而贝叶斯调参则是对这一点进行了改进,其将已搜索过的参数作为参数的先验信息并以其为基础选择出最优(后验)参数。
因此我们可以先使用一个替代目标函数来找出当前最优参数,即
其中 x*表示未使用过的参数组合,而 f* 则表示 x* 参数时候的目标函数的得分。x, y 分别表示已使用过的参数和其对应的目标函数得分。因此我们的替代函数的目标就是在已使用的参数分布的基础上进行搜索得到可能的最优解,一步一步不断更新,每一步试探都会更新我们的参数分布,使得参数搜索更加准确。这个其实跟贝叶斯原理是一致的,利用先验来推断后验,先验信息越丰富,后验结果也就越准确。
因此,贝叶斯调参的步骤为:
- 1、建立一个替代目标函数的概率模型,我们暂且称之为替代函数;
- 2、找到使替代函数概率最大化的参数;
- 3、将找到的参数代入机器学习模型中进行训练,得到原目标函数得分;
- 4、更新目标函数的先验分布 (x, y);
-
5、重复2-4步直到达到最大迭代次数或最大时长。
基于序列模型的优化方法(Sequential model-based optimization (SMBO) methods (SMBO))是贝叶斯优化的一种形式。序列模型是指我们会进行多次参数尝试,通过贝叶斯推断和更新替代函数的先验分布概率,每一次都会比之前的结果要更加好。
基于模型的参数优化方法更详细的步骤:
- 1、确定一个参数搜索空间;
- 2、机器学习模型的目标函数(或loss函数),这个函数是与超参密切相关的。每一组参数在模型的目标函数上都会得到一个得分,我们的目标就是要最大或最小化这个得分;
- 3、建立目标函数的替代函数;
- 4、选择函数,评估参数在替代函数上面的得分,以选择得分最高的参数;
- 5、将参数应用到机器学习模型中,得到参数的得分,更新替代函数的先验分布;
- 6、重复4-5步直到达到最大迭代次数。
不同的优化方法的区别主要在3、4步,即如何来建立替代函数和使用何种指标来选择出当前最优参数。
替代函数的建模主要有高斯过程(实现有BayesianOptimization,MOE和spearmint),随机森林回归(SMAC3实现)和TPE(Tree Parzen Estimators,SMAC的改进版本,hyperopt实现)。
选择函数(指标)主要使用Expected Improvement(EI),这是新试验将在当前最佳观察上改进的预期概率。
小结:
基于贝叶斯模型的优化方法将建立目标函数的概率模型,以便为下一组要评估的超参数提出更明智的选择。 SMBO是贝叶斯优化的形式化形式,它比随机或网格搜索更有效地为机器学习模型找到最佳超参数。
本文主要介绍了贝叶斯优化的直观理解,并未涉及太多数学推理知识,详细原理可参考各个实现方法中的参考论文。
参考:
A Conceptual Explanation of Bayesian Hyperparameter Optimization for Machine Learning
机器学习-贝叶斯自动调参-20190104
Auto Machine Learning笔记 - Bayesian Optimization
BayesianOptimization
MOE
spearmint
SMAC3
hyperopt