AutoML--参数自动搜索

2020-05-18  本文已影响0人  吴祺育的笔记

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


1.目前常见的调参方法

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. 不易陷入局部最优
上一篇下一篇

猜你喜欢

热点阅读