机器学习 | 贝叶斯优化

机器学习 | 贝叶斯优化

在科学与工程领域,我们经常面临着需要优化某个目标函数的挑战。这个函数可能是一个复杂的黑箱,难以解析或者成本高昂。举个例子,我们可能希望在所有可能的药物组合中找到一种新药物,它对某个特定人群具有最佳的疗效。这个问题的解决方案之一就是贝叶斯优化(Bayesian Optimization)。

什么是贝叶斯优化?

贝叶斯优化是一种优化方法,通过在每一步中利用先前的观测结果来选择下一次评估的点,以尽可能地提高目标函数的值。它结合了贝叶斯统计模型和优化算法,能够在非凸、高维、噪声和有约束的情况下进行高效优化。

假设 f : X → Y f: \mathcal{X} \rightarrow \mathcal{Y} f:X→Y是一个函数,其分析上难以处理和/或评估代价很高。我们希望(不失一般性)找到 x ∗ = arg ⁡ max ⁡ x ∈ X f ( x ) x^* = \arg \max_{x \in \mathcal{X}} f(x) x∗=argmaxx∈Xf(x)

关键组成部分

贝叶斯优化的关键组成部分包括:

  1. 替代函数: 一个替代函数 g g g,它能够可靠地近似 f f f。它能够可靠地估计目标函数在未知区域的表现。

  2. 先验信念和似然: 贝叶斯优化利用先验信念和观测数据(可以看作一个关于 g g g的后验)来估计目标函数的后验分布。这个后验分布提供了对目标函数在不同区域的置信度估计,从而指导下一步的评估。

  3. 收集函数: 收集函数 α : X → R \alpha: \mathcal{X} \rightarrow \mathbb{R} α:X→R,它隐含地定义了一个策略,用于选择在哪个 x ∈ X x \in \mathcal{X} x∈X 上评估 f f f。常见的选择包括期望改进、上置信界和汤普森采样,它们在探索和利用之间进行权衡,以有效地搜索最优解。

替代函数的选择

关于 p ( g t ∣ D t ) p(g_t | D_t) p(gt∣Dt) 的实际选择是高斯过程(Gaussian processes,简称 GPs);尽管贝叶斯神经网络(Bayesian neural networks,简称 NNs)也越来越多地被使用。对于 GPs,对函数 f f f 的先验知识是通过核函数注入到贝叶斯优化中的。而对于基于神经网络的替代函数,相同的机制通过架构的选择,权重空间的先验,或者通过使用预训练的神经网络特征来完成。

收集函数的选择

收集函数的选择在于平衡探索未知区域和利用已有信息。期望改进通过计算期望的改进量来指导下一步的选择;上置信界选择在当前置信度下最有可能提高目标函数值的点;而汤普森采样则根据后验分布进行随机采样。

算法举例

序列模型优化(Sequential Model-Based Optimization,SMBO)是一种基于序列的优化方法,常用于解决黑箱优化问题。下面是SMBO算法的基本步骤:

  1. 初始化: 选择初始样本集 D 0 D_0 D0,通常为一组随机选择的样本点。

  2. 建模: 使用 D 0 D_0 D0 拟合初始模型。这可以是一个高斯过程、贝叶斯神经网络或其他适合问题的模型。

  3. 优化循环: 对于每一次迭代 t t t:

    • 收集数据: 使用当前模型 M t M_t Mt,通过选择一个合适的收集函数(如期望改进、上置信界或汤普森采样)来选择下一个样本点 x t x_t xt 进行评估。
    • 评估目标函数: 在选定的点 x t x_t xt 处评估目标函数,并观察其值 y t y_t yt。
    • 更新模型: 将新的观测数据 { x t , y t } \{x_t, y_t\} {xt,yt} 加入到训练数据集 D t = D t − 1 ∪ { ( x t , y t ) } D_t = D_{t-1} \cup \{(x_t, y_t)\} Dt=Dt−1∪{(xt,yt)} 中,并更新模型 M t M_t Mt。
  4. 终止条件: 当达到预先设定的迭代次数或满足某个收敛准则时,停止优化循环。

  5. 输出结果: 返回最优的样本点 x ∗ x^* x∗,即在目标函数中取得最大值的点。

SMBO算法的伪代码:

plaintext 复制代码
Input: 目标函数 f, 初始样本集 D_0, 模型选择方法, 收集函数选择方法, 迭代次数 T
Output: 最优样本点 x^*

for t = 1 to T do:
    1. 使用模型选择方法选择适当的模型 M_t,并在 D_{t-1} 上拟合模型。
    2. 使用收集函数选择方法选择下一个样本点 x_t。
    3. 在选定的点 x_t 处评估目标函数,并观察其值 y_t。
    4. 将观测数据 {x_t, y_t} 加入到训练数据集 D_t 中。
    5. 使用更新后的训练数据集 D_t 更新模型 M_t。
end for

返回最优样本点 x^*,即在目标函数中取得最大值的点。

SMBO算法通过不断迭代,利用模型进行智能的样本选择和模型更新,逐步提高对目标函数的拟合精度,最终找到近似最优解。

应用领域

贝叶斯优化在许多领域都有着广泛的应用,包括超参数优化、自动机器学习、材料科学、医药研发等。它在实验设计和优化问题上取得了显著的成就,并且随着技术的不断发展,其应用范围正在不断扩大。

贝叶斯优化是一个强大而灵活的工具,能够帮助我们在复杂的优化问题中快速找到最佳解。通过合理地选择替代函数和收集函数,以及利用先验知识和观测数据,贝叶斯优化为我们探索未知领域提供了一种高效而可靠的方法。

相关推荐
鸽芷咕19 分钟前
【Python报错已解决】ModuleNotFoundError: No module named ‘paddle‘
开发语言·python·机器学习·bug·paddle
FL162386312925 分钟前
AI健身体能测试之基于paddlehub实现引体向上计数个数统计
人工智能
黑客-雨28 分钟前
构建你的AI职业生涯:从基础知识到专业实践的路线图
人工智能·产品经理·ai大模型·ai产品经理·大模型学习·大模型入门·大模型教程
子午30 分钟前
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
人工智能·python·cnn
大耳朵爱学习1 小时前
掌握Transformer之注意力为什么有效
人工智能·深度学习·自然语言处理·大模型·llm·transformer·大语言模型
TAICHIFEI1 小时前
目标检测-数据集
人工智能·目标检测·目标跟踪
qq_15321452641 小时前
【2023工业异常检测文献】SimpleNet
图像处理·人工智能·深度学习·神经网络·机器学习·计算机视觉·视觉检测
洛阳泰山1 小时前
如何使用Chainlit让所有网站快速嵌入一个AI聊天助手Copilot
人工智能·ai·llm·copilot·网站·chainlit·copliot
儿创社ErChaungClub1 小时前
解锁编程新境界:GitHub Copilot 让效率翻倍
人工智能·算法
乙真仙人1 小时前
AIGC时代!AI的“iPhone时刻”与投资机遇
人工智能·aigc·iphone