本系列主要是贝叶斯机器学习相关知识的学习笔记。
第一讲:概率论回顾,贝叶斯公式,共轭先验
- “贝叶斯规则” 是来自于对于概率分布的一些基本操作。下面举一个简单的例子
例子
整个空间是
Ω
\Omega
Ω,
A
i
A_i
Ai 是第i列(随便定义的),
B
i
B_i
Bi 是第i行(同理,随便定义的)
- 在这个空间里分布着一些点。我们随机的且均匀的从这些点里取出一个点。
- 那么这个概率计算是一个简单的数数。
P ( x ∈ A 1 ) = # A 1 # Ω , P ( x ∈ B 1 ) = # B 1 # Ω P(x \in A_1)=\frac{\#A_1}{\#\Omega}, P(x \in B_1)=\frac{\#B_1}{\#\Omega} P(x∈A1)=#Ω#A1,P(x∈B1)=#Ω#B1 - 那
P
(
x
∈
A
1
∣
x
∈
B
1
)
P(x \in A_1 |x \in B_1)
P(x∈A1∣x∈B1)表示什么呢?它表示在已知该点属于
B
1
B_1
B1的情况下,它属于
A
1
A_1
A1的概率。这就是 条件概率。
P ( x ∈ A 1 ∣ x ∈ B 1 ) = # ( A 1 ∩ B 1 ) # B 1 = # ( A 1 ∩ B 1 ) # Ω # Ω # B 1 = P ( x ∈ A 1 & x ∈ B 1 ) P ( x ∈ B 1 ) P(x \in A_1|x \in B_1)=\frac{\#(A_1 \cap B_1)}{\#B_1}=\frac{\#(A_1 \cap B_1)}{\#\Omega}\frac{\#\Omega}{\#B_1}=\frac{P(x \in A_1 \& x \in B_1)}{P(x \in B_1)} P(x∈A1∣x∈B1)=#B1#(A1∩B1)=#Ω#(A1∩B1)#B1#Ω=P(x∈B1)P(x∈A1&x∈B1)
更一般的表述
-
A
A
A和
B
B
B代表两个事件,然后
P ( A ∣ B ) = P ( A , B ) P ( B ) ⇒ P ( A ∣ B ) P ( B ) = P ( A , B ) P(A|B)=\frac{P(A,B)}{P(B)} \Rightarrow P(A|B)P(B)=P(A,B) P(A∣B)=P(B)P(A,B)⇒P(A∣B)P(B)=P(A,B) - 对于上述的一些符号,我们有如下命名,
P ( A ∣ B ) P(A|B) P(A∣B):条件概率
P ( A , B ) P(A,B) P(A,B):联合概率
P ( B ) P(B) P(B):边缘概率 - 这最后一个听起来似乎不是很好理解,因为它仅仅是“B的概率”。我们可以通过之前同样数数的方式来解释
P
(
B
)
P(B)
P(B)作为概率是如果通过整合(边缘化)来得到的。
P ( B ) = # B # Ω = ∑ i = 1 3 # ( A i ∩ B ) # Ω = ∑ i = 1 3 # ( A i ∩ B ) # Ω = ∑ i = 1 3 P ( A i , B ) P(B) = \frac{\# B}{\#\Omega}=\frac{\sum^3_{i=1}\#(A_i \cap B)}{\#\Omega}=\sum^3_{i=1}\frac{\#(A_i \cap B)}{\# \Omega}=\sum^3_{i=1}P(A_i,B) P(B)=#Ω#B=#Ω∑i=13#(Ai∩B)=i=1∑3#Ω#(Ai∩B)=i=1∑3P(Ai,B) - 一般而言,这个求和以及对于每个 A i A_i Ai都是有严格的要求的。要求彼此没有交集而且它们的并集等于整个空间( Ω \Omega Ω)。
贝叶斯规则
- 我们简单的从几步来推导一下
P ( A , B ) = P ( A ∣ B ) P ( B ) P(A,B)=P(A|B)P(B) P(A,B)=P(A∣B)P(B)
由对称性我们有
P ( A , B ) = P ( B ∣ A ) P ( A ) P(A,B)=P(B|A)P(A) P(A,B)=P(B∣A)P(A)
因此
P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) = P ( B ∣ A ) P ( A ) ∑ i P ( A i , B ) = P ( B ∣ A ) P ( A ) ∑ i P ( B ∣ A i ) P ( A i ) P(A|B)=\frac{P(B|A)P(A)}{P(B)}=\frac{P(B|A)P(A)}{\sum_iP(A_i,B)}=\frac{P(B|A)P(A)}{\sum_iP(B|A_i)P(A_i)} P(A∣B)=P(B)P(B∣A)P(A)=∑iP(Ai,B)P(B∣A)P(A)=∑iP(B∣Ai)P(Ai)P(B∣A)P(A) - 这个等式就是 贝叶斯规则, 可以发现它有一些不同的表示。
- 我们有 P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A|B)=\frac{P(B|A)P(A)}{P(B)} P(A∣B)=P(B)P(B∣A)P(A)
- 对应的这些值有各自的名字
posterior(后验概率) = likelihood(似然概率) × prior(先验概率) evidence(证据因子) \text{posterior(后验概率)} = \frac{\text{likelihood(似然概率)}\times\text{prior(先验概率)}}{\text{evidence(证据因子)}} posterior(后验概率)=evidence(证据因子)likelihood(似然概率)×prior(先验概率) - 证据因子(又称归一化常数,标准化常量),可看做一个归一化的因子,以保证各类别的后验概率和为1。
- 假想我们并不知道 A A A,但是我们可以通过 B B B的某种形式来得到一些信息。贝叶斯规则就是告诉我们一种有迹可循的方法来整合我们所知道的关于 A A A的信息。
举例(医疗检查)
- 我们有两个事件,
A
A
A和
B
B
B:
A = { 1 患病 0 没有患病 B = { 1 病情良性 0 病情恶性 A= \begin{cases} 1 \ \ \ \text{患病} \\ 0 \ \ \ \text{没有患病} \end{cases} \ \ \ \ B= \begin{cases} 1 \ \ \ \text{病情良性} \\ 0 \ \ \ \text{病情恶性} \end{cases} A={1 患病0 没有患病 B={1 病情良性0 病情恶性 - 那么一个人被检查出患病,且病情良性。这个概率是多少呢?
- 根据描述我们知道我们想要的是
P
(
A
=
1
∣
B
=
1
)
P(A=1|B=1)
P(A=1∣B=1)。贝叶斯规则对我们有帮助吗,通过贝叶斯我们知道
P ( A = 1 ∣ B = 1 ) = P ( B = 1 ∣ A = 1 ) P ( A = 1 ) P ( B = 1 ) = P ( B = 1 ∣ A = 1 ) P ( A = 1 ) P ( B = 1 ∣ A = 1 ) P ( A = 1 ) + P ( B = 1 ∣ A = 0 ) P ( A = 0 ) \begin{aligned} P(A=1|B=1)= & \frac{P(B=1|A=1)P(A=1)}{P(B=1)} \\ = & \frac{P(B=1|A=1)P(A=1)}{P(B=1|A=1)P(A=1)+P(B=1|A=0)P(A=0)} \\ \end{aligned} P(A=1∣B=1)==P(B=1)P(B=1∣A=1)P(A=1)P(B=1∣A=1)P(A=1)+P(B=1∣A=0)P(A=0)P(B=1∣A=1)P(A=1) - 假设根据已有的数据可以估计:
P ( B = 1 ∣ A = 1 ) = 0.95 , P ( B = 1 ∣ A = 0 ) = 0.05 , P ( A = 1 ) = 0.01 = 1 − P ( A = 0 ) P(B=1|A=1)=0.95, \ \ \ P(B=1|A=0)=0.05, \ \ \ P(A=1)=0.01=1-P(A=0) P(B=1∣A=1)=0.95, P(B=1∣A=0)=0.05, P(A=1)=0.01=1−P(A=0)
根据上式我们可以推导出 P ( A = 1 ∣ B = 1 ) = 0.16 P(A=1|B=1) = 0.16 P(A=1∣B=1)=0.16
连续空间
- 之前讨论的都是离散空间。也就是我们可以取的不知道的可能值的数量是有限的。
- 当值在连续空间的时候,我们就需要转换到连续分布上来。
例子
x
∈
R
x \in \mathbb R
x∈R,
p
(
x
)
p(x)
p(x)是它的概率密度
p
(
x
)
≥
0
p(x) \ge 0
p(x)≥0并且
∫
p
(
x
)
d
x
=
1
\int p(x)dx=1
∫p(x)dx=1
P
(
x
∈
A
)
=
∫
A
p
(
x
)
d
x
P(x\in A)=\int_A p(x)dx
P(x∈A)=∫Ap(x)dx
- 对离散随机变量适用的法则在这里同样适用
- p ( x ∣ y ) = p ( x , y ) p ( y ) , p ( y ) = ∫ p ( x , y ) d x p(x|y)=\frac{p(x,y)}{p(y)}, \ \ \ p(y)=\int p(x,y)dx p(x∣y)=p(y)p(x,y), p(y)=∫p(x,y)dx
- p ( x ∣ y ) p ( y ) = p ( x , y ) = p ( y ∣ x ) p ( x ) p(x|y)p(y)=p(x,y)=p(y|x)p(x) p(x∣y)p(y)=p(x,y)=p(y∣x)p(x)
- 那么可以导出对于连续随机变量的贝叶斯法则
p ( y ∣ x ) = p ( x ∣ y ) p ( y ) p ( x ) = p ( x ∣ y ) p ( y ) ∫ p ( x ∣ y ) p ( y ) d y p(y|x)=\frac{p(x|y)p(y)}{p(x)}=\frac{p(x|y)p(y)}{\int p(x|y)p(y)dy} p(y∣x)=p(x)p(x∣y)p(y)=∫p(x∣y)p(y)dyp(x∣y)p(y)
贝叶斯模型
- 应用贝叶斯规则去处理一个数据模型问题的未知参数叫做贝叶斯建模。
- 简单来说,我们有下面的一般式
x ∼ p ( x ∣ y ) ← x \sim p(x|y) \leftarrow x∼p(x∣y)← 数据生成的分布,这是数据模型。
y ∼ p ( y ) ← y \sim p(y) \leftarrow y∼p(y)← 模型的先验分布。 - 我们想要学习
y
y
y,那么我们有
p ( y ∣ x ) ∝ p ( x ∣ y ) p ( y ) p(y|x) \propto p(x|y)p(y) p(y∣x)∝p(x∣y)p(y) - 在上式中,我们并不知道 p ( y ∣ x ) p(y|x) p(y∣x),所以我们想要计算它。这个式子就回答了“如果已知 x x x,我们能得到什么关于 y y y的信息?”。右边的两项 p ( x ∣ y ) p ( y ) p(x|y)p(y) p(x∣y)p(y)我们是知道的,因为是由我们定义的。符号 ∝ \propto ∝表示“服从分布”。
- 这是本系列讨论的问题的一般形式,它是比较复杂的因为
- p ( x ∣ y ) p(x|y) p(x∣y)可能会很复杂
- p ( y ∣ x ) p(y|x) p(y∣x)可能会难以处理,因为归一化常数的积分没有封闭形式,这就需要一个算法来逼近
- 这两个问题会是本系列的重点:对数据生成分布的结构,定义不同的模型,以及定义推导算法来学习模型参数的后验分布。
例子:β-伯努利模型
- 现在我们有一系列的观察数据 X 1 , . . . , X N X_1,...,X_N X1,...,XN,这里 X i = 1 X_i=1 Xi=1表示“成功”, X i = 0 X_i=0 Xi=0表示“失败”。可以直观地将它们看作是抛硬币的结果。
- 我们假设每个 X i X_i Xi都来自于抛掷一枚有偏差的硬币,这里 P ( X i = 1 ∣ π ) = π P(X_i=1|\pi)=\pi P(Xi=1∣π)=π。
- 我们进一步假设
X
i
X_i
Xi是独立分布的(iid,independent and identically distributed)。这意味着
X
i
X_i
Xi在给予
π
\pi
π的情况下是条件独立的。数学上,我们可以写作
P ( X 1 , . . . , X N ∣ π ) = ∏ i = 1 N P ( X i ∣ π ) P(X_1,...,X_N|\pi)=\prod^N_{i=1}P(X_i|\pi) P(X1,...,XN∣π)=i=1∏NP(Xi∣π) - 因为
P
(
X
i
∣
π
)
=
π
X
i
(
1
−
π
)
(
1
−
X
i
)
P(X_i|\pi)=\pi^{X_i}(1-\pi)^{(1-X_i)}
P(Xi∣π)=πXi(1−π)(1−Xi),所以
P ( X 1 , . . . , X N ∣ π ) = ∏ i = 1 N π X i ( 1 − π ) ( 1 − X i ) P(X_1,...,X_N|\pi)=\prod^N_{i=1}\pi^{X_i}(1-\pi)^{(1-X_i)} P(X1,...,XN∣π)=i=1∏NπXi(1−π)(1−Xi) - 我们在意的是在给予
X
1
,
.
.
.
,
X
N
X_1,...,X_N
X1,...,XN的情况下,
π
\pi
π的后验分布
P ( π ∣ X 1 , . . . , X N ) ∝ P ( X 1 , . . . , X N ∣ π ) p ( π ) ∝ ∏ i = 1 N π X i ( 1 − π ) ( 1 − X i ) p ( π ) \begin{aligned} P(\pi|X_1,...,X_N) & \propto P(X_1,...,X_N|\pi)p(\pi) \\ & \propto \prod^N_{i=1} \pi^{X_i}(1-\pi)^{(1-X_i)}p(\pi) \\ \end{aligned} P(π∣X1,...,XN)∝P(X1,...,XN∣π)p(π)∝i=1∏NπXi(1−π)(1−Xi)p(π) - 那么这就引出了下一个重要的问题:我们应该怎么定义 p ( π ) p(\pi) p(π)?
第一次尝试
- 定义 p ( π ) = U n i f o r m ( 0 , 1 ) ⇒ p ( π ) = 1 ( 0 ≤ π ≤ 1 ) p(\pi) = Uniform(0, 1) \Rightarrow p(\pi) = \bm 1(0 \le \pi \le 1) p(π)=Uniform(0,1)⇒p(π)=1(0≤π≤1)
- 通过贝叶斯法则,
p ( π ∣ X 1 , . . . , X N ) = π ( ∑ i X i + 1 ) − 1 ( 1 − π ) ( N − ∑ i X i + 1 ) − 1 ∫ 0 1 π ∑ i X i ( 1 − π ) N − ∑ i X i d π p(\pi|X_1,...,X_N)=\frac{\pi^{(\sum_iX_i+1)-1}(1-\pi)^{(N-\sum_iX_i+1)-1}}{\int^1_0\pi^{\sum_iX_i}(1-\pi)^{N-\sum_iX_i}d\pi} p(π∣X1,...,XN)=∫01π∑iXi(1−π)N−∑iXidππ(∑iXi+1)−1(1−π)(N−∑iXi+1)−1 - 归一化常数是很复杂的,还好数学家已经帮我们解决了
p ( π ∣ X 1 , . . . , X N ) = Γ ( N + 2 ) Γ ( 1 + ∑ i X i ) Γ ( 1 + N − ∑ i X i ) π ∑ i X i + 1 − 1 ( 1 − π ) N − ∑ i X i + 1 − 1 p(\pi|X_1,...,X_N)=\frac{\Gamma(N+2)}{\Gamma(1+\sum_iX_i)\Gamma(1+N-\sum_iX_i)}\pi^{\sum_iX_i+1-1}(1-\pi)^{N-\sum_iX_i+1-1} p(π∣X1,...,XN)=Γ(1+∑iXi)Γ(1+N−∑iXi)Γ(N+2)π∑iXi+1−1(1−π)N−∑iXi+1−1
这里 Γ ( ⋅ ) \Gamma(\cdot) Γ(⋅)表示的是 gamma函数 - 这是一个非常普遍的分布,叫做beta分布:
B e t a ( a , b ) = Γ ( a + b ) Γ ( a ) Γ ( b ) π a − 1 ( 1 − π ) b − 1 Beta(a,b)=\frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)}\pi^{a-1}(1-\pi)^{b-1} Beta(a,b)=Γ(a)Γ(b)Γ(a+b)πa−1(1−π)b−1 - 在本例中,上述的后验分布, a = 1 + ∑ i X i a=1+\sum_iX_i a=1+∑iXi, b = 1 + N − ∑ i X i b=1+N-\sum_iX_i b=1+N−∑iXi。
- 注意到当 a = b = 1 a=b=1 a=b=1, B e t a ( 1 , 1 ) = U n i f o r m ( 0 , 1 ) Beta(1,1)=Uniform(0,1) Beta(1,1)=Uniform(0,1),正是我们选择的先验分布。
共轭先验
- 通过观察我们发现似然项和beta分布长得很像。同时,因为beta分布拥有
U
n
i
f
o
r
m
(
0
,
1
)
Uniform(0,1)
Uniform(0,1)分布作为特例,这些信息就给了我们很多先验知识。如果我们尝试使用beta分布作为
π
\pi
π的先验会怎么样呢?
p ( π ∣ X 1 , . . . , X N ) ∝ p ( X 1 , . . . , X N ∣ π ) p ( π ) ∝ [ π ∑ i X i ( 1 − π ) N − ∑ i X i ] [ Γ ( a + b ) Γ ( a ) Γ ( b ) π a − 1 ( 1 − π ) b − 1 ] ∝ π a + ∑ i X i − 1 ( 1 − π ) b + N − ∑ i X i − 1 \begin{aligned} p(\pi|X_1,...,X_N) & \propto p(X_1,...,X_N|\pi)p(\pi) \\ & \propto \left[ \pi^{\sum_iX_i}(1-\pi)^{N-\sum_iX_i} \right] \left[ \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)}\pi^{a-1}(1-\pi)^{b-1}\right] \\ & \propto \pi^{a+\sum_iX_i-1}(1-\pi)^{b+N-\sum_iX_i-1} \end{aligned} p(π∣X1,...,XN)∝p(X1,...,XN∣π)p(π)∝[π∑iXi(1−π)N−∑iXi][Γ(a)Γ(b)Γ(a+b)πa−1(1−π)b−1]∝πa+∑iXi−1(1−π)b+N−∑iXi−1 - 有以下几点需要注意:
- 在最后一行,我们去掉了 Γ ( a + b ) Γ ( a ) Γ ( b ) \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} Γ(a)Γ(b)Γ(a+b)项。这是因为它跟 π \pi π无关,它可以在归一化常数中表示。也就是,归一化常数是分子的积分。如果我们在第二行除以这个积分项,我们就可以去掉 Γ ( a + b ) Γ ( a ) Γ ( b ) \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} Γ(a)Γ(b)Γ(a+b)。这样的唯一目的就是方便,且让公式看起来更简洁。
- 在本例中,我们知道除以什么可以使它是一个关于 π \pi π的概率分布。看公式最后一行,我们知道它与 B e t a ( a + ∑ i X i , b + N − ∑ i X i ) Beta(a+\sum_iX_i,b+N-\sum_iX_i) Beta(a+∑iXi,b+N−∑iXi)分布成比例。
- 因此, p ( π ∣ X 1 , . . . , X N ) = B e t a ( a + ∑ i X i , b + N − ∑ i X i ) p(\pi|X_1,...,X_N)=Beta(a+\sum_iX_i,b+N-\sum_iX_i) p(π∣X1,...,XN)=Beta(a+∑iXi,b+N−∑iXi)
- 注意到一个问题,当我们选择beta分布来作为先验分布的时候,我们发现后验分布也同样是一个beta分布,只是参数不同。这是因为beta分布是这个问题的共轭先验。
- 如果后验分布和先验分布属于统一分布族只是参数不同,那么我们就说这个分布是似然函数中的特定参数的“共轭先验”,或者说它是“似然函数的共轭先验”。共轭先验非常方便,因为我们只需要从数据中收集足够多的信息来完成先验到后验的转化。比如,在上述问题中,我们只需要数总的“成功”次数( ∑ i X i \sum_iX_i ∑iXi)和总的“失败”次数( N − ∑ i X i N-\sum_iX_i N−∑iXi)。
- 我们会发现很多共轭先验,然后它们能够帮助完成模型的快速推导。
通过使用贝叶斯,我们获得了什么
- 对于之前的beta先验的模型问题,考虑后验概率中
π
\pi
π的期望和方差
E [ π ] = a + ∑ i X i a + b + N , V a r ( π ) = ( a + ∑ i X i ) ( b + N − ∑ i X i ) ( a + b + N ) 2 ( a + b + N − 1 ) \mathbb E[\pi]=\frac{a+\sum_iX_i}{a+b+N}, \ \ \ Var(\pi)=\frac{(a+\sum_iX_i)(b+N-\sum_iX_i)}{(a+b+N)^2(a+b+N-1)} E[π]=a+b+Na+∑iXi, Var(π)=(a+b+N)2(a+b+N−1)(a+∑iXi)(b+N−∑iXi) - 注意到随着
N
N
N增加,
- 期望会收敛于实际的成功率。
- 方差会以 1 / N 1/N 1/N衰减,最终趋近于0。
- 和最大似然估计相比,最大似然估计是寻找
π
\pi
π的一个点估计(特定值)来最大化似然函数
π = arg m a x π p ( X 1 , . . . , X N ∣ π ) = 1 N ∑ i = 1 N X i \pi = \arg \underset{\pi}{max} \ p(X_1,...,X_N|\pi) = \frac{1}{N}\sum^N_{i=1}X_i π=argπmax p(X1,...,XN∣π)=N1i=1∑NXi - 贝叶斯方法旨在抓取根据数据量变化的不确定性,而最大似然估计并不是这样。
- 当我们有越来越多的数据,贝叶斯方法和最大似然方法就会越来越相近。然而,贝叶斯得到的是一个由不确定到确定的平滑过程。