ML——贝叶斯优化

本文持续更新,主要主要介绍贝叶斯优化


关于贝叶斯优化

  • 贝叶斯优化(Bayesian Optimization,简称BO)主要用于解决超参数优化问题,目标是找到一组使得目标函数最大或者最小的超参数
  • BO的最大优势是可以使用非常少的步骤找到一个还不错的超参数组合,而且不需要知道目标函数(模型)的梯度
  • BO使用的场景特点:
    • 需要优化的函数(模型)是非常复杂的
    • 需要优化的函数(模型)对指定的变量(一般指超参数)没有梯度信息(求不出梯度)
  • BO不适合使用的场景包括:
    • 离散问题,即参数是离散的,则不适合使用BO
    • 参数太多,即参数维度过高,此时不适合使用BO
  • 和BO的适用场景和进化算法(如CEM等)比较相似

贝叶斯优化的一般步骤

  • 贝叶斯优化(Bayesian Optimization)算法是一个序列决策过程(Sequential Decision-making Problem),其核心框架是SMBO (Sequential Model-Based Optimization),而贝叶斯优化狭义上特指代理模型为高斯过程回归模型的SMBO,SMBO的一般算法思路如下:
    • 第一步:初始化采样n组参数\(\{x_1,x_2,…,x_n\}\)
    • 第二步:针对每组参数,观察目标函数(待优化模型)的值(这一步一般需要训练模型或者模拟环境仿真,是成本比较高的操作),将得到的结果组合生成数据集\(D=\{(x_1,y_1),(x_2,y_2),…,(x_n,y_n)\}\)
    • 第三步:根据数据集D拟合(训练)一个代理模型(Surrogate Model),该代理模型的功能是通过输入\(x_i\)预测输出\(y_i\)
    • 第四步:根据采集函数(Acquisition Function,简称AC Function),选择一个最优参数\(x_i\)
    • 第五步:观察目标函数(待优化模型)在参数\(x_i\)下的输出值\(y_i\),并将\((x_i,y_i)\)添加到数据集D中
    • 循环执行第三步到第五步,直到达到指定的迭代次数
    • 最终:输出数据集D中最优的参数\(x^*\)

代理模型

采集函数

  • 通常做法是设计一个采集函数A,对每个采样点x进行打分,分数越高的点越值得被采样。
  • 一般来说,采集函数需要满足下面的要求:
    • 在已有的采样点处采集函数的值更小,因为这些点已经被探索过,再在这些点处计算函数值对解决问题没有什么用
    • 探索:在置信区间更宽(方差更大)的点处采集函数的值更大,因为这些点具有更大的不确定性,更值得探索
    • 利用:对最大(小)化问题,在函数均值更大(小)的点处采集函数的值更大,因为均值是对该点处函数值的估计值,这些点更可能在极值点附近。
  • 常用的AC Function包括下面几种:
    • Probability of Improvement:
    • Expected Improvement:
    • Entropy Search:
    • Upper Confidence Bound: