Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

Ben Letham、Brian Karrer、Guilherme Ottoni、Eytan Bakshy作者刘晓坤 张倩 思源编译

社交数据那么多,看Facebook如何用贝叶斯实时优化后端

面对每天海量更新的在线数据,Facebook 必须寻求快速的参数优化方法来不断完善后端系统,而网格搜索和手工调参显然不是合适的选择。

Facebook 每天依赖一套大型后端系统服务于数十亿人。这些系统中大部分都具有大量内部参数,如支持 Facebook 的 web 服务器使用 HipHop 虚拟机(HHVM)来满足请求,HHVM 有几十个参数来控制实时编译器。另一方面,机器学习系统可用来执行很多预测任务。这些系统通常包含预测模型的多个层,其中有大量参数,用于决定模型如何连接以输出最终推荐。这些参数必须通过使用实时的随机实验来仔细调整,也就是所谓的 A/B 测试。每个实验可能花费一周或更长时间,因此难点在于用尽可能少的实验优化一套参数

A/B 测试通常被用作改进产品的一次性实验。在论文《Constrained Bayesian Optimization with Noisy Experiments》(现已刊登在《Bayesian Analysis》杂志)中,Facebook 描述了如何使用一种名为「贝叶斯优化」的 AI 技术,根据先前测试的结果自适应地设计一轮 A/B 测试。与网格搜索或手工调参相比,贝叶斯优化可以用更少的实验联合调整更多的参数,并找到更好的值。Facebook 已经使用该技术在一大批后端系统中进行了数十次调参实验,发现该技术在机器学习系统调参方面非常有效。

针对 A/B 测试的贝叶斯优化

在线系统调参的典型方法是手动运行小规模网格搜索来分别优化每个参数。贝叶斯优化构建了参数和兴趣在线结果之间的统计模型,并使用该模型来决定进行哪些实验。这种基于模型的方法有几个关键优势,尤其是在优化在线机器学习系统方面:

更好地利用参数维度进行缩放:由于运行在线实验存在数量限制,网格搜索或手工调参不能用于同时调整多个参数。模型的使用使得贝叶斯优化可以扩展到更多的参数,通常联合优化的参数可以达到 20 个。这对机器学习系统至关重要,因为在这些系统中,参数之间经常存在相互作用,需要联合优化。

实验次数减少:贝叶斯优化使得我们可以从多轮实验中获得信息:连续空间中的一次参数值的测试不仅可以提供有关该测试结果的信息,还能提供周围点的信息。因此,探索空间所需的实验次数可以大大减少。

实验结果更好:模型可以识别空间中可能无法提供良好结果的部分,避免在那些参数值上运行测试。这种做法改进了实验组内的经验。

理解参数空间:模型帮助我们可视化并更好地理解参数如何影响感兴趣的结果。下图显示了一个 8 参数实验的二维切片,是为了更好地理解参数空间而进行的可视化的典型例子:

下文将提供贝叶斯优化的深入介绍,并讨论来自论文的工作及其中的一些实验结果。

贝叶斯优化

贝叶斯优化是一种解决最优化问题的技术,其中未知形式的目标函数(即在线度量)不会有解析解,且它只能通过一些耗时的运算(即随机试验)评估出来。通过有限的试验数高效探索多维空间的关键是建模:真实的目标函数是未知的,但是我们能令模型拟合已有的观察样本,并使用模型预测参数空间中更好的部分,而这一部分应该需要运行更多的试验。

高斯过程(GP)是一种非参数的贝叶斯模型,因为它能提供优秀的不确定性估计和简便的分析,所以高斯过程非常适用于贝叶斯优化。高斯过程为目标函数提供了一种估计,它用来判断随着参数的变化在线度量到底会怎么变化:

上图中每一个数据标记对应于该参数值的 A/B 测试结果。通过平衡探索(很大的不确定性)和利用(良好的模型估计),我们能使用高斯过程来决定接下来要测试的参数。这一过程可以通过计算采集函数(Acquisition Function)完成,该函数用任何给定的参数值来估计执行试验后的观察值。

假设我们正尝试决定是否应该使用参数配置 x 执行一次实验,那么在 x 的情况下观察值有多大的价值?这个问题的答案依赖于效用函数。现在假设在观察到 x 后就结束优化,那么这些参数的效用就仅仅只是它所找到的最优解的值。在这种情况下,观察到 x 的效用就是 f(x),相当于当前最优的改进程度,我们可以称为 x*(假设我们在做最大化):I(x) = max(0, f(x) – f(x*))。

由于 f(x) 是一个随机变量,I(x) 同样也为随机变量,但是 f(x) 的后验是从高斯过程模型中分析得出的。基于期望改进(EI)的采集函数会选择参数点 x 以最大化 I(x) 的期望值,这一过程会基于高斯过程后验。EI 是一种流行的采集函数,因为这种期望具有易计算的分析形式,且在实践中也有非常好的表现。下图展示了上述模型的 EI:

最大化 EI(红色虚线)的参数在下一个实验中会进行测试。模型随后用该实验的结果进行更新,并重新计算 EI 以选择新的候选参数。这一循环会持续到搜索结束,上图展示了几次迭代的结果。

高斯过程假设响应表面是平滑的,这将允许我们参考参数空间的近邻观察值,从而确定可能的下一组参数是怎么样的。高斯过程使我们相信已经彻底探索了空间,因此不需要如网格搜索那样实际测试每个可能的参数值。

将贝叶斯优化应用到在线实验

贝叶斯优化方法应用于调整在线系统时需要面对几项挑战,在 Facebook 的论文中对此进行了描述。

噪声:通过随机化实验获取的观察结果通常有很高的噪声等级,特别是相对于贝叶斯优化的典型机器学习应用而言,例如超参数调整。

约束:除了需要优化的指标,还有必须要满足的约束。这些约束通常本身是带噪声的指标,因此我们必须考虑它们的可行的后验分布。

批量实验:由于在线实验相当耗时间,它们通常不是按线性序列运行,如上动图所示,它们是以大批量在并行测试中运行。在我们的实验中,我们每次频繁地评估 50 个配置,因此需要可以返回大批量可评估点的贝叶斯优化过程。

EI 拥有可以解决这些问题的扩展,然而当噪声等级达到 A/B 测试的典型等级时,使用启发式方法处理噪声的结果很糟糕。由于观察结果中的噪声,不仅对 f(x) 值存在不确定,而且对哪个 x*和 f(x*) 是目前最佳的观察结果也存在不确定。处理观察结果噪声的常用方法是忽略它,并通过插件式的估计器替换 f(x*) 的高斯过程均值估计。

在论文中,Facebook 描述了一种贝叶斯方法来处理观察噪声,其中包括了 EI 期望值噪声引入的后验不确定性。即,我们在 f(x) 和 f(x*) 的联合后验下计算 I(x) 的期望值,而不是在 f(x) 的后验下计算它。这个期望值不再拥有相近 EI 的形式,然而我们可以轻易地从 GP 后验中采样过去观察 f(x_1), …, f(x_n) 的值,并且条件分布 f(x) | f(x_1), …, f(x_n) 有相近的形式。因此该期望值服从蒙特卡罗近似,其中我们采样 f(x_1), …, f(x_n) 然后以相近的形式求条件期望 E[I(x) | f(x_1), …, f(x_n)]。论文中展示了拟蒙特卡罗方法(quasi-Monte Carlo)的结合如何为该期望提供了很好的估计,并可以高效地对其进行优化。

Facebook 利用贝叶斯优化得到的结果

研究者使用论文中描述的方法来优化 Facebook 中的数个系统,并在论文中描述了两种优化案例。第一个案例是优化 Facebook 一个排序系统的 6 个参数。这些特定参数和索引器相关,该索引器聚集了要被发送到预测模型的内容。第二个案例是为 HHVM 优化 7 个数值编译器 flag。优化的目标是减少网页服务器的 CPU 占用,并满足不增加峰值内存占用的约束。下面这张来自论文中的图展示了每个测试配置的 CPU 占用(总共 100 个配置)随迭代次数的变化,以及每个点满足内存约束的概率。

前面 30 次迭代(绿线之前的部分)是随机生成的配置,之后使用了贝叶斯优化来识别用于评估的参数配置。在这项以及很多其它的实验中,研究者发现贝叶斯优化可以找到更好的且更容易满足约束的配置。该优化中找到的编译器 flag 设置在开源 HHVM 中已被设定成了新的默认值。

研究者发现,结合论文中的方法,贝叶斯优化在随机实验优化中是一种高效、鲁棒的工具。通过取代多维空间的手工探索,它能让工程师的工作变得更加高效,并提升后端系统和机器学习基础建设的在线性能。


原文链接:https://research.fb.com/efficient-tuning-of-online-systems-using-bayesian-optimization/

工程Facebook贝叶斯优化
1
相关数据
网格搜索技术

网格搜索是一项模型超参数优化技术,常用于优化三个或者更少数量的超参数,本质是一种穷举法。对于每个超参数,使用者选择一个较小的有限集去探索。然后,这些超参数笛卡尔乘积得到若干组超参数。网格搜索使用每组超参数训练模型,挑选验证集误差最小的超参数作为最好的超参数。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

运筹优化技术

最优化问题(英语:Optimization problem)在数学与计算机科学领域中,是从所有可行解中寻找最优良的解的问题。根据变数是连续的或离散的,最佳化问题可分为两类:连续最佳化问题与组合优化。

蒙特卡罗方法技术

蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数来解决很多计算问题的方法。

目标函数技术

目标函数f(x)就是用设计变量来表示的所追求的目标形式,所以目标函数就是设计变量的函数,是一个标量。从工程意义讲,目标函数是系统的性能标准,比如,一个结构的最轻重量、最低造价、最合理形式;一件产品的最短生产时间、最小能量消耗;一个实验的最佳配方等等,建立目标函数的过程就是寻找设计变量与目标的关系的过程,目标函数和设计变量的关系可用曲线、曲面或超曲面表示。

A/B 测试技术

一种统计方法,用于将两种或多种技术进行比较,通常是将当前采用的技术与新技术进行比较。A/B 测试不仅旨在确定哪种技术的效果更好,而且还有助于了解相应差异是否具有显著的统计意义。A/B 测试通常是采用一种衡量方式对两种技术进行比较,但也适用于任意有限数量的技术和衡量方式。

推荐文章
暂无评论
暂无评论~