贝叶斯优化算法
高斯分布/正态分布
高斯分布
正态分布(Normal Distribution),又名高斯分布(Gaussian Distribution)。若随机变量X服从一个位置参数为
μ
\mu
μ,尺度参数为
σ
\sigma
σ的正态分布,记为
X
∼
N
(
μ
,
σ
)
X\sim N\left( \mu, \sigma \right)
X∼N(μ,σ)。其概率密度函数(PDF,Probability Density Function)为:
f
(
x
)
=
1
σ
2
π
e
−
(
x
−
μ
)
2
2
σ
2
f\left ( x \right ) = \frac{1}{\sigma \sqrt{2\pi}}e^{-\frac{\left ( x - \mu \right )^2}{2 \sigma^{2}}}
f(x)=σ2π1e−2σ2(x−μ)2
高斯分布的数学期望
μ
\mu
μ为位置参数,决定了分布的位置;其方差
σ
2
\sigma^{2}
σ2的开方或标准差
σ
\sigma
σ为尺度参数,决定了分布的幅度。当
μ
=
0
,
σ
2
=
1
\mu = 0, \sigma^{2} = 1
μ=0,σ2=1时,此时的正态分布被称为标准正态分布。
累积分布函数(CDF,Cumulative Distribution Function)是指随机变量
X
X
X小于或等于
x
x
x的概率,是概率密度函数的积分,用概率密度函数表示为:
F
(
x
;
μ
,
σ
)
=
1
σ
2
π
∫
−
∞
x
e
x
p
(
−
(
t
−
μ
)
2
2
σ
2
)
d
t
F\left(x ; \mu, \sigma \right) = \frac{1}{\sigma\sqrt{2\pi}}\int_{-\infty }^{x} exp \left(- \frac{\left(t - \mu\right)^{2}}{2\sigma^{2}} \right) dt
F(x;μ,σ)=σ2π1∫−∞xexp(−2σ2(t−μ)2)dt
标准正态分布的累积分布函数习惯上记为
Φ
\Phi
Φ,它指
μ
=
0
,
σ
=
1
\mu = 0, \sigma = 1
μ=0,σ=1的值,
Φ
(
x
)
=
F
(
x
;
0
,
1
)
=
1
2
π
∫
−
∞
x
e
x
p
(
−
t
2
2
)
d
t
\Phi\left(x\right)=F\left(x ; 0, 1 \right) = \frac{1}{\sqrt{2\pi}}\int_{-\infty }^{x} exp \left(- \frac{t^{2}}{2} \right) dt
Φ(x)=F(x;0,1)=2π1∫−∞xexp(−2t2)dt
多元高斯分布
多元正态分布是单维正态分布向多维的推广。其每一维都呈正态分布,联合分布也是正态分布。一般来说,多元正态分布由均值向量
μ
\mu
μ和协方差矩阵
Σ
\Sigma
Σ定义。假设有n维随机向量
x
=
[
x
1
,
⋯
,
x
n
]
T
x=[x_{1}, \cdots, x_{n}]^{T}
x=[x1,⋯,xn]T,各个维度不相关,且各维度的均值和方差为
μ
=
[
μ
1
,
⋯
,
μ
n
]
\mu=[\mu_{1}, \cdots, \mu_{n}]
μ=[μ1,⋯,μn]和
σ
=
[
σ
1
,
⋯
,
σ
n
]
\sigma=[\sigma_{1}, \cdots, \sigma_{n}]
σ=[σ1,⋯,σn],联合概率密度函数可以各概率密度的乘积,公式为:
f
(
x
)
=
1
σ
1
2
π
e
−
(
x
1
−
μ
1
)
2
2
σ
1
2
⋯
1
σ
n
2
π
e
−
(
x
n
−
μ
n
)
2
2
σ
n
2
=
1
(
2
π
)
n
σ
1
⋯
σ
n
e
−
1
2
[
(
x
1
−
μ
1
σ
1
)
2
+
⋯
+
(
x
n
−
μ
n
σ
n
)
2
]
)
f\left ( x \right ) = \frac{1}{\sigma_{1} \sqrt{2\pi}}e^{-\frac{\left ( x_{1} - \mu_{1} \right )^2}{2 \sigma_{1}^{2}}} \cdots \frac{1}{\sigma_{n} \sqrt{2\pi}}e^{-\frac{\left ( x_{n} - \mu_{n} \right )^2}{2 \sigma_{n}^{2}}} \\ \qquad \qquad \quad = \frac{1}{ \left( \sqrt{2\pi} \right )^{n} \sigma_{1}\cdots \sigma_{n}}e^{-\frac{1}{2} \left[ \left( \frac{x_{1} -\mu_{1}}{\sigma_{1}} \right )^{2} + \cdots + \left( \frac{x_{n} -\mu_{n}}{\sigma_{n}} \right )^{2} \right])}
f(x)=σ12π1e−2σ12(x1−μ1)2⋯σn2π1e−2σn2(xn−μn)2=(2π)nσ1⋯σn1e−21[(σ1x1−μ1)2+⋯+(σnxn−μn)2])
下面,我们接下来对概率密度公式进行简化一下:
(
x
1
−
μ
1
σ
1
)
2
+
⋯
+
(
x
n
−
μ
n
σ
n
)
2
=
[
x
1
−
μ
1
,
⋯
,
x
n
−
μ
n
]
[
1
σ
1
2
0
⋯
0
0
1
σ
2
2
⋯
0
⋮
⋮
⋱
⋮
0
0
⋯
1
σ
n
2
]
[
x
1
−
μ
1
⋮
x
n
−
μ
n
]
\left( \frac{x_{1} -\mu_{1}}{\sigma_{1}} \right )^{2} + \cdots + \left( \frac{x_{n} -\mu_{n}}{\sigma_{n}} \right )^{2}\\ = \begin{bmatrix} x_{1} - \mu_{1},& \cdots,& x_{n} - \mu_{n} \end{bmatrix} \begin{bmatrix} \frac{1}{\sigma_{1}^{2}} & 0 & \cdots & 0 \\ 0& \frac{1}{\sigma_{2}^{2}} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \frac{1}{\sigma_{n}^{2}} \end{bmatrix} \begin{bmatrix} x_{1} - \mu_{1}\\ \vdots \\ x_{n} - \mu_{n}\\ \end{bmatrix}
(σ1x1−μ1)2+⋯+(σnxn−μn)2=[x1−μ1,⋯,xn−μn]⎣⎢⎢⎢⎢⎡σ1210⋮00σ221⋮0⋯⋯⋱⋯00⋮σn21⎦⎥⎥⎥⎥⎤⎣⎢⎡x1−μ1⋮xn−μn⎦⎥⎤
由此联合概率密度函数就可简化为
f
(
x
)
=
1
(
2
π
)
d
2
∣
Σ
∣
1
2
e
−
1
2
(
x
−
μ
)
T
Σ
−
1
(
x
−
μ
)
f\left ( x \right ) = \frac{1}{\left( 2\pi\right)^{\frac{d}{2}} \left | \Sigma \right | ^{\frac{1}{2}}} e^{-\frac{1}{2} \left(x - \mu \right)^{T}\Sigma^{-1}\left( x - \mu \right) }
f(x)=(2π)2d∣Σ∣211e−21(x−μ)TΣ−1(x−μ)
其中
Σ
\Sigma
Σ为协方差矩阵,其中
Σ
=
σ
1
2
⋯
σ
n
2
\Sigma=\sigma_{1}^{2}\cdots\sigma_{n}^{2}
Σ=σ12⋯σn2,我们假定各个维度不相关,因此协方差矩阵只有在对角线的位置不为零。推广到各个维度相关,那么
Σ
\Sigma
Σ中的第i行第j列元素就表示第i个变量与第j个变量之间的协方差。
随机向量
x
=
[
x
1
,
⋯
,
x
n
]
T
x=[x_{1}, \cdots, x_{n}]^{T}
x=[x1,⋯,xn]T服从多元正态分布,
N
(
μ
,
Σ
)
N\left( \mu, \Sigma\right)
N(μ,Σ)。
条件高斯分布
假设 x ∈ R n x \in \mathbb{R}^{n} x∈Rn服从高斯分布 N ( x ∣ μ , Σ ) N\left( x | \mu, \Sigma\right) N(x∣μ,Σ),其中 μ ∈ R n \mu \in \mathbb{R}^{n} μ∈Rn和 Σ ∈ R n × n \Sigma \in \mathbb{R}^{n \times n} Σ∈Rn×n将 x x x, μ \mu μ和 Σ \Sigma Σ作如下划分:
x = [ x 1 x 2 ] , μ = [ μ 1 μ 2 ] , Σ = [ Σ 11 Σ 12 Σ 21 Σ 22 ] x = \begin{bmatrix} x_{1} \\ x_{2} \end{bmatrix} , \mu = \begin{bmatrix} \mu_{1} \\ \mu_{2} \end{bmatrix}, \Sigma = \begin{bmatrix} \Sigma_{11} & \Sigma_{12} \\ \Sigma_{21} & \Sigma_{22} \end{bmatrix} x=[x1x2],μ=[μ1μ2],Σ=[Σ11Σ21Σ12Σ22]
那么 x 1 ∼ N ( μ 1 , Σ 11 ) x_{1} \sim N \left(\mu_{1}, \Sigma_{11} \right) x1∼N(μ1,Σ11), x 2 ∼ N ( μ 2 , Σ 22 ) x_{2} \sim N \left(\mu_{2}, \Sigma_{22} \right) x2∼N(μ2,Σ22), 而且条件概率 x 1 ∣ x 2 x_{1} | x_{2} x1∣x2 服从如下高斯分布:
x 1 ∣ x 2 ∼ N ( μ 1 + Σ 12 Σ 22 − 1 ( x 2 − μ 2 ) , Σ 11 − Σ 12 Σ 22 − 1 Σ 21 ) x_{1} | x_{2} \sim N \left(\mu_{1} + \Sigma_{12} \Sigma_{22}^{-1} \left(x_{2} - \mu_{2}\right), \Sigma_{11} - \Sigma_{12} \Sigma_{22}^{-1}\Sigma_{21}\right) x1∣x2∼N(μ1+Σ12Σ22−1(x2−μ2),Σ11−Σ12Σ22−1Σ21)
证明过程:
手打证明过程太过于麻烦,以下证明过程来自于模式识别与机器学习-概率论
高斯过程
在概率轮和统计学中,高斯过程(Gaussian Process)是观测值出现在一个连续域(例如时间或空间)的随机过程。在高斯过程中,连续输入空间中每个点都是与一个正态分布的随机变量相关联。此外,这些随机变量的每个有限集合都有一个多元正态分布。高斯过程的分布是所有那些(无限多个)随机变量的联合分布,正因为如此,它是连续域上函数的分布。–维基百科
简单一点理解就是高斯过程是连续域上(时间或空间)所有随机变量的联合,针对每一个时间或者空间点上的随机变量都是服从高斯分布的,不同时刻的随机变量联合需要服从多元高斯分布。依据上面对高斯分布的介绍,一个高斯分布由一个平均值 μ \mu μ和方差 σ \sigma σ所决定,一个多元高斯分布由一个平均值向量 μ \mu μ和一个协方差矩阵 Σ \Sigma Σ所决定。那么一个高斯过程可以被均值函数 m ( x ) m\left(x \right) m(x)和协方差函数 k ( x 1 , x 2 ) k\left(x_{1}, x_{2} \right) k(x1,x2)共同决定。
在高斯过程中,使用核函数来生成协方差矩阵。核函数以 x 1 , x 2 ∈ R n x_{1},x_{2} \in \mathbb{R}^{n} x1,x2∈Rn为输入,返回一个标量,表示这两个点之间的相似度。协方差矩阵中第 i i i行和第 j j j列的数表示第 i i i个点与第 j j j个点之间的相互影响。 K = R n × R n → R , Σ = C o v ( X 1 , X 2 ) = K ( x 1 , x 2 ) K = \mathbb{R}^{n} \times \mathbb{R}^{n} \rightarrow \mathbb{R}, \Sigma = Cov\left(X_{1}, X_{2} \right) = K\left(x_{1}, x_{2} \right) K=Rn×Rn→R,Σ=Cov(X1,X2)=K(x1,x2)。具体核函数,因为在机器学习中普遍应用,在这里就不再赘述。
高斯过程是一个强大的模型,直接对函数进行建模。我们以回归为例,假设这里有N个训练数据 x = { x 1 , ⋯ , x N } x=\left\{ x_{1}, \cdots, x_{N}\right\} x={x1,⋯,xN},它们相应的输出为 y = { y 1 , ⋯ , y N } y=\left\{ y_{1}, \cdots, y_{N}\right\} y={y1,⋯,yN}。测试数据为 x ′ , y ′ x^{'},y^{'} x′,y′。高斯过程利用先验知识,拟合函数 f f f的概率分布。 f : R → R = p ( f ∣ X , x , y ) f:R \rightarrow R =p\left( f|X,x,y\right) f:R→R=p(f∣X,x,y)。给定一些X的值,我们对Y进行建模,并假设Y服从联合高斯分布。
先验知识就是所有随机变量遵循一个均值的多元高斯分布(假设随机变量零均值化,举止为0),那么
y
y
y和
y
′
y^{'}
y′的联合分布为:
[
y
y
′
]
∼
N
(
0
,
[
K
,
K
′
K
′
T
,
K
′
′
]
)
\begin{bmatrix} y\\ y^{'} \end{bmatrix} \sim N\left(0 , \begin{bmatrix} K,&K_{'} \\ K_{'}^{T}, & K_{''}\end{bmatrix} \right)
[yy′]∼N(0,[K,K′T,K′K′′])
依据上述介绍的多元高斯分布的条件分布,我们可以得到关于
y
′
y^{'}
y′的后验分布:
y
′
∣
x
′
,
x
,
y
=
N
(
y
′
∣
μ
′
,
Σ
′
)
μ
′
=
m
(
x
′
)
+
K
′
T
K
−
1
(
y
−
m
(
x
)
)
Σ
′
=
K
′
′
−
K
′
T
K
−
1
K
′
\begin{matrix} y^{'}|x^{'}, x, y = N \left( y^{'} | \mu^{'}, \Sigma^{'}\right) \\ \mu_{'} = m\left( x_{'} \right) + K_{'}^{T}K^{-1}\left( y - m\left( x \right) \right) \\ \Sigma^{'} = K_{''} - K_{'}^{T}K^{-1}K^{'} \end{matrix}
y′∣x′,x,y=N(y′∣μ′,Σ′)μ′=m(x′)+K′TK−1(y−m(x))Σ′=K′′−K′TK−1K′
贝叶斯优化
了解了高斯过程之后,贝叶斯优化就好理解了。如何优化机器学习的超参数一直是个难题,我们在模型训练中经常需要花费大量的精力来调节调参数而获得更好的性能。执行超参数调参的传统方法包括网格搜索(grid search)方法和随机搜索(random search)。稍微介绍一下网格搜索,假设超参数A有3种选择,超参数B有4种选择,超参数C有5种选择,那么超参数组合就有345=60种,网格搜索需要遍历这60种组合才能最优的方案。随机搜索每次从A,B,C中随机取值组合成新的超参数组合进行训练,随机性很强,所以就导致有时候结果很好,有时候结果很差。网格搜索很容易就遇见维度灾难,随机搜索随机性太强,并没有利用先验知识选择下一组超参数,贝叶斯优化采用一种近似逼近的方法,虽然不知道某个函数具体是什么,可以利用一些先验知识逼近或者猜测该函数是什么。
贝叶斯优化的目标就是寻找超参数使得目标函数
f
(
x
)
f\left( x \right)
f(x)达到最优。
x
∗
=
a
r
g
m
a
x
x
∈
X
f
(
x
)
x^{*} = argmax_{x \in X}f\left( x \right)
x∗=argmaxx∈Xf(x)
一般来说目标函数 f ( x ) f\left( x \right) f(x)是位置的,被当做黑盒问题处理。贝叶斯优化在目标函数未知且计算量不小的情况下,它基于数据使用贝叶斯定理估计目标函数的后验分布,然后根据分布选择下一个采样的超参数组合。下面算法表述了贝叶斯优化的具体流程。
在贝叶斯优化中,使用高斯过程算法来对目标函数进行建模。高斯过程基于多元高斯分布,而这种高斯分布能够灵活地对任何目标进行建模。一旦我们对目标函数进行建模之后,那么下面就需要抽取合适的样点计算,这就涉及了开发和探索之间的权衡,模型在选择时是更倾向于哪一种。
-
探索(exploration)就是在还未取样的区域获取采样点,(方差)
-
开发(exploitation)就是根据后验分布,在最可能出现全局最优解的区域进行采样,(均值)
为了权衡开发和探索,引入一个采集函数(Acquisition function)决定下一个采样点。采样函数包括Probability of improvement, Expected improvement和Upper condence bound。
Probability of improvement:
P
I
(
x
)
=
P
(
f
(
x
)
≥
f
(
x
+
)
+
ξ
)
=
Φ
(
μ
(
x
)
−
f
(
x
+
)
−
ξ
σ
(
x
)
)
PI\left( x\right) = P \left( f \left( x \right) \geq f \left ( x^{+} \right) + \xi \right) = \Phi\left( \frac{\mu \left( x \right) - f\left ( x^{+} \right) - \xi}{\sigma \left( x\right)} \right)
PI(x)=P(f(x)≥f(x+)+ξ)=Φ(σ(x)μ(x)−f(x+)−ξ)
PI是个概率函数,其中
Φ
(
⋅
)
\Phi\left( \cdot \right)
Φ(⋅)是CDF,
ξ
\xi
ξ用来平衡倾向于探索还是开发。
Expected improvement:
PI 是概率函数,EI是期望函数,具体EI的推导见下面链接。
Expected Improvement for Bayesian Optimization: A Derivation
Upper condence bound:
α
U
C
B
(
x
;
β
)
=
μ
(
x
)
−
β
σ
(
x
)
\alpha_{UCB} \left(x ; \beta \right) = \mu \left( x \right) - \beta \sigma\left( x \right)
αUCB(x;β)=μ(x)−βσ(x)
上置信边界,通过参数
β
\beta
β令算法倾向于开发还是探索。
下面GIF动画来自于贝叶斯优化的维基百科,展示了贝叶斯优化在三个采集函数下的动态过程。
贝叶斯优化优点:
- 能够利用先验知识高效地调节超参数
- 通过减少计算任务而加速寻找最优参数
- 在目标函数未知且计算复杂度高的情况下十分强大