0x03 贝叶斯优化
为何使用贝叶斯优化
x为一组超参数, f(x)为评价模型预测结果的指标函数, 往往是值越大越好. 因此, 超参数的选择的目标等同于x∈Xmaxf(x).
但f(x)没有解析表达式, 其形式位置, 不能使用与梯度相关的优化算法.
而且常用的Grid Search和Random Search都是效果一般的算法, 在有限计算资源下的调参不一定比手动调节更好.
贝叶斯优化过程
首先明确贝叶斯优化算法模型中, 样本点的概念. 这里每个样本点是由一组超参数和对应的模型评价函数值共同组成.
假设已经存在几个样本点, 通过高斯过程回归, 我们认为所有超参数样本点之间符合联合高斯分布. 因此, 计算前面n个点的后验概率分布, 得到超参数在每一个取值点的分布, 由于在每个点上都是一个高斯分布, 得到分布就得到了这个超参数点的均值和方差. 下图中虚线就是计算的每个超参数取值点的均值得到的曲线, 绿色范围就是高斯分布与方差有关的置信区间.

均值越大, 表示模型的最终评价指标值越大, 方差表示这个点结果的不确定性, 因此:
均值大代表期望越好, 选择均值大的点作为下一个探索点称之为explortation, 即开发
方差大的点也有可能存在全局最优点, 即结果的可能上限高, 选择方差大的点作为下一个探索点我们称之为exploration探索.
我们选取下一组超参数作为下一个探索点, 就需要权衡explortation和exploration. 使用acquisition function完成这项工作. 对于acquisition function有多种选择, 常见的有以下几个, 会在后面详细描述:
Upper confidence bound
Expected improvement
Entropy search
对于每一步, 求得acquisition function的最大值, 最大值这个点对应的超参数就是优化过程中算法在当前步推荐的一组超参数值.

比如上图中下方图中的星星就是当前步选择的最优超参数点. 这组超参数是根据超参数间的联合概率分布求出, 并且权衡了explortation和exploration后得到的结果.
使用这组超参数训练模型, 得到模型的评价指标的数值. 这样对于贝叶斯优化模型来说样本数就增加了一个, 重新计算超参数之间的后验概率分布和acquisition function:

不断重复上述步骤.
贝叶斯优化的数学表达
贝叶斯算法的核心步骤为:
通过样本点D={(x1,y1),⋯,(xt,yt)}构建联合概率分布, 得到对所有x点的后验概率分布f(x), 也即高斯过程f(x)
通过上面计算得到的高斯过程计算得到acquisition function a(x), 根据a(x)的最大值对应的点直到下次采样
我们需要估计的模型就是高斯过程 f(x), 即模型在每组超参数的表现的分布如何, 将高斯过程记为:
f(x)∼GP(E(x),K(x,x′))
均值函数是关于超参数x的函数, 协方差矩阵是关于超参数的核函数.
对于一组样本点D={(x1,y1),⋯,(xt,yt)}, 为了方便推导, 假设数据被中心化即f(x)∼GP(0,K), 其中K为:
k(x1,x1)⋮k(xt,x1)⋯⋱⋯k(x1,xt)⋮k(xt,xt)
对于一个新样本xt+1, 则协方差矩阵更新如下:
K=[KkkTk(xt+1,xt+1)]
其中k向量由核函数计算得到k=[k(xt+1,x1),k(xt+1,x2),⋯,k(xt+1,xt)].
有了新的协方差矩阵, 就可以根据前t个样本估计出f(xt+1)的后验概率分布:
P(ft+1∣D1:t,xt+1)∼N(μ,σ2)
μ=kTK−1f1:t
σ2=k(xt+1,xt+1)−kTK−1k
对于每个超参数点, 我们都能计算得到这个后验概率分布, 如何根据所有点的分布确定下一组实验的超参数, 就要使用到之前所说的acquisition function a(x). 其作用在上一小节中有描述, 下面介绍常用的两种方程:
Upper Confidence Bound
a(x∣D)=UCB(x)=μ(x)+ασ(x)
其中α是一个超参数. 这个函数的意义是均值加上一定倍数的标准差作为判别.
Expected Improvement
首先定义fbest为历史样本点中评价指标的最大值, 是一个经过训练预测得到的确定的数值. 则有:
其中z=σ(x)fbest−μ(x), Φ(⋅)是高斯分布的累计概率函数, ϕ(⋅)是高斯分布的概率密度函数. 所以有:
a(x∣D)=Ey∼f(x∣D)[max(0,y−fbest)]={σ(x)zΦ(z)+σ(x)ϕ(z),0,y>fbestotherwise
贝叶斯优化中的超参数
贝叶斯优化模型本身也是有超参数的, 可以称之为超超参数, 例如acquisition function的选择等. 对于这些超超参数, 使用业界公认的比较好的方案即可.
最后更新于