黑白科技 用简单术语让你看到贝叶斯优化之美( 二 )


黑白科技 用简单术语让你看到贝叶斯优化之美
文章图片
左图:基于4个数据点生成的几个基于高斯过程的函数;右图:将这些函数聚合之后 。
OscarKnagg这篇文章直观地介绍了高斯过程的工作方式:https://towardsdatascience.com/an-intuitive-guide-to-gaussian-processes-ec2f0b45c71d
为什么要使用高斯过程来建模代理函数 , 而不是使用其它曲线拟合方法?这是因为高斯过程本质上就是贝叶斯模式的 。 高斯过程是一种概率分布 , 就像一个事件的最终结果分布一样(比如掷硬币的1/2概率) , 只不过高斯过程是在所有可能的函数上的分布 。
举个例子 , 我们也许可以定义当前的数据点集可由函数a(x)表示40%、由函数b(x)表示10%等等 。 通过将代理函数表示成概率分布 , 可使用新信息 , 通过固有的概率贝叶斯过程来完成更新 。 也许当新信息被引入时 , a(x)函数又只能表示20%的数据了 。 这样的变化受贝叶斯公式的约束 。
这会使得类似于新数据点的多项式回归拟合这样的目标难以完成甚至不可能完成 。
表示成先验概率分布的代理函数会通过一个「获取函数(acquisitionfunction)」而更新 。 这个函数负责在探索与利用权衡的基础上 , 对提议的新点进行测试 。
利用的目标是采样代理模型能很好地预测目标函数的地方 。 这会用到已知的有潜力的位置 。 但是 , 如果我们已经充分探索了某个特定的区域 , 再继续利用已知信息也收益不大了 。
探索的目标是采样不确定度较高的位置 。 这能确保空间中不留下未探索的主要区域——全局最小值可能就藏在此处 。
太过重视利用而不太重视探索的获取函数会让模型驻留于其发现的第一个最小值(通常是局部最小值) 。 反过来 , 重探索而轻利用的获取函数则一开始就不会留在某个最小值 , 不管是局部最小值还是全局最小值 。 因此 , 为了得到很好的结果 , 需要达到微妙精巧的平衡 。
获取函数a(x)必须兼顾探索和利用 。 常见的获取函数包括预期提升和提升的最大可能性 , 所有这些衡量的都是给定有关先验(高斯过程)的信息下 , 一个特定输入在未来产生回报的概率 。
我们归总一下这些知识点 。 贝叶斯优化的执行方式为:
初始化一个高斯过程「代理函数」先验分布 。
选择几个数据点x使得获取函数a(x)在当前先验分布上的结果是最大的 。
在目标成本函数c(x)中评估数据点x并获取其结果y 。
使用新数据更新高斯过程先验分布 , 得到一个后验分布(这将作为下一步的先验分布) 。
重复第2-5步并多次迭代 。
解读当前的高斯过程分布(成本很低) , 找到全局最小值 。
贝叶斯优化的核心是将概率思想融入到代理优化思想之中 。 这两种思想组合到一起 , 能创造出一种强大的系统 。 该系统具有很多应用场景 , 从医药产品开发到自动驾驶汽车 。
不过 , 贝叶斯优化最常见的应用领域还是机器学习 , 尤其是超参数优化任务 。 举个例子 , 如果我们要训练一个梯度上升分类器 , 则会遇到几十个超参数 , 从学习率到最大深度再到最小不纯度拆分值 。 在这里 , x表示模型的超参数 , c(x)表示模型在给定超参数x下的表现 。
使用贝叶斯优化的主要动机是:在有些场景中 , 评估输出的成本非常高 。 首先 , 需要使用这些参数构建一整个集成树;其次 , 它们需要运行并完成几次预测 , 这对于集成方法来说成本高昂 。
可以这样说 , 在给定一组参数的条件下 , 使用神经网络来评估损失函数的速度更快:只是重复执行矩阵乘法 , 这是非常快的 , 尤其是使用专用计算硬件时 。 这是使用梯度下降的原因之一 , 也就是反复查询以找到前进的方向 。
总结
代理优化是使用一个代理函数或近似函数来通过采样估计目标函数 。