【Python】-- 深度学习项目 - 贝叶斯优化算法

文章目录
01 什么是贝叶斯优化算法
贝叶斯优化算法是一种用于全局优化的策略,它特别适用于目标函数评估代价昂贵(如时间消耗大或资源消耗大)的情况。这种算法的核心思想是通过构建目标函数的概率模型来指导搜索过程,从而在有限的评估次数内找到最优解或近似最优解。
02 基础知识
什么是高斯过程?不确定度?均值估计?
高斯过程,一种概率模型,给任何一组输入 (a,b,c) 都返回一个平均值(估计)+ 标准差(不确定度)。
均值估计,在 (a,b,c) 这一点,损失最可能是多少。
不确定度,这条中心线有多不靠谱。阴影越宽,说明我们对这块区域几乎一无所知;阴影越窄,说明我们很有把握。

03 贝叶斯优化算法
- 概率模型
贝叶斯优化首先假设目标函数可以由某个概率分布来近似。这个分布通常是一个高斯过程(Gaussian Process, GP),它是一种非参数化的贝叶斯方法,可以提供函数的不确定性估计。高斯过程由均值函数和协方差函数(核函数)定义,其中核函数描述了输入空间中不同点之间的相似性。 - 采集函数(Acquisition Function)
采集函数是贝叶斯优化中的关键组成部分,它用于平衡探索(exploration)和开发(exploitation)之间的权衡。探索是指在不确定性较大的区域进行采样,以获取更多信息;开发是指在已知函数值较高的区域进行采样,以找到更好的解。常见的采集函数包括:
- 期望改进(Expected Improvement, EI):在已知最佳值的基础上,寻找可能带来更大改进的点。
- 上置信界(Upper Confidence Bound, UCB):在开发和探索之间进行权衡,通过置信区间来指导采样。
- 优化过程
贝叶斯优化的优化过程通常包括以下步骤:
1.初始化:选择几个初始点来评估目标函数,并用这些点来训练高斯过程模型。
2.迭代优化:
- 使用当前的高斯过程模型来计算采集函数的值。
- 选择采集函数值最大的点作为下一个评估点。
- 在该点评估目标函数,并将结果添加到训练数据中。
- 更新高斯过程模型。
3.终止条件:当达到最大迭代次数或满足其他终止条件时停止。
04 示例
假设我有一个损失函数,loss = a * ||+ b * || + c * ||,我想引入贝叶斯优化算法,找到最合适的a、b、c参数。
我们来把“贝叶斯优化”拆成三个非常直观的问题:
我现在手里只有几个实验数据,我能不能先画一条“大概”的曲线?有了这条曲线,我能不能猜一猜哪一块区域“最可能”藏着最小值?猜完以后,我下一次实验到底该把 a、b、c 设成多少?
1 先画一条“大概”的曲线
你手里只有 5 个 (a,b,c) 组合和对应的 loss 值,贝叶斯优化会用高斯过程 (GP) 画出一个“估计 + 不确定度”的三维曲面。
- 估计:曲面告诉你“平均” loss 是多少。
- 不确定度:曲面越“薄”就越可信;越“厚”就越没把握。
2 猜哪块区域最可能藏着最小值有了曲面,我们要选“下一次实验的点”。
这里用到一个叫 EI(Expected Improvement) 的打分函数:
在某个 (a,b,c) 点,如果损失比现在已知的最好值还能再降多少?再乘上“不确定度”——不确定度越高,分数也越高。
于是每个点都会得到一个 EI 分数。分数最高的点就是“下一次最值得做实验的地方”。
3 下一次实验到底把 a、b、c 设成多少贝叶斯优化就挑 EI 分数最高的 (a,b,c),真的去跑一次真实的 loss 计算。
跑完以后:
- 把新的 (a,b,c, loss) 丢回高斯过程。
- 曲面更新,不确定度重新计算。
- 重复第 2 步,直到跑满你设定的次数(例如 25 次)。
05 代码实现

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)