字幕组双语原文:数学之美:贝叶斯优化
英语原文:The Beauty of Bayesian Optimization, Explained in Simple Terms
问题定义:给定函数f(x),该函数计算成本高、甚至可能不是解析表达式,同时假定函数导数未知。
你的任务:找到函数得全局最小值。
这无疑是一项艰巨的任务,比机器学习中的其他优化问题还要困难。一般得优化问题可以通过以下三种方式求解:
梯度下降方法依赖函数求导,通过数学方法快速估计表达式。
函数的评估成本很低得优化场景下,可以在很短时间内获得输入x的许多结果,然后使用简单的网格搜索选择较好结果。
使用粒子群或模拟退火等非梯度优化方法。
然而,这些方法并不适用上述定义的问题,对定义问句的优化受到以下几个方面的限制:
计算成本高。理想情况下,我们可以多次执行函数以确定其最优解,但我们的优化问题中计算过多采样是不现实的。
导数未知。 正是因为导数可知,梯度下降及类似方法广泛应用于深度学习或某些机器学习算法。导数能够直到优化方向——不幸的是,在我们问题定义中没有导数。
要找到全局最小值,即使对于梯度下降这样的方法也不是容易的事情。因此,我们的模型需要某种机制避免陷入局部最小值。
解决方案:贝叶斯优化。该方法提供了一个优雅的框架可用于来解决上述定义的问题,并且能够在尽可能少的步骤中找到全局最小值。
让我们构造一个函数c(x)或者一个接收输入x的模型,如下图所示为c(x)的形状。当然,优化器并不知道该函数,称之为“目标函数”。
贝叶斯优化通过代理优化的方式来完成任务。一般来说,surrogate mother是指为另一个人生育孩子的代孕妇女——在本文的情况中,则是指目标函数的近似。
代理函数通过采样点模拟构造(见下图)。
根据代理函数,我们大致可以确定哪些点是可能的最小值。然后再这些点附近做更多的采样,并随之更新代理函数。
每一次迭代,我们都会继续观察当前的代用函数,通过采样了解更多感兴趣的区域,并更新函数。需要注意的是,代用函数在数学上的表达方式将大大降低评估成本(例如y=x是一个成本较高的函数的近似值,y=arcsin((1-cos²x)/sin x)在一定范围内)。
经过一定的迭代次数后,我们注定要到达一个全局最小值,除非函数的形状非常诡异(就是它的上下波动很大很疯狂),这时应该问一个比优化更好的问题:你的数据有什么问题?
花点时间惊叹一下这种方法的妙处。它不对函数做任何假设(除了它首先是可优化的),不需要导数的信息,并且能够通过巧妙地使用不断更新的逼近函数来进行常识性的推理。我们原来的目标函数的昂贵评估根本不是问题。
这是一种基于代用的优化方法。那么,到底是什么让它成为贝叶斯的呢?
贝叶斯统计和建模的本质是根据新的信息更新前(前)信念,以产生一个更新的后('后')信念。这正是本案例中代偿优化的作用,所以可以通过贝叶斯系统、公式和思想来最好地表示。
让我们仔细看看代用函数,通常用高斯过程来表示,它可以被认为是掷骰子,返回与给定数据点(如sin、log)拟合的函数,而不是1到6的数字。这个过程会返回几个函数,这些函数都附有概率。
左图:四个数据点的几个高斯过程生成的函数。右图:函数汇总。来源:Oscar Knagg,图片免费分享。
Oscar Knagg的这篇文章对GP的工作原理有很好的直观认识。
为什么用高斯过程,而不是其他的曲线拟合方法来模拟代用函数,有一个很好的理由:它是贝叶斯性质的。一个GP是一个概率分布,就像一个事件最终结果的分布(例如抛硬币的1/2机会),但在所有可能的函数上。
例如,我们可以将当前的数据点集定义为40%可由函数a(x)表示,10%可由函数b(x)表示,等等。通过将代用函数表示为一个概率分布,它可以通过固有的概率贝叶斯过程与新信息进行更新。也许当引入新的信息时,数据只有20%可以用函数a(x)表示。这些变化是由贝叶斯公式来支配的。
这将是很难甚至不可能做到的,比如说,对新数据点进行多项式回归拟合。
代用函数--表示为概率分布,即先验--被更新为 "获取函数"。这个函数负责在勘探和开发的权衡中提出新的测试点。
剥削力求在代用模型预测的目标好的地方采样。这就是利用已知的有希望的点。但是,如果我们已经对某一区域进行了足够的探索,那么不断地利用已知的信息就不会有什么收获。
探索力求在不确定性较高的地点进行采样。这就确保了空间的任何主要区域都不会未被探索--全局最小值可能恰好就在那里。
一个鼓励过多的开发和过少探索的获取函数将导致模型只停留在它首先发现的最小值(通常是局部的--"只去有光的地方")。一个鼓励相反的获取函数将不会首先停留在一个最小值,本地或全球。在微妙的平衡中产生良好的结果。
acquisition 函数,我们将其表示为a(x),必须同时考虑开发和探索。常见的获取函数包括预期改进和最大改进概率,所有这些函数都是在给定先验信息(高斯过程)的情况下,衡量特定投入在未来可能得到回报的概率。
让我们把这些东西整合起来。贝叶斯优化可以这样进行。
1.初始化一个高斯过程 "代用函数 "的先验分布。
2.选择几个数据点x,使在当前先验分布上运行的获取函数a(x)最大化。
3.评估目标成本函数c(x)中的数据点x,得到结果,y。
4.用新的数据更新高斯过程先验分布,以产生一个后验(它将成为下一步的先验)。
5.重复步骤2-5进行多次迭代。
6.解释当前的高斯过程分布(这是非常便宜的),以找到全局最小值。
贝叶斯优化就是把概率论的思想放在代入优化的思想后面。这两种思想的结合创造了一个强大的系统,从医药产品的开发到自主汽车,都有很多应用。
但在机器学习中,最常见的是贝叶斯优化用于超参数优化。例如,如果我们要训练一个梯度提升分类器,从学习率到最大深度再到最小杂质分割值,有几十个参数。在这种情况下,x代表模型的超参数,c(x)代表模型的性能,给定超参数x。
使用贝叶斯优化的主要动机是在评估输出非常昂贵的情况下。首先,需要用参数建立整个树的合集,其次,它们需要通过多次预测来运行,这对于合集来说是非常昂贵的。
可以说,神经网络评估给定参数集的损失更快:简单的重复矩阵乘法,速度非常快,尤其是在专用硬件上。这也是使用梯度下降的原因之一,它使反复查询了解其走向。
综上所述:
代用优化利用代用函数或近似函数通过抽样来估计目标函数。
贝叶斯优化将代用优化置于概率框架中,将代用函数表示为概率分布,可以根据新的信息进行更新。
获取函数用于评估在当前已知的先验条件下,探索空间中某一点会产生 "好 "收益的概率,平衡探索与开发
主要在目标函数评估成本很高的时候使用贝叶斯优化,常用于超参数调整。(这方面有很多库,比如HyperOpt)。
感谢您的阅读!
雷锋字幕组是一个由AI爱好者组成的翻译团队,汇聚五五多位志愿者的力量,分享最新的海外AI资讯,交流关于人工智能技术领域的行业转变与技术创新的见解。
团队成员有大数据专家,算法工程师,图像处理工程师,产品经理,产品运营,IT咨询人,在校师生;志愿者们来自IBM,AVL,Adobe,阿里,百度等知名企业,北大,清华,港大,中科院,南卡罗莱纳大学,早稻田大学等海内外高校研究所。
如果,你也是位热爱分享的AI爱好者。欢迎与雷锋字幕组一起,学习新知,分享成长。