AutoML--参数自动搜索

最近有一个模型调优的事情,正好过年的时候看过automl里面有一个贝叶斯参数优化,尝试用了一下,感觉还比较有效。


1.目前常见的调参方法

  • Grid Search,当参数空间较小时,网格搜索是个不错的选择,并且容易并行化;当参数空间较大时,网格搜索效率会变得极低,通常该方法需结合一定的调参经验来缩小参数空间。
  • Random Search,随机搜索,相当于对参数空间的简单随机抽样,在相同的参数空间下,实际效果要比网格搜索低,但搜索效率更快。有时候会先用随机搜索确定每个参数的大致范围,然后再用网格搜索进行密集运算。
  • 手动调参,靠经验直觉。
  • 自动调参,自动超参数调整形成了关于超参数设置和模型性能之间关系的知识,能利用先验知识选择下一组超参数。
    首先在多个配置中收集性能,然后进行一些推断并确定接下来要尝试的配置。目的是在找到最佳状态时尽量减少试验次数。
    这个过程本质上是顺序的,不容易并行化。
    调整超参数的大多数方法都属于基于顺序模型的全局优化(SMBO)。这些方法使用代理函数来逼近真正的黑盒函数。SMBO的内部循环是对该替代品的优化,或者对代理进行某种转换。最大化此代理的配置将是下一个应该尝试的配置。SMBO算法在优化替代品的标准以及他们根据观察历史对替代品进行建模的方式上有所不同。最近在文献中提出了几种用于超参数的SMBO方法:
    • Bayesian Optimization:使用高斯过程对代理进行建模,通常优化 Expected Improvement(EI),这是新试验将在当前最佳观察上改进的预期概率。高斯过程是函数的分布。来自高斯过程的样本是整个函数。训练高斯过程涉及将此分布拟合到给定数据,以便生成接近观察数据的函数。使用高斯过程,可以计算搜索空间中任何点的EI。接下来将尝试给出最高的EI。贝叶斯优化通常为连续超参数(例如learning rate, regularization coefficient…)提供 non-trivial/off-the-grid 值,并且在一些好的数据集上击败人类表现。Spearmint是一个众所周知的贝叶斯优化实现。
    • SMAC:使用随机森林对目标函数进行建模,从随机森林认为最优的区域(高EI)中抽取下一个点。
    • TPE:是SMAC的改进版本,其中两个分离的模型用于模拟后验。众所周知的TPE实现是hyperopt。

2. 贝叶斯调优

2.1 基础原理

贝叶斯调优的原理是建立在高斯过程回归上,而高斯过程回归则是在求解目标函数的后验分布,具体原理见黄橙橙:高斯过程回归?效果意想不到的好。

假设 x 是超参数集合, f(x) 是模型效,如果模型训练是很快的,那么我们总是可以遍历 x ,找到最优的 f(x) ,如网格搜索。但现实情况则是相反,模型训练的代价是昂贵的,所以我们要充分利用之前已经尝试过的 (x, f(x)) 集合。

因此贝叶斯优化其实就是想求出后验概率 p(f|x, x, f(x)) 的分布,其中 f* 就是指未尝试的f(x),x* 是指对应的未尝试的超参数,而 x, f(x) 则是指尝试过的超参数和模型效果,即 x 的参数下实际训练得到的模型效果。
如果我们能拟合出这个后验概率分布,那么我们就可以在 x 下,预估 f(x) 的值,既然分布都知道了,那么取最优的 x 就可以了。

2.2 基本概念

Prior Function 先验函数

基于概率分布,用于描述目标函数的分布,拟合目标函数曲线。不同的分布,PF不同,效果是不一样的。

Acquisition Function 收获函数

从上面的介绍可以看出,贝叶斯调优是一个顺序模型,即每次取一组参数 x 来得到真实的 f(x) ,从而用得到的结果来矫正对后验概率分布的预估,合理的是,当对参数空间采样越多时,得到的分布就越准确,但是模型训练的代价是昂贵的,我们不能任性的采样,需要一个指标来评估采样的质量。这就是Acquisition Function,也就是收获函数。最简单的收获函数可以设定为max(mean + var),即某组参数下, f(x) 的均值和方差之和取最大值,这是因为均值越大,说明模型效果越好,方差越大,说明该区域评估出的分布不是很准确,需要额外的取样来矫正。

2.3 贝叶斯优化的基本思想

一句话总结:建立目标函数的概率模型,并用它来选择最有希望的超参数来评估真实的目标函数。
基本思想是:利用先验知识逼近未知目标函数的后验分布从而调节超参。花一点时间选择下一个超参数,以减少对目标函数的调用。

建立代理模型的目标函数(Prior Function/先验函数)

  1. 找到在代理上表现最佳的超参数(利用EI值,根据Acquisition Function得出EI)
  2. 将这些超参数应用于真正的目标函数
  3. 更新包含新结果的代理模型
  4. 重复步骤2-4,直到达到最大迭代次数或时间
  5. 基于顺序模型的优化方法(SMBO)是贝叶斯优化的形式化。顺序是指一个接一个地运行试验,每次通过应用贝叶斯推理和更新概率模型(代理)来尝试更好的超参数。

2.4 贝叶斯优化的优点

  1. 能利用先验知识高效地调节超参数,每个试验不独立,前一个推动下一个选择
  2. 通过减少计算任务而加速寻找最优参数的进程
  3. 不依赖人为猜测所需的样本量为多少,优化技术基于随机性,概率分布
  4. 在目标函数未知且计算复杂度高的情况下极其强大
  5. 通常适用于连续值的超参,例如 learning rate, regularization coefficient
  6. 在测试集表现优秀于手工调参结果,泛化性/鲁棒性好
  7. 不易陷入局部最优

你可能感兴趣的:(AutoML--参数自动搜索)