deepbayes lecture1: 贝叶斯框架简介
贝叶斯框架简介
今天我们来聊聊贝叶斯学习。在机器学习领域,贝叶斯方法提供了一种概率的视角来理解和处理问题。与传统的频率主义方法不同,贝叶斯方法强调对模型参数的不确定性进行建模,并利用先验知识来指导学习过程。
什么是贝叶斯框架?
贝叶斯框架的核心思想是利用贝叶斯定理,通过观察数据来更新我们对模型参数的信念。 简单来说,就是将我们的先验认知和观测到的数据相结合,从而得出更加合理的结论。
如何处理概率分布?
在贝叶斯框架中,我们需要处理各种概率分布。以下是一些基本概念和公式:
-
条件概率:
C o n d i t i o n a l = J o i n t M a r g i n a l , p ( x ∣ y ) = p ( x , y ) p ( y ) Conditional = \frac{Joint}{Marginal}, \quad p(x|y) = \frac{p(x, y)}{p(y)} Conditional=MarginalJoint,p(x∣y)=p(y)p(x,y)
这个公式描述了在给定事件y发生的情况下,事件x发生的概率。
-
乘法法则(Product Rule):任何联合分布都可以表示为一维条件分布的乘积。
p ( x , y , z ) = p ( x ∣ y , z ) p ( y ∣ z ) p ( z ) p(x, y, z) = p(x|y, z)p(y|z)p(z) p(x,y,z)=p(x∣y,z)p(y∣z)p(z)
这个公式用于分解联合概率分布,方便计算。
-
加法法则(Sum Rule):任何边缘分布都可以通过对联合分布积分得到。
p ( y ) = ∫ p ( x , y ) d x p(y) = \int p(x,y)dx p(y)=∫p(x,y)dx
这个公式用于计算边缘概率分布,消除不关心的变量。
举例说明
假设我们有三个变量x,y和z,并且我们对x的观测值感兴趣,想要预测y的值。如果z的值未知且与我们不相关,我们如何从联合概率分布p(x, y, z)中估计p(y|x)?
根据乘法法则和加法法则:
p ( y ∣ x ) = p ( x , y ) p ( x ) = ∫ p ( x , y , z ) d z ∫ p ( x , y , z ) d z d y p(y|x) = \frac{p(x, y)}{p(x)} = \frac{\int p(x, y, z)dz}{\int p(x, y, z)dzdy} p(y∣x)=p(x)p(x,y)=∫p(x,y,z)dzdy∫p(x,y,z)dz
通过这个例子,我们可以看到如何使用乘法法则和加法法则从联合分布中推导出任意条件分布。
贝叶斯定理
贝叶斯定理是贝叶斯框架的基石。它描述了在观察到数据后,如何更新我们对参数的先验信念。公式如下:
p ( y ∣ x ) = p ( x , y ) p ( 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(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(x)p(x∣y)p(y)=∫p(x∣y)p(y)dyp(x∣y)p(y)
其中:
- p ( y ∣ x ) p(y|x) p(y∣x) 称为后验概率(Posterior),表示在观察到数据x后,我们对参数y的信念。
- p ( x ∣ y ) p(x|y) p(x∣y) 称为似然(Likelihood),表示在给定参数y的情况下,数据x出现的可能性。
- p ( y ) p(y) p(y) 称为先验概率(Prior),表示在未观察到数据前,我们对参数y的初始信念。
- p ( x ) p(x) p(x) 称为证据(Evidence),用于对后验概率进行归一化。
用更简洁的语言表达:
P o s t e r i o r = L i k e l i h o o d × P r i o r E v i d e n c e Posterior = \frac{Likelihood \times Prior}{Evidence} Posterior=EvidenceLikelihood×Prior
贝叶斯定理为我们提供了一种在获得新信息时转换不确定性的规则。
统计推断
在统计推断中,我们通常需要根据独立同分布的数据 X = ( x 1 , . . . , x n ) X = (x_1,..., x_n) X=(x1,...,xn),从分布 p ( x ∣ θ ) p(x|\theta) p(x∣θ) 估计参数 θ \theta θ。
频率主义框架(Frequentist Framework)
频率主义方法使用最大似然估计(MLE)来估计参数 θ \theta θ。
θ M L = arg max p ( X ∣ θ ) = arg max ∏ i = 1 n p ( x i ∣ θ ) = arg max ∑ i = 1 n log p ( x i ∣ θ ) \theta_{ML} = \arg \max p(X|\theta) = \arg \max \prod_{i=1}^{n} p(x_i|\theta) = \arg \max \sum_{i=1}^{n} \log p(x_i|\theta) θML=argmaxp(X∣θ)=argmaxi=1∏np(xi∣θ)=argmaxi=1∑nlogp(xi∣θ)
贝叶斯框架(Bayesian Framework)
贝叶斯方法则通过先验概率 p ( θ ) p(\theta) p(θ) 编码我们对 θ \theta θ 的不确定性,然后应用贝叶斯推断。
p ( θ ∣ X ) = ∏ i = 1 n p ( x i ∣ θ ) p ( θ ) ∫ ∏ i = 1 n p ( x i ∣ θ ) p ( θ ) d θ p(\theta|X) = \frac{\prod_{i=1}^{n} p(x_i|\theta) p(\theta)}{\int \prod_{i=1}^{n} p(x_i|\theta) p(\theta) d\theta} p(θ∣X)=∫∏i=1np(xi∣θ)p(θ)dθ∏i=1np(xi∣θ)p(θ)
抛硬币示例
让我们通过一个简单的抛硬币的例子来说明贝叶斯框架的应用。
假设我们有一枚硬币,我们想估计它正面朝上的概率 θ \theta θ。我们进行了两次试验,结果都是正面朝上(H, H)。
频率主义方法
使用最大似然估计,我们会得到 θ M L = 1 \theta_{ML} = 1 θML=1,也就是说,这枚硬币每次都会正面朝上。
贝叶斯方法
在贝叶斯方法中,我们会先对 θ \theta θ 设定一个先验分布。例如,我们可以使用一个均匀分布作为先验,表示我们一开始认为硬币是公平的可能性最大。
随着我们观察到数据(两次正面朝上),我们会更新我们的后验分布。这个后验分布会向 θ = 1 \theta = 1 θ=1 移动,但不会完全等于 1,因为它受到了先验分布的影响。在1000次试验中观察到489次反面和511次正面,那么贝叶斯和频率主义方法都会得出硬币是公平的结论。
频率主义 vs. 贝叶斯
下表总结了频率主义和贝叶斯框架的区别:
频率主义(Frequentist) | 贝叶斯(Bayesian) | |
---|---|---|
变量 | 随机和确定性 | 一切都是随机的 |
适用性 | n >> d | ∀n |
- 频率主义方法假设参数是固定的,数据是随机的。
- 贝叶斯方法则假设参数和数据都是随机的,并且我们可以对参数的不确定性进行建模。
当数据量足够大时,频率主义方法是贝叶斯方法的一个极限情况。
lim n / d → ∞ p ( θ ∣ x 1 , . . . , x n ) = δ ( θ − θ M L ) \lim_{n/d \to \infty} p(\theta|x_1, ..., x_n) = \delta(\theta - \theta_{ML}) n/d→∞limp(θ∣x1,...,xn)=δ(θ−θML)
贝叶斯框架的优势
- 可以编码先验知识或期望的最终解决方案属性。
- 先验是一种正则化形式。
- 除了点估计之外,后验还包含有关估计不确定性的信息。
贝叶斯框架只提供了一种替代的观点,它并不矛盾或否定频率主义框架。
概率机器学习模型
对于数据中的每个对象:
- x x x - 观测变量集(特征)。
- y y y - 隐藏/潜在变量集(类别标签/隐藏表示等)。
- θ \theta θ - 模型参数(例如,线性模型的权重)。
我们可以分为判别模型和生成模型。
判别模型
判别模型直接对 p ( y , θ ∣ x ) p(y, \theta | x) p(y,θ∣x) 进行建模。通常假设 θ \theta θ 上的先验概率与 x x x 无关:
p ( y , θ ∣ x ) = p ( y ∣ x , θ ) p ( θ ) p(y, \theta | x) = p(y | x, \theta)p(\theta) p(y,θ∣x)=p(y∣x,θ)p(θ)
判别模型无法生成新的对象,因为它需要 x x x 作为输入。例如,分类或回归任务就属于判别模型。
生成模型
生成模型对联合分布 p ( x , y , θ ) p(x, y, \theta) p(x,y,θ) 进行建模:
p ( x , y , θ ) = p ( x , y ∣ θ ) p ( θ ) p(x, y, \theta) = p(x, y | \theta)p(\theta) p(x,y,θ)=p(x,y∣θ)p(θ)
生成模型可以生成新的对象,即 ( x , y ) (x, y) (x,y) 对。但是,由于观测空间通常比隐藏空间复杂得多,因此训练起来可能非常困难。例如,文本生成、语音生成、图像生成等都属于生成模型。
训练贝叶斯机器学习模型
给定训练数据 ( X t r , Y t r ) (X_{tr}, Y_{tr}) (Xtr,Ytr) 和一个判别模型 p ( y , θ ∣ x ) p(y, \theta | x) p(y,θ∣x),训练阶段的目标是对 θ \theta θ 进行贝叶斯推断:
p ( θ ∣ X t r , Y t r ) = p ( Y t r ∣ X t r , θ ) p ( θ ) ∫ p ( Y t r ∣ X t r , θ ) p ( θ ) d θ p(\theta | X_{tr}, Y_{tr}) = \frac{p(Y_{tr} | X_{tr}, \theta) p(\theta)}{\int p(Y_{tr} | X_{tr}, \theta) p(\theta) d\theta} p(θ∣Xtr,Ytr)=∫p(Ytr∣Xtr,θ)p(θ)dθp(Ytr∣Xtr,θ)p(θ)
结果是一个算法集成,而不是一个单一的最佳模型 θ M L \theta_{ML} θML。
- 集成通常优于单一的最佳模型。
- 后验可以捕获模型可以从训练数据中提取的所有依赖关系,并且可以用作新的先验。
预测贝叶斯机器学习模型
在测试阶段:
- 我们有一个来自训练的后验分布 p ( θ ∣ X t r , Y t r ) p(\theta | X_{tr}, Y_{tr}) p(θ∣Xtr,Ytr)。
- 一个新的数据点 x x x 到达。
- 我们需要计算其隐藏值 y y y 的预测分布。
对参数 θ \theta θ 的后验进行集成:
p ( y ∣ x , X t r , Y t r ) = ∫ p ( y ∣ x , θ ) p ( θ ∣ X t r , Y t r ) d θ p(y | x, X_{tr}, Y_{tr}) = \int p(y | x, \theta)p(\theta | X_{tr}, Y_{tr}) d\theta p(y∣x,Xtr,Ytr)=∫p(y∣x,θ)p(θ∣Xtr,Ytr)dθ
完全贝叶斯推断
- 训练阶段: p ( θ ∣ X t r , Y t r ) = p ( Y t r ∣ X t r , θ ) p ( θ ) ∫ p ( Y t r ∣ X t r , θ ) p ( θ ) d θ p(\theta | X_{tr}, Y_{tr}) = \frac{p(Y_{tr} | X_{tr}, \theta) p(\theta)}{\int p(Y_{tr} | X_{tr}, \theta) p(\theta) d\theta} p(θ∣Xtr,Ytr)=∫p(Ytr∣Xtr,θ)p(θ)dθp(Ytr∣Xtr,θ)p(θ)
- 测试阶段: p ( y ∣ x , X t r , Y t r ) = ∫ p ( y ∣ x , θ ) p ( θ ∣ X t r , Y t r ) d θ p(y | x, X_{tr}, Y_{tr}) = \int p(y | x, \theta)p(\theta | X_{tr}, Y_{tr}) d\theta p(y∣x,Xtr,Ytr)=∫p(y∣x,θ)p(θ∣Xtr,Ytr)dθ
完全贝叶斯推断可能难以处理。
共轭分布(Conjugate Distributions)
如果先验概率 p ( y ) p(y) p(y) 和条件概率 p ( x ∣ y ) p(x | y) p(x∣y) 是共轭的,那么后验概率 p ( y ∣ x ) p(y | x) p(y∣x) 与先验概率属于相同的参数族:
p ( y ) ∈ A ( α ) , p ( x ∣ y ) ∈ B ( y ) ⟹ p ( y ∣ x ) ∈ A ( α ′ ) p(y) \in A(\alpha), \quad p(x | y) \in B(y) \quad \implies \quad p(y | x) \in A(\alpha') p(y)∈A(α),p(x∣y)∈B(y)⟹p(y∣x)∈A(α′)
直观理解:
p ( y ∣ x ) = p ( x ∣ y ) p ( y ) ∫ p ( x ∣ y ) p ( y ) d y p(y | x) = \frac{p(x | y)p(y)}{\int p(x | y)p(y)dy} p(y∣x)=∫p(x∣y)p(y)dyp(x∣y)p(y)
在这种情况下,贝叶斯推断可以以闭合形式完成。
共轭先验示例:抛硬币
- 我们有一个硬币,它可能不是公平的。
- 任务是估计 θ \theta θ 的概率。
- 数据: X = ( x 1 , . . . , x n ) , x ∈ { 0 , 1 } X = (x_1, ..., x_n), \quad x \in \{0, 1\} X=(x1,...,xn),x∈{0,1}。
概率模型:
p ( x , θ ) = p ( x ∣ θ ) p ( θ ) p(x, \theta) = p(x | \theta)p(\theta) p(x,θ)=p(x∣θ)p(θ)
- 似然函数(Likelihood): B e r n ( x ∣ θ ) = θ x ( 1 − θ ) 1 − x Bern(x | \theta) = \theta^x (1 - \theta)^{1-x} Bern(x∣θ)=θx(1−θ)1−x
- 先验(Prior):我们需要选择一个合适的先验分布。
如何选择先验分布?
- 正确的定义域: θ ∈ [ 0 , 1 ] \theta \in [0, 1] θ∈[0,1]。
- 包括先验知识:硬币很可能是公平的。
- 推断复杂性:使用共轭先验。
Beta 分布 满足所有要求:
B e t a ( θ ∣ a , b ) = 1 B ( a , b ) θ a − 1 ( 1 − θ ) b − 1 Beta(\theta \mid a, b) = \frac{1}{B(a, b)} \theta^{a-1} (1 - \theta)^{b-1} Beta(θ∣a,b)=B(a,b)1θa−1(1−θ)b−1
Beta分布也可以用于硬币最有可能不公平的情况。
让我们检查一下,我们的似然函数和先验概率是否是共轭的:
p ( x ∣ θ ) = θ x ( 1 − θ ) 1 − x p(x \mid \theta) = \theta^x (1 - \theta)^{1-x} p(x∣θ)=θx(1−θ)1−x
p ( θ ) = 1 B ( a , b ) θ a − 1 ( 1 − θ ) b − 1 p(\theta) = \frac{1}{B(a, b)} \theta^{a-1} (1 - \theta)^{b-1} p(θ)=B(a,b)1θa−1(1−θ)b−1
思路是检查先验概率和后验概率是否位于相同的参数族中:
p ( θ ) = C θ α ( 1 − θ ) β p(\theta) = C \theta^\alpha (1 - \theta)^\beta p(θ)=Cθα(1−θ)β p ( θ ∣ x ) = C ′ ′ θ α ′ ( 1 − θ ) β ′ p(\theta \mid x) = C'' \theta^{\alpha'} (1 - \theta)^{\beta'} p(θ∣x)=C′′θα′(1−θ)β′
贝叶斯推断(Bayesian Inference)在接收到数据 X = ( x 1 , . . . , x n ) X = (x_1, ..., x_n) X=(x1,...,xn) 后:
p ( θ ∣ X ) = 1 Z p ( X ∣ θ ) p ( θ ) = 1 Z ∏ i = 1 n p ( x i ∣ θ ) p ( θ ) = 1 Z ∏ i = 1 n θ x i ( 1 − θ ) 1 − x i 1 B ( a , b ) θ a − 1 ( 1 − θ ) b − 1 = 1 Z ′ θ a + ∑ i = 1 n x i − 1 ( 1 − θ ) b + n − ∑ i = 1 n x i − 1 = B e t a ( θ ∣ a ′ , b ′ ) p(\theta \mid X) = \frac{1}{Z} p(X \mid \theta) p(\theta) = \frac{1}{Z} \prod_{i=1}^{n} p(x_i \mid \theta) p(\theta) = \frac{1}{Z} \prod_{i=1}^{n} \theta^{x_i} (1 - \theta)^{1-x_i} \frac{1}{B(a, b)} \theta^{a-1} (1 - \theta)^{b-1} = \frac{1}{Z'} \theta^{a + \sum_{i=1}^{n} x_i - 1} (1 - \theta)^{b + n - \sum_{i=1}^{n} x_i - 1} = Beta(\theta \mid a', b') p(θ∣X)=Z1p(X∣θ)p(θ)=Z1i=1∏np(xi∣θ)p(θ)=Z1i=1∏nθxi(1−θ)1−xiB(a,b)1θa−1(1−θ)b−1=Z′1θa+∑i=1nxi−1(1−θ)b+n−∑i=1nxi−1=Beta(θ∣a′,b′)
新的参数:
a ′ = a + ∑ i = 1 n x i b ′ = b + n − ∑ i = 1 n x i a' = a + \sum_{i=1}^{n} x_i \quad b' = b + n - \sum_{i=1}^{n} x_i a′=a+i=1∑nxib′=b+n−i=1∑nxi
常见共轭分布:
似然函数 p ( x ∣ y ) p(x|y) p(x∣y) | y y y | 共轭先验 p ( y ) p(y) p(y) |
---|---|---|
高斯分布 (Gaussian) | μ \mu μ | 高斯分布 (Gaussian) |
高斯分布 (Gaussian) | σ − 2 \sigma^{-2} σ−2 | Gamma 分布 (Gamma) |
高斯分布 (Gaussian) | ( μ , σ − 2 ) (\mu, \sigma^{-2}) (μ,σ−2) | 高斯-Gamma (Gaussian-Gamma) |
多元高斯 (Multivariate Gaussian) | Σ − 1 \Sigma^{-1} Σ−1 | Wishart 分布 (Wishart) |
伯努利 (Bernoulli) | p p p | Beta 分布 (Beta) |
多项式 (Multinomial) | ( p 1 , . . . , p m ) (p_1, ..., p_m) (p1,...,pm) | Dirichlet 分布 (Dirichlet) |
泊松 (Poisson) | λ \lambda λ | Gamma 分布 (Gamma) |
均匀分布 (Uniform) | θ \theta θ | Pareto 分布 (Pareto) |
如果没有共轭性怎么办?
最简单的方法是在 θ M P \theta_{MP} θMP 中用 delta 函数近似后验概率:
θ M P = arg max p ( θ ∣ X t r , Y t r ) = arg max p ( Y t r ∣ X t r , θ ) p ( θ ) \theta_{MP} = \arg \max p(\theta \mid X_{tr}, Y_{tr}) = \arg \max p(Y_{tr} \mid X_{tr}, \theta) p(\theta) θMP=argmaxp(θ∣Xtr,Ytr)=argmaxp(Ytr∣Xtr,θ)p(θ)
在测试阶段:
p ( y ∣ x , X t r , Y t r ) = ∫ p ( y ∣ x , θ ) p ( θ ∣ X t r , Y t r ) d θ ≈ p ( y ∣ x , θ M P ) p(y \mid x, X_{tr}, Y_{tr}) = \int p(y \mid x, \theta) p(\theta \mid X_{tr}, Y_{tr}) d\theta \approx p(y \mid x, \theta_{MP}) p(y∣x,Xtr,Ytr)=∫p(y∣x,θ)p(θ∣Xtr,Ytr)dθ≈p(y∣x,θMP)
我们不需要计算归一化常数。
我们无法计算真实的后验。
总结
总的来说,贝叶斯框架为我们提供了一种灵活和强大的方法来处理机器学习问题。通过结合先验知识和观察数据,我们可以更好地对模型参数的不确定性进行建模,并做出更加合理的预测。
Reference
https://github.com/bayesgroup/deepbayes-2019/blob/master/lectures/day1/1.%20Dmitry%20Vetrov%20-%20Bayesian%20framework.pdf