贝叶斯方法常用于当前大数据应用中的复杂设计优化场景,如选择恰当的算法优化系统性能、工程传感器的点位部署等,这些场景具有多峰、非凸、黑箱、决策空间巨大和目标函数表达不明确等问题,在机器学习模型的设计中,用来进行模型的超参数优化,以较高的效率获取最优参数组合。

贝叶斯优化

贝叶斯优化方法是一种基于模型的序贯优化方法,经过一次评估之后再进行下一次评估,只需少数几次目标函数评估就可以获取最优解,侧重于减少评估代价,中间涉及到概率代理模型和采集函数的选取,是一种有效的全局优化方法。

贝叶斯优化的目的:在一定范围内,求一个函数的最大/小值
贝叶斯优化python库 贝叶斯优化例子_高斯过程
式中,f为由概率代理模型拟合的目标函数,贝叶斯优化通过从f获取的信息,有效找到下一个评估位置,从而迅速找到最优解

贝叶斯优化的命名由来是因为其用到了贝叶斯定理
贝叶斯优化python库 贝叶斯优化例子_后验概率_02
式中,p(f)表示未知目标函数f的先验概率分布,贝叶斯优化python库 贝叶斯优化例子_后验概率_03指 已观测集合,其中元素为贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化_04,贝叶斯优化python库 贝叶斯优化例子_概率模型_05,贝叶斯优化python库 贝叶斯优化例子_后验概率_06表示f的后验概率分布,描述的是通过观测数据集对先验概率分布修正后的目标函数置信度

模型选择

贝叶斯优化有两个关键部分:
(1)使用概率模型代理原始评估代价高昂的复杂目标函数
(2)利用代理模型的后验信息构造采集函数
在实际应用中,需要根据具体问题选择合适的模型

常用概率模型

概率模型用于代理未知目标函数,通过迭代的增加信息,修正先验分布,以得到更加准确的代理模型。概率模型根据参数个数是否固定又分为参数模型和非参数模型。

参数模型

参数模型指参数个数固定的模型,在列举参数模型之前,先看几个基本的概念

  • 解析解
    解析解指有严格的公式推导,给出自变量就能求出因变量,也就是问题的解。解析解是一个封闭形式的函数,对任意自变量,都能求其因变量,因此也叫做封闭解
  • 数值解
    数值解指采用某种计算方法,如有限元法,逼近法,插值法等得到的解,无法根据任意自变量求其结果,只能利用数值分析得到的结果
  • 共轭
    如果先验分布和似然函数能够使得先验分布与后验分布满足同一分布,则称先验分布与似然函数是共轭的
  • 共轭分布
    指后验概率分布函数与先验概率分布函数具有相同的形式

在参数模型中,使用贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化python库_07来表示概率模型中的参数,根据贝叶斯定理,可得到
贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化_08
由于后验概率分布无法得到封闭解,因此常用一个针对似然分布的共轭先验分布来表征参数贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化python库_07的先验分布,这样可使得后验分布与先验分布具有相同的表达形式。

Beta_Bernoulli模型

对于观测值只有两种状态的模型,即贝叶斯优化python库 贝叶斯优化例子_概率模型_10,则贝叶斯优化python库 贝叶斯优化例子_高斯过程_11为伯努利分布,因为beta分布与bernoulli为共轭的,因此假设参数贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化python库_07的分布为beta分布贝叶斯优化python库 贝叶斯优化例子_高斯过程_13
容易得到参数贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化python库_07的后验概率分布为贝叶斯优化python库 贝叶斯优化例子_概率模型_15
Beta_Bernoulli模型常用语A/B测试,推荐系统等领域

线性模型

在许多应用中,通常假设各个决策之间相互独立,而每个决策有多重选择,这样就会产生n种决策配置,若使用Beta_Bernoulli模型,则需要假设每种配置相互独立,这样每种配置都需要至少一次评估,因此这种决策空间庞大的问题就需要通过线性模型来捕获各种配置之间的关系,通过一种配置的表现来推断其他配置的表现,以此达到减少评估次数的目的。
在线性模型中,首先假设每种配置i都存在一个d维的特征向量贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化python库_16,定义目标函数为f,则任意配置都能通过f得到一个实数反馈:
贝叶斯优化python库 贝叶斯优化例子_后验概率_17,贝叶斯优化python库 贝叶斯优化例子_高斯过程_18表示权值向量,则观测量贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化_19,假设噪声贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化_20满足独立同分布,则贝叶斯优化python库 贝叶斯优化例子_高斯过程_21的似然分布为高斯分布贝叶斯优化python库 贝叶斯优化例子_高斯过程_22
由于Normal-Inverse-Gamma分布与高斯分布共轭,假设参数 贝叶斯优化python库 贝叶斯优化例子_高斯过程_23,服从Normal-Inverse-Gamma分布,则贝叶斯优化python库 贝叶斯优化例子_高斯过程_23的后验分布也为Normal-Inverse-Gamma分布

在实际问题中,贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化python库_16通常与贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化_26存在非线性关系,需要对贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化python库_16进行核函数转换

广义线性模型

广义线性模型将线性模型的观测量推广到其他类型,使得模型能够更加灵活的处理不同观测量

非参数模型

非参数模型通过参数可变以扩展模型的灵活性,常见的有以下模型

高斯过程(GP)

定义:如果随机过程的有限维分布均为正态分布,即一系列服从正态分布的随机变量在一指数集内的组合,则称此随机过程为高斯过程或正态过程。
一个高斯过程由一个均值函数贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化python库_28和一个半正定的协方差函数贝叶斯优化python库 贝叶斯优化例子_高斯过程_29构成

贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化_30~贝叶斯优化python库 贝叶斯优化例子_后验概率_31

式中:均值函数贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化_32,协方差函数贝叶斯优化python库 贝叶斯优化例子_后验概率_33,通常均值函数设为贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化_34

假设有一组样本点贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化python库_35,通过中心化,其先验分布为贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化_30~贝叶斯优化python库 贝叶斯优化例子_概率模型_37,其中:

贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化python库_38


如果有一个新样本贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化_39加入,则会更新上述高斯过程的协方差为

贝叶斯优化python库 贝叶斯优化例子_高斯过程_40

其中 贝叶斯优化python库 贝叶斯优化例子_高斯过程_41

通过更新后的协方差矩阵,就可以估计出贝叶斯优化python库 贝叶斯优化例子_高斯过程_42的后验概率分布
贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化_43
贝叶斯优化python库 贝叶斯优化例子_高斯过程_44
贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化python库_45

协方差函数

协方差函数是高斯过程中计算两个数据点之间相似性的函数,它指定了未知目标函数的平滑性和振幅,因此,对协方差函数的选择直接影响高斯过程与数据性质的匹配程度。

常用的协方差函数有:平方指数协方差函数、指数协方差函数、Matern协方差函数

其中Matern协方差是一类高灵活的协方差函数,可特殊化为平方指数协方差函数和指数协方差函数

贝叶斯优化python库 贝叶斯优化例子_后验概率_46


其中,贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化_47,v为平滑参数,贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化_48为尺度参数,贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化python库_49为第二类变形贝塞尔函数

在机器学习领域,根据v值的设定,常见的有以下matern协方差函数

v

表达式

1/2

贝叶斯优化python库 贝叶斯优化例子_后验概率_50(指数协方差函数)

3/2

贝叶斯优化python库 贝叶斯优化例子_高斯过程_51

5/2

贝叶斯优化python库 贝叶斯优化例子_概率模型_52

贝叶斯优化python库 贝叶斯优化例子_概率模型_53

贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化_54(平方指数协方差函数)

贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化_55为离散型或分类类型时,通常使用Hamming协方差函数。

随机森林回归方法

随机森林是一种高度并行化的方法,通过有放回采样进行训练,与高斯过程的更新计算代价相比,随机森林具有较高的计算效率,可有效地应用于大规模和并行化数据集。

劣势:虽然随机森林回归方法在训练数据附近能够快速得到高精度预测,但在远离训练数据时的预测效果很差,并且该方法的响应面是非连续、不可微的,因此不能对其进行基于梯度的优化方法

深度神经网络

多个隐层单元的神经网络可等价于高斯过程应用于贝叶斯优化当中,但若想得到理想的目标函数近似,需要合理设计神经网络的架构。

采集函数

采集函数指贝叶斯优化框架中选择下一个样本点进行模型更新的“主动策略”。采集函数是根据后验概率分布构造的,通过最大化采集函数来选择下一个最有潜力的评估点,同时保证选择的评估点序列使得总损失最小。
贝叶斯优化python库 贝叶斯优化例子_高斯过程_56

(图片引自贝叶斯优化方法和应用综述)

贝叶斯优化python库 贝叶斯优化例子_后验概率_57


下面列举常见的采集策略:

  1. 基于提升的策略(PI:probability of improvement)
    该策略偏好选择对于当前最优目标函数有所提升的位置作为下一个评估点
  2. 置信边界策略
    在求解目标函数最大值时,使用置信边界上界UCB
    贝叶斯优化python库 贝叶斯优化例子_贝叶斯优化_58
    在求解目标函数最小值时,使用置信边界下界LCB
    贝叶斯优化python库 贝叶斯优化例子_高斯过程_59

附加两张参考论文(贝叶斯优化方法和应用综述)中的概率模型和采集函数对比图

贝叶斯优化python库 贝叶斯优化例子_概率模型_60


贝叶斯优化python库 贝叶斯优化例子_后验概率_61