万微科技2016|贝叶斯优化之美:精妙算法背后的直觉( 二 )


文章图片
左:四个数据点的几个高斯过程生成的函数 。 右:函数聚合 。 |图源:OscarKnagg
使用GP而不是其他曲线拟合方法来建模代理函数 , 是因为它本质上是贝叶斯的 。 GP是一个概率分布 , 类似一个事件的最终结果的分布(例如 , 1/2的概率抛硬币) , 但是覆盖了所有可能的函数 。
例如 , 将当前数据点集定义为40%可由函数a(x)表示 , 10%可由函数b(x)表示 。 通过将代理函数表示为概率分布 , 可以通过固有的概率贝叶斯过程更新信息 。 当引入新信息时 , 可能只有20%的数据可用函数a(x)表示 。 这些变化是由贝叶斯公式控制的 。 如果使用多项式回归来拟合新的数据点 , 难度就加大了 , 甚至不可能实现 。
代理函数表示为概率分布 , 先验函数被更新为“采集函数” 。 该函数负责权衡探索和利用问题驱动新点的命题进行测试:
·“利用函数”试图进行取样以便代理函数预测最合适的最小值 , 这是利用已知的可能的点 。 然而 , 如果我们已经对某一区域进行了足够的探索 , 那么继续利用已知的信息将不会有什么收获 。
·“探索函数”试图在不确定性高的地方取样 。 这就确保了空间中没有什么主要区域是未知的——全局最小值可能恰好就在那里 。
一个鼓励多利用和少探索的采集函数将导致模型只停留在它首先找到的最小值(通常是局部的——“只去有光的地方”) 。 反之 , 模型则首先不会停留在局部或全局的最小值上 , 而是在微妙的平衡中寻求最佳结果 。
用a(x)表示采集函数 , 必须同时考虑探索和利用 。 常见的采集函数包括预期改进和最大改进概率 , 所有这些函数都度量了给定的先验信息(高斯过程)下 , 特定输入值在未来获得成功的概率 。
结合以上所有内容 , 贝叶斯优化的原理如下:
【万微科技2016|贝叶斯优化之美:精妙算法背后的直觉】·初始化一个高斯过程的“代理函数”先验分布 。
·选择多个数据点x , 使运行在当前先验分布上的采集函数a(x)最大化 。
·对目标成本函数c(x)中的数据点x进行评估 , 得到结果y 。
·用新的数据更新高斯过程的先验分布 , 产生后验(在下一步将成为先验) 。
·重复步骤2-5进行多次迭代 。
·解释当前的高斯过程分布(成本极低)来找到全局最小值 。
贝叶斯优化就是把概率的概念建立在代理优化的基础之上 。 这两种概念的结合创造了一个功能强大的系统 , 应用范围广阔 , 从制药产品开发到自动驾驶汽车都有相关应用 。
然而 , 在机器学习中最常见的是用于超参数优化 。 例如 , 如果要训练一个梯度增强分类器 , 从学习率到最大深度到最小杂质分割值 , 有几十个参数 。 在本例中 , x表示模型的超参数 , c(x)表示模型的性能 , 给定超参数x 。
使用贝叶斯优化的主要目的在于应对评估输出非常昂贵的情况 。 首先 , 需要用这些参数建立一个完整的树集合 , 其次 , 它们需要经过多次预测 , 这对于集合而言成本极高 。
可以说 , 神经网络评估给定参数集的损失更快:简单地重复矩阵乘法 , 这是非常快的 , 特别是在专用硬件上 。 这就是使用梯度下降法的原因之一 , 它需要反复查询来了解其发展方向 。
万微科技2016|贝叶斯优化之美:精妙算法背后的直觉
文章图片
图源:unsplash
总结一下 , 我们的结论是:
·代理优化使用代理函数或近似函数来通过抽样估计目标函数 。
·贝叶斯优化通过将代理函数表示为概率分布 , 将代理优化置于概率框架中 , 并根据新信息进行更新 。
·采集函数用于评估探索空间中的某个点将产生“良好”结果的概率 , 给定目前从先验已知的信息 , 平衡探索和利用的问题 。
·主要在评估目标函数成本昂贵时使用贝叶斯优化 , 通常用于超参数调优 。 有许多像HyperOpt这样的库可以实现这个功能 。


推荐阅读