分享好友 最新动态首页 最新动态分类 切换频道
贝叶斯优化(原理+代码解读)
2024-12-27 21:18

希望这篇文章能够让你无痛理解贝叶斯优化,记得点赞!




贝叶斯优化什么



既然是优化,就有优化命题的存在,比如要在某个区间内去最大化某个函数

如果这个函数计算比较容易,甚至还可以知道它的梯度,那事情就好办了,一阶、二阶优化算法换着上就完事。


https://zhuanlan.zhihu.com/p/169835477


但现实往往没有那么理想,这个函数的一阶、二阶导数信息我们可能是没有的,甚至计算一次函数的值都很费劲(给定一个x,计算f(x) 的计算量很大。


比如神经网络中的超参数优化),这时候就要求助 gradient-free 的优化算法了,这类算法也很多了,贝叶斯优化就属于无梯度优化算法中的一种,它希望在尽可能少的试验情况下去尽可能获得优化命题的全局最优解。




概述



由于我们要优化的这个函数计算量太大,一个自然的想法就是用一个简单点的模型来近似f(x),这个替代原始函数的模型也叫做代理模型,贝叶斯优化中的代理模型为高斯过程,假设我们对待优化函数的先验(prior)为高斯过程,经过一定的试验我们有了数据(也就是evidence),然后根据贝叶斯定理就可以得到这个函数的后验分布。


有了这个后验分布后,我们需要考虑下一次试验点在哪里进一步收集数据,因此就会需要构造一个acquisition函数用于指导搜索方向(选择下一个试验点),然后再去进行试验,得到数据后更新代理模型的后验分布,反复进行。


综上所述,贝叶斯优化的流程为:



高斯过程



高斯过程是多元高斯分布向无穷维的扩展,如果说高斯分布是随机变量的分布,则高斯过程是函数的分布,它可以由均值函数和协方差函数组成

这里的均值和协方差函数的推导和具体形式先省略不管,感兴趣的可以看之前的博文,需要明确的是我们已经可以根据高斯过程的后验分布对这个未知函数在任意位置的值做出预测,均值包括方差。


关于高斯过程的更多可见:

https://zhuanlan.zhihu.com/p/158720213




acquisition函数



Typically, acquisition functions are defined such that high acquisition corresponds to potentially high values of the objective function, whether because the prediction is high, the uncertainty is great, or both. 


也就是说贝叶斯优化选择的搜索方向为预测值大的位置或者不确定性大的位置,这样才有可能搜到目标函数的最优解。

因此贝叶斯优化中很多工作关注点在于acquisition函数的设计:


最大化提升概率


最容易想到的就是我希望下一次试验的结果比当前所有观测结果都要好

或者说这个新采样的函数值更优的概率要大

但是光这样考虑是有点目光短浅的,它忽略了对不确定性的考虑,一味追求选择大概率肯定大于f(x)+的点,也就是一直在exploitation,这样的缺点是可能就陷入了局部最优,忽略了潜在的最优解。改进的方法也很简单,加个偏置就可以了

最大化提升量


提升的概率大并不意味着提升得多,一种量化的角度就是考虑提升量(可以不严谨地理解为梯度下降法中,不仅要下降,而且要下得更多一点)

那么要求得下一次试验点就可以最大化期望的提升量

由于代替模型为高斯过程,提升量Ι的似然满足标准正态分布,进一步可以推导(不会推导想了解推导的再留言吧)得到

最大化置信上界


由于我们的代理模型是高斯过程,预测为分布,即有均值也有方差,那么就可以构造一个置信上界

这样的上界同时考虑了预测值的大小以及不确定性,高斯过程在观测数据的位置不确定性(方差)小,在未探索区域的不确定大。




Talk is Cheap



让我们来解读一下源码,一探究竟


首先定义个Bayesian_opt的类,其中的代理模型高斯过程从sklearn拉出来就好了


from sklearn.gaussian_process import GaussianProcessRegressorself.GP = GaussianProcessRegressor(...)


定义acquisition function


def PI(x, gp, y_max, xi):    mean, std = gp.predict(x, return_std=True)    z = (mean - y_max - xi)/std    return norm.cdf(z)def EI(x, gp, y_max, xi):    mean, std = gp.predict(x, return_std=True)    a = (mean - y_max - xi)    z = a / std    return a * norm.cdf(z) + std * norm.pdf(z)def UCB(x, gp, kappa):    mean, std = gp.predict(x, return_std=True)    return mean + kappa * std


寻找acquisition function最大的对应解,更精细化的可以去优化一下,这里仅展示随机采样的方式。


def acq_max(ac, gp, y_max, bounds, random_state, n_warmup=10000):    # 随机采样选择最大值    x_tries = np.random.RandomState(random_state).uniform(bounds[:, 0], bounds[:, 1],                                   size=(n_warmup, bounds.shape[0]))    ys = ac(x_tries, gp=gp, y_max=y_max)    x_max = x_tries[ys.argmax()]    max_acq = ys.max()    return x_max


主函数


while iteration < n_iter:    # 更新高斯过程的后验分布    self.GP.fit(X, y)    # 根据acquisition函数计算下一个试验点    suggestion = acq_max(            ac=utility_function,            gp=self.GP,            y_max=y.max(),            bounds=self.bounds,            random_state=self.random_state        )    # 进行试验(采样),更新观测点集合    X.append(suggestion)    y.append(target_func(suggestion))    iteration += 1

↑火爆课程,限时优惠券!

最新文章
感情无对错
对于感情的讨论,似乎永远都缺乏一个明确的答案。每个人都有自己的观点和经验,它们在人们的心中根深蒂固,难以动摇。然而,我们是否应该将道德观念和感情联系起来呢?是否应该对爱情中的遇见和离别做出评判?在我的观点里,我认为感情是没
美女写真一键生成!探索AI绘画工具“搜狐简单AI”的强大魅力
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=030001_yljdaimn 在这个被美丽和视觉效果统治的时代,社交媒体上层出不穷的网络红人们,常常以何种手段捕获亿
新媒体运营的福利,你想要的都在!
21类运营工具,共163个网站、素材、APP。你用得上的都在这里!在外人看来,这张图只是调侃下新媒体运营而已。但只有运营人心里明白:我们日常工作的确需要掌握这些!我们就像一只小蜜蜂,哪里有“洞”,就到哪里嗡嗡嗡~可能这些专业名称太
农机租赁数字化管理考核试卷
农机租赁数字化管理考核试卷考生姓名:答题日期:得分:判卷人:农机租赁数字化管理考核试卷为了检验考生对农机租赁数字化管理知识掌握的程度,提高农机租赁行业的管理水平,特制定本试卷。考核内容包括农机租赁数字化管理的理论基础、实践
如何备案天翼云服务器ip
如何备案天翼IP随着互联网的发展,越来越多的企业选择将业务部署在云服务器上。而备案是云服务器上线前的必要步骤,其中备案IP更是备案申请的关键之一。本文将从以下几个方面介绍如何备案天翼云服务器IP。一、备案前准备工作在备案之前,需
收钱吧商家版
收钱吧商家版,一般又称收钱吧app。收钱吧app为不同发展需求的商家,提供“安全、可靠、便捷”的移动支付体验和一体化的智慧商业解决方案。收钱吧软件商家可使用移动支付方式收银,同时结合电子记账、店员管理、优惠营销等多种创新生意工具
[2025福建公务员三明进面分数线汇总]福建省考大田县市场监督管理局往年招录情况及报名人数统计分析
  广东人事考试网同步中国公务员考试网信息:[2025福建公务员三明进面分数线汇总]福建省考大田县市场监督管理局往年招录情况及报名人数统计分析,更多关于2025福建公务员三明进面分数线汇总,福建省考大田县市场监督管理局招录情况,广东人
男科热点:沈阳正规男科医院“总榜排名”沈阳早泄治疗好医院是哪家?
  男性朋友的评价是对医院的肯定,所以在选择医院的时候,患者要看到医院在患者心中的位置,选择评价好的、被人们信任的医院进行治疗。  1.经过多年的实践,医院形成了一套疾病的治疗体系,并在治疗过程中更新了原有的医疗技术。辽宁附
网站排名优化之如何挖掘关键词
一个网站如果不注意网站排名优化的问题,渐渐的肯定是会影响到自然排名,一个排名不好的网站,网站的流量以及带来的推广宣传效果同样会不好,网站权重也会受到影响。在整体的网站优化中,关键词的优化是十分重要的,那伯乐网络传媒结合自己
谷歌SEO中,搜索友好的网站是啥样,你知道吗?
在我多年的SEO实战经验中,我深刻体会到,一个对谷歌搜索引擎友好的网站,是提升网站排名、获取精准流量的关键。无论是企业官网还是电商平台,都需要在谷歌SEO上下足功夫,才能在这片竞争激烈的互联网海洋中脱颖而出。今天,我将从多个角度
相关文章
推荐文章
发表评论
0评