机器学习 | 贝叶斯优化
在科学与工程领域,我们经常面临着需要优化某个目标函数的挑战。这个函数可能是一个复杂的黑箱,难以解析或者成本高昂。举个例子,我们可能希望在所有可能的药物组合中找到一种新药物,它对某个特定人群具有最佳的疗效。这个问题的解决方案之一就是贝叶斯优化(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)
关键组成部分
贝叶斯优化的关键组成部分包括:
-
替代函数: 一个替代函数 g g g,它能够可靠地近似 f f f。它能够可靠地估计目标函数在未知区域的表现。
-
先验信念和似然: 贝叶斯优化利用先验信念和观测数据(可以看作一个关于 g g g的后验)来估计目标函数的后验分布。这个后验分布提供了对目标函数在不同区域的置信度估计,从而指导下一步的评估。
-
收集函数: 收集函数 α : 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算法的基本步骤:
-
初始化: 选择初始样本集 D 0 D_0 D0,通常为一组随机选择的样本点。
-
建模: 使用 D 0 D_0 D0 拟合初始模型。这可以是一个高斯过程、贝叶斯神经网络或其他适合问题的模型。
-
优化循环: 对于每一次迭代 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。
-
终止条件: 当达到预先设定的迭代次数或满足某个收敛准则时,停止优化循环。
-
输出结果: 返回最优的样本点 x ∗ x^* x∗,即在目标函数中取得最大值的点。
SMBO算法的伪代码:
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算法通过不断迭代,利用模型进行智能的样本选择和模型更新,逐步提高对目标函数的拟合精度,最终找到近似最优解。
应用领域
贝叶斯优化在许多领域都有着广泛的应用,包括超参数优化、自动机器学习、材料科学、医药研发等。它在实验设计和优化问题上取得了显著的成就,并且随着技术的不断发展,其应用范围正在不断扩大。
贝叶斯优化是一个强大而灵活的工具,能够帮助我们在复杂的优化问题中快速找到最佳解。通过合理地选择替代函数和收集函数,以及利用先验知识和观测数据,贝叶斯优化为我们探索未知领域提供了一种高效而可靠的方法。