.. meta:: :description lang=zh_CN: 贝叶斯估计 :keywords: 贝叶斯估计,贝叶斯,贝叶斯参数估计,Bayesian estimation,最大后验估计,Maximum a posteriori estimation,MAP,最大似然估计和最大后验概率的区别,最大后验概率 .. _ch_Bayesian_estimation: ######################################################## 贝叶斯估计 ######################################################## 在统计推断领域有两大参数估计算法,一是最大似然估计,二是贝叶斯估计。二者存在一定联系,但是在理念上存在很大差异。 本章我们讨论一下贝叶斯估计。 贝叶斯估计 ################################################### 在概率学说中,存在着两个学派:频率学派和贝叶斯学派, 极大似然估计是频率学派的思想,而贝叶斯估计是贝叶斯学派的思想。 这里我们并不过多的讨论两个学派的区别,我们只需要知道极大似然估计估计和贝叶斯估计二者在思想上的差别。 **频率学派** 在上节讲解似然估计的时候, 我们用一个参数化的概率分布 :math:`P(X;\theta)` 表示随机变量 :math:`X` 的概率分布。 :math:`\theta` 取不同值,会得到不同的 :math:`P(X;\theta)` 的函数表达式, 比如: :math:`P(X;\theta=0.5)` ,:math:`P(X;\theta=0.6)` 。 频率学派中,参数 :math:`\theta` 被看做一个数值对象,**其值是固定值,只不过是未知的** , 目标是找到那个最优的参数值,然后代入 :math:`P(X;\theta)` 。 这等价于:在 :math:`\theta` 取某个值的条件下,变量 :math:`X` 的概率分布, 也就是 把 :math:`P(X;\theta)` 看做是 **条件概率分布** :math:`P(X|\theta)` 。 最大似然估计的思想中,认为变量 :math:`X` 的概率分布是条件概率分布 :math:`P(X|\theta)` , 只要找到参数 :math:`\theta` 的值就可以确定 :math:`P(X|\theta)` 的表达式, 然后就可以利用条件概率分布 :math:`P(X|\theta=\hat{\theta})` 生成新的 :math:`X` 的样本值, 整个过程如下: .. math:: \mathcal{D} \xrightarrow{\text{MLE}} \hat{\theta}_{ML} \xrightarrow{\text{代入}} P(X|\theta=\hat{\theta}_{ML}) \xrightarrow{\text{采样}} x_{\text{新样本}} **贝叶斯学派** 然而贝叶斯学派认为,参数值并不是固定值,而是不确定的,因为我们并没有观察到。 对于没有观察到的事件(得到证据证明其值是什么),其每种值都是有可能的。 在 :math:`P(X;\theta)` 中,参数 :math:`\theta` 应该也是一个值随机的变量, 因此 :math:`P(X;\theta)` 应该是联合概率分布 :math:`P(X,\theta)` ,而不是条件概率分布。 根据链式法则,联合概率可以分解成条件概率的乘积: .. math:: :label: eq_Bayesian_10 P(X,\theta) = P(\theta) P(X|\theta) 其中,:math:`P(\theta)` 是变量 :math:`\theta` 的概率分布, :math:`P(X|\theta)` 是已知 :math:`\theta` 的条件下 :math:`X` 的条件概率分布。 此时,一条 :math:`X` 的观测样本的生成过程是: 1. 先从概率分布 :math:`P(\theta)` 得到 :math:`\theta` 的采样值 :math:`\bar{\theta}`。 2. 再把 :math:`\bar{\theta}` 代入条件概率分布 :math:`P(X|\theta=\bar{\theta})` 。 3. 最后从条件概率分布 :math:`P(X|\theta=\bar{\theta})` 采样得到 :math:`\bar{x}` 。 和频率派(最大似然估计)的最大区别就是,在生成 :math:`X` 的样本前, 需要先根据 :math:`\theta` 的概率分布 :math:`P(\theta)` 得到 :math:`\theta` 的样本值。 :math:`\theta` **也是一个随机值** 。 事实上,我们并不需要真的去采样参数 :math:`\theta` 的值, 可以通过对联合概率分布进行边缘化操作得到变量 :math:`X` 边缘概率分布。 .. math:: :label: eq_Bayesian_12 P(X) = \int_0^1 P(X,\theta) d\theta = \int_0^1 P(\theta) P(X|\theta) d \theta 通过对 :math:`\theta` 进行积分,我们可以消除联合概率公式中的参数 :math:`\theta` ,得到 :math:`X` 边缘概率分布 :math:`P(X)` ,进而用边缘概率分布 :math:`P(X)` 对 :math:`X` 进行采样。 但无论是先对 :math:`\theta` 进行采样,还是得到边缘概率分布 :math:`P(X)` ,我们都需要得到参数 :math:`\theta` 的概率分布 :math:`P(\theta)` 的表达式, 而贝叶斯估计就是利用贝叶斯定理得到 :math:`P(\theta)` 。 **贝叶斯定理** 我们知道变量 :math:`\theta` 和变量 :math:`X` 组成联合概率 :math:`P(\theta,X)` ,并且二者不是相互的独立的, 变量 :math:`\theta` 影响着变量 :math:`X` ,二者存在"因果关系", :math:`\theta` 是"因",:math:`X` 是"果"。 联合概率可以通过链式法则分解成一系列条件概率的乘积形式, 链式法则并没有限定变量的顺序(只受到变量间独立性影响), 所以联合概率 :math:`P(X,\theta)` 有两种分解方式: .. math:: :label: eq_2_13 P(X,\theta) = P(\theta) P(X|\theta) = P(X) P(\theta|X) 通过移项可以得到: .. math:: :label: eq_Bayesian_14 P(\theta|X) = \frac{P(\theta) P(X|\theta)}{P(X)} :eq:`eq_Bayesian_14` 就是贝叶斯定理,贝叶斯定理的核心就是如下的转换: .. math:: :label: eq_Bayesian_15 P(\text{因}|\text{果}) = \frac{P(\text{因})P(\text{果}|\text{因}) }{P(\text{果})} 很多场景下,我们可以看到"果",也就是我们有变量 :math:`X` 的观测值,但我们不知道导致这个"果"的"因"是什么,也就是不知道变量 :math:`\theta` 是什么。这时我们就可以利用贝叶斯定理推断出"因",而这就是通常所说的贝叶斯推断(Bayesian inference), 很多资料中会把"结果"(观测值)称之为证据(evidence),把"果"变量称为证据变量。 .. note:: 实际上,这里的"因果"解释并不准确,只是为了方便大家理解才这样说。 **贝叶斯推断** 变量 :math:`\theta` 是"因"变量,变量 :math:`X` 是"果"变量,而其观测值 :math:`\mathcal{D}` 就是看到的"结果", 我们把变量 :math:`X` 的观测样本 :math:`\mathcal{D}` 和变量 :math:`\theta` 写成贝叶斯定理的形式: .. math:: :label: eq_Bayesian_16 P(\theta|\mathcal{D}) =\frac{P(\mathcal{D}|\theta) P'(\theta)}{P(\mathcal{D})} - :math:`P(\theta|\mathcal{D})` 表示基于"结果" :math:`\mathcal{D}` 推断出的"因"变量 :math:`\theta` 的概率分布, 通常被称为 **后验概率分布(posterior probability distribution)** ,这里"后验"就表示有了 **证据** 之后,这里的证据就是指"观测结果",也就是观测样本集。 - :math:`P'(\theta)` 表示的是在没有任何证据(观测样本集)时,经验上对 :math:`\theta` 的认知, 称为 **先验概率分布(prior probability distribution)** 。 先验一般是根据具体的应用场景凭借经验为之设定一个常见的概率分布, 如果你对 :math:`P(\theta)` 一无所知那可以设定为均匀分布。 注意这里的 :math:`P'(\theta)` 和 :eq:`eq_Bayesian_10` 中的 :math:`P(\theta)` 虽然都表示参数变量的边缘概率, 但它们是在贝叶斯估计中不同阶段的表示,所以这里我们加了一个上标 ``'`` 进行区分, 后面我们会说明。 - :math:`P(\mathcal{D}|\theta)` 就是在有 :math:`\theta` 的条件下生成观测样本的的概率, 我们知道观测样本集是符合独立同分布(i.i.d)的,所以展开后具有如下形式: .. math:: P(\mathcal{D}|\theta) &= P(\{x^{(1)},\ldots,x^{(N)}\}|\theta) &= \prod_{i=1}^{N} P(x^{(i)}|\theta) 我们发现这其实就是样本的似然,所以 :math:`P(\mathcal{D}|\theta)` 就是样本的似然值。 - :math:`P(\mathcal{D})` 是"果"的观测,直观的讲就是观测样本集的概率,通常被称为证据(evidence)。 :math:`P(\mathcal{D})` 作为分母,本质上就是归一化因子,是分子所有可能取值的求和,保证输出的 :math:`[0,1]` 区间内合法概率值,可以通过对分子积分(求和)得到。 .. math:: P(\mathcal{D}) = \int P(\mathcal{D}|\theta) P'(\theta) d\theta :math:`P(\mathcal{D})` 作为归一化因子,通过对分子中参数变量积分得到,消除了参数的影响,其不再受到参数的影响。 换句话说,只要样本集 :math:`\mathcal{D}` 确定了,那么 :math:`P(\mathcal{D})` 的值就确定了,不再变化,在确定了样本集后,其是一个固定值。 综上,贝叶斯推断可以表述成如下方式, 其中符号 :math:`\propto` 表示正比关系。 .. math:: :label: eq_Bayesian_17 \text{后验概率} &= \frac{\text{似然(likelihood)} \times \text{先验(prior)}}{\text{证据(evidence)}} & \propto \text{似然} \times \text{先验} 我们可以用贝叶斯推断找到参数变量 :math:`\theta` 的后验概率分布 :math:`P(\theta|\mathcal{D})` ,然后把 :math:`P(\theta|\mathcal{D})` 作为参数的"真实"概率分布, :math:`P(\theta|\mathcal{D}) \rightarrow P(\theta)` 。然后代入到 :eq:`eq_Bayesian_17` 中, 这样我们就确定了变量 :math:`X` 和变量 :math:`\theta` 的联合概率分布,并且依此得到 :math:`X` 的边缘概率分布: .. math:: P(X) = \int_0^1 P(X,\theta) d\theta = \int_0^1 P(\theta|\mathcal{D}) P(X|\theta) d \theta 但是要利用 :eq:`eq_Bayesian_16` 推断出 :math:`P(\theta|\mathcal{D})` 还存在两个难点: 1. 先验分布 :math:`P'(\theta)` 如何确定。 2. 分母 :math:`P(\mathcal{D})` 需要计算积分,并且是对 :math:`P'(\theta)` 进行积分, :math:`P'(\theta)` 的形式会影响积分的难度。 理论上参数的先验分布应该根据我们其认知信息确定, 但实际上多数情况下我们对参数是一无所知的,没有任何信息, 这时,我们就需要一种被称为无信息先验(noninformative prior)的先验分布。 这种先验分布的目的是尽可能的对后验分布产生小的影响(Jeffries, 1946; Box and Tao, 1973; Bernardo and Smith, 1994)。 这有时也被称为“让数据自己说话”。 除无信息先验外,另外一种确定先验分布的方法为共轭先验(conjugate prior), 共轭先验是一种使用非常广泛的确定先验分布的方法, 本节我们只讨论共轭先验法。 **共轭先验** .. _ch_conjugate_prior: .. topic:: 共轭先验(conjugate prior) 在贝叶斯推断中,如果后验分布与先验分布属于同一种概率分布,则此先验分布称为共轭先验。 注意,由于后验分布是由先验与似然相乘得到的,所以共轭指的是先验与似然共轭, 共轭先验与似然相乘后,不改变分布的函数形式,所以得到后验与先验具有相同的形式。 共轭先验使得后验分布和先验分布拥有相同的形式, 很多时候可以直接给出后验的结果, 而不必计算分母 :math:`P(\mathcal{D})` ,这极大的降低了后验分布的计算复杂度。 高斯分布的似然函数的共轭分布仍然是高斯分布,伯努利分布的似然函数的共轭先验是beta分布, 类别分布的似然函数的共轭分布是狄利克雷分布, 稍后我们会举例说明。 共轭先验也是有缺点的,**其一是只有指数族分布才存在共轭先验,在下一章我们会详细讨论指数族。** **其二是,选取共轭先验更多是为了计算简单,而不是为了更精确的估计参数。** 选取了合适的参数先验分布后,就可以利用贝叶斯推断 :eq:`eq_Bayesian_16` 得到参数的后验概率分布 :math:`P(\theta|\mathcal{D})` ,后验概率分布就是我们在观测样本集的条件下对参数变量 :math:`\theta` 概率分布的估计。 然后就可以用后验概率分布 :math:`P(\theta|\mathcal{D})` 替代 :eq:`eq_Bayesian_10` 中参数变量的边缘概率分布。 .. math:: P(\theta) \triangleq P(\theta|\mathcal{D}) :eq:`eq_Bayesian_10` 表示的联合概率也就变成: .. math:: P(X,\theta) \triangleq P(\theta|\mathcal{D}) P(X|\theta) 此时变量 :math:`X` 的边缘概率分布为: .. math:: :label: eq_Bayesian_19 P(X) &= \int P(X,\theta) d\theta &= \int P(\theta|\mathcal{D}) P(X|\theta) d \theta &= P(X|\mathcal{D}) 有了 :math:`X` 的边缘概率分为,就可以预测新样本的概率: .. math:: P(X=x_{new}) &= P(X=x_{new}|\mathcal{D}) &= \int P(\theta|\mathcal{D}) P(X=x_{new}|\theta) d \theta 伯努利分布 =============================== 假设随机变量 :math:`X` 服从伯努利分布(Bernoulli distribution), 其参数化的条件概率分布为: .. math:: P(X|\theta) = \theta^x (1-\theta)^{(1-x)},x \in \{0,1\} 其中 :math:`\theta` 是需要估计的未知参数, 现在我们认为 :math:`\theta` 也是一个随机变量,并且其概率分布为 :math:`P(\theta)` , 观测变量 :math:`X` 与参数变量 :math:`\theta` 的联合概率分布为: .. math:: P(X,\theta)=P(\theta)P(X|\theta) =P(\theta)[ \theta^x (1-\theta)^{(1-x)}],x \in \{0,1\} **先验分布** 变量 :math:`X` 是伯努利分布,而伯努利分布的似然函数的共轭先验是 *Beta分布* , 一般可记为 :math:`\theta \sim Beta(\theta|a,b)` 。 .. math:: P'(\theta;a,b)=\frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \theta^{a-1}(1-\theta)^{b-1} 其中 :math:`\Gamma(\cdot)` 称为Gamma函数,并有如下性质: .. math:: :label: eq_Bayesian_20 \Gamma(x+1)=x\Gamma(x) \Gamma(n)=(n-1)! \, \text{n是整数} Beta分布的期望和方差为: .. math:: E[\theta] = \frac{a}{a+b} Var[\theta] = \frac{ab}{(a+b)^2(a+b+1)} Beta分布是一个连续值的概率分布( :math:`\theta \in [0,1]` 是连续值),对于一个连续值的概率分布满足积分为1。 .. math:: \int_{0}^1 \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \theta^{a-1}(1-\theta)^{b-1} d\theta = 1 这个先验分布中有两个参数a,b,一般情况我们会根据经验直接给定这两个参数的值,也就是其值已知的。 那么其中的Gama函数部分 :math:`\frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)}` 是一个常量。 积分符号内部的常量可以提到积分外面去,我们把这个积分等式做个变形,稍后会用到。 .. math:: :label: eq_Bayesian_23 \int_{0}^1 \theta^{a-1}(1-\theta)^{b-1} d\theta = \frac{\Gamma(a)\Gamma(b)}{\Gamma(a+b)} **后验分布** 有了先验分布后,我们把这个先验分布代入到后验分布中,由于a,b的值是确定的,所以先验分布中的Gamma函数部分 :math:`\frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)}` 是一个常数,与参数 :math:`\theta` 无关,也与观测样本无关。 此外,我们用 :math:`n_1` 表示观测样本中1的次数,用 :math:`n_0` 表示观测样本中0出现的次数, 则有 :math:`n_1+n_0=N` 。 .. math:: :label: eq_Bayesian_24 P(\theta|\mathcal{D}) &= \frac{P(\mathcal{D}|\theta) P'(\theta)}{P(D)} &= \frac{L(\theta;\mathcal{D}) P'(\theta)}{P(D)} &= \frac{ \left [ \prod_{i=1}^N \theta^{x^{(i)}} (1-\theta)^{(1-{x^{(i)}})} \right ] \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \theta^{a-1}(1-\theta)^{b-1}}{P(D)} &= \frac{ \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \left [ \theta^{n_1} (1-\theta)^{n_0} \right ] \theta^{a-1}(1-\theta)^{b-1}}{P(D)} &= \frac{\frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \theta^{n_1+a-1} (1-\theta)^{n_0+b-1}}{P(D)} 现在我们来看分母 :math:`P(D)` ,我们知道分母其实是分子的归一化,由于 :math:`\theta` 是连续值,所以分母其实就是分子的积分。 另外借助 :eq:`eq_Bayesian_20` 和 :eq:`eq_Bayesian_23` 可以进行简化。 .. math:: P(D) &= \int_0^1 \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \theta^{n_1+a-1} (1-\theta)^{n_0+b-1} d\theta &= \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \int_0^1 \theta^{n_1+a-1} (1-\theta)^{n_0+b-1} d\theta &= \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \frac{\Gamma(a+n_1)\Gamma(b+n_0)}{\Gamma(a+b+n_1+n_0)} 我们把分母代入到后验分布 :eq:`eq_Bayesian_24` ,可得: .. math:: P(\theta|\mathcal{D}) &= \frac{\frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \theta^{n_1+a-1} (1-\theta)^{n_0+b-1}}{P(D)} &= \frac{\frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \theta^{n_1+a-1} (1-\theta)^{n_0+b-1}} {\frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \frac{\Gamma(a+n_1)\Gamma(b+n_0)}{\Gamma(a+b+n_1+n_0)}} &= \frac{\Gamma(a+b+n_1+n_0)}{\Gamma(a+n_1)\Gamma(b+n_0)} \theta^{n_1+a-1} (1-\theta)^{n_0+b-1} 发现没有,后验概率分布 :math:`P(\theta|\mathcal{D})` 也是一个Beta分布。 后验与先验具有相同的概率分布形式,这反映出先验关于似然函数共轭的性质。 :math:`\theta` 的先验分布是 :math:`Beta(\theta|a,b)` , 后验分布是 :math:`Beta(\theta|n_1+a,n_0+b)` , 而且后验分布就是在先验分布的基础上加上的观测样本的一些统计值。 .. math:: a_{\text{后验}} &= a_{\text{先验}} + n_1 b_{\text{后验}} &= b_{\text{先验}} + n_0 也就是说对于某些概率分布,如果我们选取共轭先验作为参数的先验分布,那么只需要对观测数据集进行一些统计, 就能直接给出参数的后验概率分布。 .. important:: 有了参数 :math:`\theta` 的后验概率分布 :math:`P(\theta|\mathcal{D})` , 就相当于得到了参数 :math:`\theta` 的"估计值",和最大似然估计不同的是, 最大似然估计得到的是点估计(参数一个数值估计)。 而贝叶斯估计是把参数看做一个随机变量,得到的是参数的后验概率分布,类似于区间估计。 **预测新样本** 有了参数的估计(后验概率分布)后,就相当于确定了变量 :math:`X` 和 :math:`\theta` 的联合概率分布 :math:`P(X,\theta) \triangleq P(\theta|\mathcal{D}) P(X|\theta)` , 通过对联合概率的边缘化得到变量 :math:`X` 的边缘概率分布: .. math:: P(X) \triangleq P(X|\mathcal{D}) = \int_0^1 P(\theta|\mathcal{D}) P(X|\theta) d\theta 利用 :math:`P(X)` 我们可以预测新样本的概率: .. math:: P(X|\mathcal{D}) &= \int_0^1 P(X|\theta) P(\theta|\mathcal{D}) d \theta &= \int_0^1 \theta^x (1-\theta)^{(1-x)} \frac{\Gamma(a+b+n_1+n_0)}{\Gamma(a+n_1)\Gamma(b+n_0)} \theta^{n_1+a-1} (1-\theta)^{n_0+b-1} d\theta &=\frac{\Gamma(a+b+n_1+n_0)}{\Gamma(a+n_1)\Gamma(b+n_0)} \int_0^1 \theta^x (1-\theta)^{(1-x)} \theta^{n_1+a-1} (1-\theta)^{n_0+b-1} d\theta &=\frac{\Gamma(a+b+n_1+n_0)}{\Gamma(a+n_1)\Gamma(b+n_0)} \int_0^1 \theta^{n_1+a-1+x} (1-\theta)^{n_0+b-1+1-x} d\theta &= \frac{\Gamma(a+b+n_1+n_0)}{\Gamma(a+n_1)\Gamma(b+n_0)} \frac{\Gamma(a+n_1+x)\Gamma(b+n_0+1-x)}{\Gamma(a+b+n_1+n_0+1)} &= \frac{\Gamma(a+b+n_1+n_0)}{\Gamma(a+n_1)\Gamma(b+n_0)} \frac{\Gamma(a+n_1+x)\Gamma(b+n_0+1-x)}{ (a+b+n_1+n_0) \Gamma(a+b+n_1+n_0)} &= \frac{\Gamma(a+n_1+x)\Gamma(b+n_0+1-x)}{ (a+b+n_1+n_0){\Gamma(a+n_1)\Gamma(b+n_0)} } :math:`x_{new}=1` 的概率为: .. math:: P(x_{new}=1|\mathcal{D}) &=\frac{\Gamma(a+n_1+1)\Gamma(b+n_0+1-1)}{ (a+b+n_1+n_0){\Gamma(a+n_1)\Gamma(b+n_0)} } &=\frac{\Gamma(a+n_1+1)}{ (a+b+n_1+n_0){\Gamma(a+n_1)} } &=\frac{(a+n_1)\Gamma(a+n_1)}{ (a+b+n_1+n_0){\Gamma(a+n_1)} } &=\frac{a+n_1}{ a+b+n_1+n_0 } &= \frac{a+n_1}{ a+b+N } 我们发现用积分法去计算新样本的概率太复杂,实际上这个过程是可以简化的。 我们知道对概率分布求积分相当于其期望,所以我们可以求出参数的后验概率分布的期望值, 然后把期望值作为参数的一个点估计值,代入到变量 :math:`X` 的条件概率中,通常称为 **后验期望法(mean of the posterior)** 。 参数 :math:`\theta` 的后验概率分布也是beta分布,其期望值可以直接给出: .. math:: \bar{\theta}= \mathbb{E}_{P(\theta|\mathcal{D})} [\theta] = \int_0^1 \theta P(\theta|\mathcal{D}) d \theta = \frac{a+n_1}{a+b+n_1+n_0} 把参数 :math:`\theta` 的后验期望值作为参数的点估计值: .. math:: \hat{\theta}_{Bayes} =\bar{\theta} = \frac{a+n_1}{a+b+n_1+n_0} 把这个估计值直接带入到 :math:`X` 的条件概率 :math:`P(X|\theta)` 分布中,同样可以预测下一个样本的值。 .. math:: P(x_{new}=1|\hat{\theta}_{Bayes} ) = \hat{\theta}_{Bayes} (1-\hat{\theta}_{Bayes})^{(1-1)} = \hat{\theta}_{Bayes} = \frac{a+n_1}{a+b+n_1+n_0} = \frac{a+n_1}{a+b+N} 我们发现这和上面通过积分法进行预测是等价,实际上 :math:`\int_0^1 P(x|\theta) P(\theta|\mathcal{D}) d \theta` 就相当于在求期望。 最后,回顾一下伯努利分布的极大似然估计的结果 :math:`\hat{\theta}_{ML}=\frac{n_1}{N}` , 和贝叶斯估计的结果对比一下,发现贝叶斯估计的结果就是在极大似然估计的基础上加入了先验知识。 类别分布 ====================================== 假设随机变量 :math:`X` 是一个以 :math:`\theta` 为参数变量的类别分布, 其概率分布函数可以写成如下条件概率分布。 .. math:: :label: eq_cat_distribution_2 P(X|\theta) = \prod_{m=1}^{M} \theta_m^{\delta (x,x_m) } 其中 :math:`\delta (x,x_m)` 是一个指示函数,当 :math:`x=x_m` 时, :math:`\delta (x,x_m)=1` ;反之, :math:`\delta (x,x_m)=0` 。:math:`\theta` 表示参数向量,这里 :math:`\theta` 不再是一个标量,而是一个向量。 参数变量 :math:`\theta` 的概率分布是 :math:`P(\theta)` , 随机变量 :math:`X` 和 :math:`\theta` 组成联合概率分布 :math:`P(X,\theta)` 。 .. math:: P(X,\theta) = P(\theta)P(X|\theta) 观测变量 :math:`X` 的边缘概率分布 :math:`P(X)` 需要通过边际化的方法得到: .. math:: :label: eq_Bayesian_30 P(X) = \int P(X,\theta) d \theta = \int P(\theta) P(X|\theta) d \theta **先验分布** 类别分布的共轭先验是狄利克雷(Dirichlet)分布, 所以这里我们选取狄利克雷分布作为参数变量 :math:`\theta` 的先验分布。 .. math:: :label: eq_prior_Dirichlet \theta \sim Dirichlet(\alpha_1,\dots,\alpha_M) 狄利克雷分布的概率函数为: .. math:: :label: 20_prior P'(\theta;\alpha) &= \frac{\Gamma(\sum_m \alpha_m)}{\prod_m \Gamma(\alpha_m)} \prod_{m=1}^M \theta_m^{\alpha_m -1 } & \propto \prod_{m=1}^M \theta_m^{\alpha_m - 1} 其中 :math:`\alpha` 是狄利克雷分布的参数,可以使用经验值,这里看做是已知量。 狄利克雷分布是一个 *多元连续变量* 的分布,一个概率分布同时输出多个子变量 :math:`\theta_m(1\le m \le M)` 的概率值, 并满足约束 :math:`\sum_m \theta_m = 1` 。 狄利克雷分布每一个子变量 :math:`\theta_m` 的期望值是: .. math:: :label: eq_Dirichlet_expert \mathbb{E}[\theta_m] = \frac{\alpha_m}{\sum_{m=1}^M \alpha_m} 狄利克雷分布是连续值分布,所以满足积分为1的约束。 .. math:: \int \frac{\Gamma(\sum_m \alpha_m)}{\prod_m \Gamma(\alpha_m)} \prod_{m=1}^M \theta_m^{\alpha_m -1 } d \theta= \frac{\Gamma(\sum_m \alpha_m)}{\prod_m \Gamma(\alpha_m)} \int \prod_{m=1}^M \theta_m^{\alpha_m -1 } d \theta = 1 我们把这个积分式稍微变换一下,稍后会使用到。 .. math:: :label: eq_Bayesian_integrated_change \int \prod_{m=1}^M \theta_m^{\alpha_m -1 } d \theta = \frac{\prod_m \Gamma(\alpha_m)}{\Gamma(\sum_m \alpha_m)} **后验分布** 根据贝叶斯公式,可以写出参数变量 :math:`\theta` 的后验概率分布: .. math:: :label: eq_Bayesian_posterior_distribution P(\theta|\mathcal{D}) &= \frac{P'(\theta)P(\mathcal{D}|\theta)}{P(\mathcal{D})} &= \frac{ P'(\theta) L(\mathcal{D};\theta)}{P(\mathcal{D})} &= \frac{ \frac{\Gamma(\sum_m \alpha_m)}{\prod_m \Gamma(\alpha_m)} \prod_{m=1}^M \theta_m^{\alpha_m -1 } \prod_{m=1}^M \theta_m^{n_m} } {P(\mathcal{D})} &= \frac{ \frac{\Gamma(\sum_m \alpha_m)}{\prod_m \Gamma(\alpha_m)} \prod_{m=1}^M \theta_m^{n_m+\alpha_m -1 } }{P(\mathcal{D})} 我们再看分母部分 :math:`P(\mathcal{D})` ,分母是对分子的归一化, 由于这里 :math:`\theta` 是连续值变量,所以分母是对分子的积分。 也可以理解成是对联合概率分布 :math:`P(\mathcal{D},\theta)` 进行边际化求得边缘概率 :math:`P(\mathcal{D})` 。 .. math:: P(\mathcal{D}) &= \int P(\mathcal{D},\theta) d \theta &= \int P'(\theta)P(\mathcal{D}|\theta) d \theta &= \int \frac{\Gamma(\sum_m \alpha_m)}{\prod_m \Gamma(\alpha_m)} \prod_{m=1}^M \theta_m^{\alpha_m -1 } \prod_{m=1}^M \theta_m^{n_m } d \theta &= \int \frac{\Gamma(\sum_m \alpha_m)}{\prod_m \Gamma(\alpha_m)} \prod_{m=1}^M \theta_m^{n_m+\alpha_m -1 } d \theta &= \frac{\Gamma(\sum_m \alpha_m)}{\prod_m \Gamma(\alpha_m)} \int \prod_{m=1}^M \theta_m^{n_m+\alpha_m -1 } d \theta 参考一下积分变换 :eq:`eq_Bayesian_integrated_change` ,其中的积分部分可以改写一下得到 :math:`P(\mathcal{D})` 。 .. math:: P(\mathcal{D}) = \frac{\Gamma(\sum_m \alpha_m)}{\prod_m \Gamma(\alpha_m)} \frac{\prod_m \Gamma(n_m+ \alpha_m)}{\Gamma(\sum_m n_m + \alpha_m)} 我们把这个代入回后验概率分布 :eq:`eq_Bayesian_posterior_distribution` 的分母部分。 .. math:: P(\theta|\mathcal{D}) &= \frac{ \frac{\Gamma(\sum_m \alpha_m)}{\prod_m \Gamma(\alpha_m)} \prod_{m=1}^M \theta_m^{n_m+\alpha_m -1 } } {P(\mathcal{D})} &= \frac{ \frac{\Gamma(\sum_m \alpha_m)}{\prod_m \Gamma(\alpha_m)} \prod_{m=1}^M \theta_m^{n_m+\alpha_m -1 } } { \frac{\Gamma(\sum_m \alpha_m)}{\prod_m \Gamma(\alpha_m)} \frac{\prod_m \Gamma(n_m+ \alpha_m)}{\Gamma(\sum_m n_m + \alpha_m)} } &= \frac{\Gamma(\sum_m n_m + \alpha_m)}{\prod_m \Gamma(n_m+ \alpha_m)} \prod_{m=1}^M \theta_m^{n_m+\alpha_m -1 } 我们看到后验概率分布仍然是一个狄利克雷分布, 类别分布的参数进行贝叶斯估计时,参数的共轭先验是狄利克雷分布,得到的参数后验概率分布也是狄利克雷分布。 .. math:: :label: eq_posterior_Dirichlet \theta|\mathcal{D} \sim Dirichlet(\alpha_1+n_1,\dots, \alpha_M+n_m) **预测新样本** 根据观测集 :math:`\mathcal{D}` 得到参数变量 :math:`\theta` 的后验概率分布 :math:`P(\theta|\mathcal{D})` ,然后假设 :math:`P(\theta|\mathcal{D})` 是参数 :math:`\theta` 的真实概率分布, 通过对联合概率分布 :math:`P(X,\theta)` 边缘化的方式得到类别变量X的边缘概率分布 :math:`P(X)` ,最后利用 :math:`P(X)` 预测变量 :math:`X` 的值。 在推导 :math:`P(X)` 的过程中需要利用几个性质: - 积分变换 :eq:`eq_Bayesian_integrated_change`, - Gamma函数的性质: :math:`\Gamma(x+1)=x\Gamma(x)` 。 - :math:`n_m` 表示类别 :math:`x_m` 在观测样本集 :math:`\mathcal{D}` 中出现的次数,:math:`N=\sum_m n_m` 。 .. math:: :label: eq_Bayesian_cat_new P(X) &= \int P(X,\theta) d \theta &= \int P(\theta)P(X|\theta) d \theta &\triangleq \int \underbrace{P(\theta|\mathcal{D})}_{\text{后验概率分布}} \underbrace{P(X | \theta)}_{\text{类别分布}} d \theta &= \int \left [ \frac{\Gamma(\sum_m n_m + \alpha_m)}{\prod_m \Gamma(n_m+ \alpha_m)} \prod_{m=1}^M \theta_m^{n_m+\alpha_m -1 } \right ] \left [ \prod_{m=1}^{M} \theta_m^{\delta (x,x_m) } \right ] d\theta & = \frac{\Gamma(\sum_m n_m + \alpha_m)}{\prod_m \Gamma(n_m+ \alpha_m)} \int \prod_{m=1}^M \theta_m^{n_m+\alpha_m -1 } \prod_{m=1}^{M} \theta_m^{\delta (x,x_m) } d \theta &=\frac{\Gamma(\sum_m n_m + \alpha_m)}{\prod_m \Gamma(n_m+ \alpha_m)} \int \prod_{m=1}^M \theta_m^{n_m + \alpha_m + \delta (x,x_m) - 1 } d \theta &= \frac{\Gamma(\sum_m n_m + \alpha_m)}{\prod_m \Gamma(n_m+ \alpha_m)} \frac{\prod_m \Gamma(n_m+ \alpha_m+\delta (x,x_m) )}{\Gamma(\sum_m (n_m + \alpha_m+ \delta (x,x_m)))} \ \ (\text{利用积分变换公式去掉积分}) 只有当 :math:`x=x_m` 时,指示函数 :math:`\delta(x,x_m)` 等于1,否则等于0,因此下面连乘可以分解化简。 .. math:: \prod_m \Gamma(n_m+ \alpha_m+ \delta(x,x_m) ) &= \underbrace{\Gamma(n_m+ \alpha_m + 1 )}_{\text{把} x = x_m \text{的项分出来}} \prod_{\mathbb{m} \in M, \mathbb{m} \neq m } \Gamma(n_\mathbb{m}+ \alpha_\mathbb{m}) &= (n_m+ \alpha_m) \Gamma(n_m+ \alpha_m) \prod_{\mathbb{m} \in M,\mathbb{m} \neq m} \Gamma(n_\mathbb{m}+ \alpha_\mathbb{m}) &=(n_m+ \alpha_m) \prod_m \Gamma(n_m+ \alpha_m) 继续化简 :eq:`eq_Bayesian_cat_new` : .. math:: P(X) &= \frac{\Gamma(\sum_m n_m + \alpha_m)}{\prod_m \Gamma(n_m+ \alpha_m)} \frac{(n_m+ \alpha_m) \prod_m \Gamma(n_m+ \alpha_m) }{\Gamma( \sum_m (n_m + \alpha_m) + \sum_m \delta (x,x_m) ))} &= \frac{(n_m+\alpha_m) \Gamma(\sum_m n_m + \alpha_m)}{\Gamma(\sum_m (n_m + \alpha_m)+ 1 ))} &= \frac{(n_m+\alpha_m) \Gamma(\sum_m n_m + \alpha_m) }{\sum_m (n_m + \alpha_m) \Gamma(\sum_m n_m + \alpha_m)} &= \frac{(n_m+\alpha_m) }{\sum_m (n_m + \alpha_m) } &= \frac{\alpha_m +n_m } {N + \sum_{m=1}^M \alpha_m } 最终我们得到了变量 :math:`X` 的边缘概率分布,可以看到最后的公式中没有参数 :math:`\theta` ,因为已经通过积分消除掉了参数变量 :math:`\theta` 。 .. math:: P(x_m) = \frac{\alpha_m +n_m } {N + \sum_{m=1}^M \alpha_m } 这种通过积分边缘化的方法,推导过程是复杂的。 我们可以使用变量参数 :math:`\theta` 的后验分布的期望值作为参数的估计值,然后把估计值代入到观测变量 :math:`X` 的条件概率分布 :math:`P(X|\theta)` 中。 参数 :math:`\theta` 的后验概率分布 :math:`P(\theta|\mathcal{D})` 是一个狄利克雷分布,参考 :eq:`eq_Dirichlet_expert` 和 :eq:`eq_posterior_Dirichlet` ,可以直接写出参数 :math:`\theta` 后验分布期望值。 .. math:: \hat{\theta}_{m}=\mathbb{E}_{P(\theta_{m}|\mathcal{D})}[\theta_m] =\frac{\alpha_m +n_m } {N + \sum_{m=1}^M \alpha_m } = P(x_m) 贝叶斯估计计算后验概率分布的过程是困难的,需要在整个参数空间求和或者求积分,这在通常情况下是非常困难的(采用共轭先验会简化), 然后在做预测或者模型比较时又要再次积分(求期望需要积分)。 此外,当数据集规模较小时,贝叶斯估计的结果接近先验分布,当数据集足够大时,贝叶斯估计的结果就会逐渐偏离先验,等价于极大似然估计的结果。 当数据集规模趋近于无穷时,贝叶斯估计的结果和极大似然的结果是一致的。 **在实际应用中,贝叶斯估计先验的选择通常是为了计算方便(共轭先验)而不是为了反映出任何真实的先验知识,** **然而当先验选择不好的时候,贝叶斯方法有很大可能得到错误的结果。** 这一点经常被频率派用来批判贝叶斯派。 最大后验估计 ##################################### 贝叶斯估计有个很大的难点就是计算 :math:`P(\mathcal{D})` ,计算 :math:`P(\mathcal{D})` 需要对参数空间进行积分, 而积分操作的成本很多时候是非常高昂的,甚至都无法计算。 如果我们仅仅是为了预测 :math:`X` 的新样本,而不需要对参数变量本身进行过多的探索, 那么我们不需要得到完整的后验分布,而是只得到参数的一个点估计即可,类似于似然估计。 上一节也讲了,我们可以把参数后验概率分布的期望作为参数的点估计值,然而求期望也是需要积分的。 虽然选择共轭先验可以简化这个过程,但也不是所有情况都能使用共轭先验。 这时我们可以选择另外一个方法,不用参数后验概率分布的期望值,而是用后验概率分布的概率最大值, 也就是后验概率最大时的参数变量的值作为参数的点估计值,这种方式称为最大后验估计(Maximum a posteriori estimation,MAP)。 .. math:: \hat{\theta}_{MAP} = \mathop{\arg \max}_{\theta} P(\theta|\mathcal{D}) 后验概率的函数是一个关于样本集 :math:`\mathcal{D}` 和未知参数 :math:`\theta` 的函数,我们的目标是求得令这个函数取得极大值(概率最大)时, 参数 :math:`\theta` 的值,并作为未知 :math:`\theta` 的点估计值。这个过程和最大似然估计非常相似,都是通过极大化一个函数求得未知参数的点估计值, 只不过二者极大化的目标函数不一样。最大似然估计是极大化似然函数,而最大后验估计是极大化参数的后验概率分布。 回顾一下公式 :eq:`eq_Bayesian_12` ,后验概率的分母 :math:`P(\mathcal{D})` 是一个定值, 后验概率是正比于先验乘以似然的。 .. math:: \text{后验概率} &= \frac{\text{似然} \times \text{先验}}{evidence} & \propto \text{似然} \times \text{先验} 在进行极大化时,其实并不需要极大化 :math:`P(\theta|\mathcal{D})` 的完整形式,分母部分是一个常量值,对于极大化过程并没有影响,完全可以忽略。 后验概率是正比于分子的 :math:`P(\theta|\mathcal{D}) \propto L(\theta;\mathcal{D}) P(\theta)` ,所以极大化求解后验概率分布时,只需要极大化后验分布的分子即可。 .. math:: \hat{\theta}_{MAP} &= \mathop{\arg \max}_{\theta} P(\theta|\mathcal{D}) &\triangleq \mathop{\arg \max}_{\theta} \ [ \text{似然} \times \text{先验} ] &= \mathop{\arg \max}_{\theta} \ [ L(\theta;\mathcal{D}) P(\theta) ] &\triangleq \mathop{\arg \max}_{\theta} \ [ \log L(\theta;\mathcal{D}) P(\theta) ] &= \mathop{\arg \max}_{\theta} \ [ \underbrace{\log L(\theta;\mathcal{D})}_{\text{对数似然}} + \underbrace{\log P(\theta)}_{\text{对数先验}} ] 发现没有, **最大后验估计就是在极大似然估计的基础上多了一个参数的先验!!!** 所以最大后验估计很多方面是和极大似然估计类似的,但由于多了先验和极大似然估计又有些不同。 **加入先验类似于似然函数加上惩罚项**。 .. hint:: 其实最大后验估计加的先验和似然函数加正则项是等价的。对参数引入拉普拉斯先验等价于L1正则化,高斯先验相当于L2正则。 PS:如果你不知道什么是损失函数、正则项,没关系可以暂时无视这句话,以后就会懂的。 伯努利变量 ======================================== 我们截取 :eq:`eq_Bayesian_24` 的分子部分 .. math:: P(\theta|\mathcal{D}) \propto \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \theta^{n_1+a-1} (1-\theta)^{n_0+b-1} 最大后验估计的结果为: .. math:: \hat{\theta}_{MAP} &= \mathop{\arg \max}_{\theta} P(\theta|\mathcal{D}) &\triangleq \mathop{\arg \max}_{\theta} \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \theta^{n_1+a-1} (1-\theta)^{n_0+b-1} 我们通过目标函数加对数,并且令导数为0的方法进行求解。 .. math:: \frac{ \partial}{\partial \theta} \log J(\theta) &= \frac{ \partial}{\partial \theta} \log \frac{\Gamma(a+b+n_1+n_0)}{\Gamma(a+n_1)\Gamma(b+n_0)} \theta^{n_1+a-1} (1-\theta)^{n_0+b-1} &= \frac{ \partial}{\partial \theta} \log \frac{\Gamma(a+b+n_1+n_0)}{\Gamma(a+n_1)\Gamma(b+n_0)} + \frac{ \partial}{\partial \theta} \log \theta^{n_1+a-1} + \frac{ \partial}{\partial \theta} \log (1-\theta)^{n_0+b-1} &= \frac{ \partial}{\partial \theta} (n_1+a-1) \log \theta + \frac{ \partial}{\partial \theta} (n_0+b-1) \log (1-\theta) &= \frac{(n_1+a-1)}{\theta} - \frac{ (n_0+b-1)}{1-\theta} &= 0 解得: .. math:: \hat{\theta}_{MAP} = \frac{n_1+a-1}{n_1+n_0+a+b-2} = \frac{n_1+a-1}{N+a+b-2} 类别变量 ========================================= 同理,我们截取 :eq:`eq_Bayesian_posterior_distribution` 的分子部分作为极大化的目标函数。 .. math:: \hat{\theta}_{MAP} = \mathop{\arg \max}_{\theta} \frac{\Gamma(\sum_m \alpha_m)}{\prod_m \Gamma(\alpha_m)} \prod_{m=1}^M \theta_m^{n_m+\alpha_m -1 } 同理加对数,求偏导,然后令偏导数为 :math:`0`,可解得: .. math:: \hat{\theta}_{m} = \frac{\alpha_m +n_m - 1}{\sum_m \alpha_m +N - M} 与最大似然估计的结果进行对比, ``MAP`` 估计结果考虑了训练样本的数量。特别是,当 :math:`N` 很小时,``MAP`` 值接近先验的结果;当 :math:`N` 很大时,``MAP`` 值接近经验分布。 从这个意义上讲,``MAP`` 估计可以看作是通过惩罚更复杂的模型来控制过度拟合,即那些离先验更远的模型。 总结 ##################################### 在概率论一直存在着两者学派,一个是频率学派,一个是贝叶斯学派。 这里我们不讨论这两个学派的本质差别,只关注它们在参数估计上的差别。 通常我们用概率分布(probability distribution)去描述一个随机变量, 我们会说一个随机变量会服从于什么概率分布,比如一个随机变量 :math:`X` 服从于伯努利分布。而一个概率分布都包含一个或多个参数,只有当参数的值确定时才能唯一确定一个分布。 当一个概率分布的参数值未知时,我们需要找到它来确定这个概率分布,然后利用这个概率分布去做一些有价值的事情。 频率学派和贝叶斯学派在参数的认知上存在着很大差异。 频率学派认为概率分布中的参数值就仅仅是一个数值,所以用参数化的方法定义概率分布 :math:`P(X;\theta)` ,并且他们认为参数空间中只有一个值是最优的(或者说是真理),需要做的就是想办法找到它。 因此在这个基础上提出了最大似然估计法,目标是找出那个最优的参数值。 当然要想估计出参数 :math:`\theta` 的值,我们需要有随机变量 :math:`X` 的一些观测样本, 我们通过这些样本去估计这个概率分布的未知参数。这些样本都是同一个概率分布 :math:`P(X;\theta)` 的样本,所以它们是同分布的, 而且样本与样本之间通常没有什么关系,所以观测样本集都是满足IID(独立同步分布)的。 我们用符号 :math:`\mathcal{D}=\{x_1,x_2,\cdots,x_N \}` 表示这个样本集, 其中每一条样本的发生概率是 :math:`P(x_i;\theta)` ,那么所有样本都发生的概率是一个联合概率: .. math:: P(\mathcal{D};\theta) = P(x_1,x_2,\cdots,x_N ;\theta) = \prod_{i=1}^N P(x_i;\theta) :math:`P(\mathcal{D};\theta)` 通常被称为 *似然函数(likelihood function)* ,习惯上我们用符号 :math:`L(\theta;\mathcal{D})` 表示似然函数。 最大似然估计的思想就是:使得这个样本集发生的联合概率(似然函数)最大的那个参数值是最优的。所以最大似然的估计值为: .. math:: \hat{\theta}_{ML} = \mathop{\arg \max}_{\theta} P(\mathcal{D};\theta) = \mathop{\arg \max}_{\theta} L(\theta;\mathcal{D}) 有了参数 :math:`\theta` 的估计值,就确定了变量 :math:`X` 的概率分布 :math:`P(X;\hat{\theta}_{ML})` ,然后就可以预测新的样本。 .. math:: P(X=x_{new}) = P(X=x_{new};\hat{\theta}_{ML}) 然而贝叶斯学派的观点却有一点不同,他们认为未知参数既然是未知,那么这个参数取值为参数空间中任意一个值都是有可能的, 所以参数本身也是一个随机变量,也需要用一个概率分布去描述(贝叶斯派的核心:一切未知的变量都是随机变量), 因此他们把带参数的概率分布定义成一个 **条件概率** :math:`P(X|\theta)` (注意这里和频率派有了本质差别)。 同时,他们利用贝叶斯定理把随机变量 :math:`X` 和参数变量 :math:`\theta` 两者之间的关系变成"可逆"的。 .. math:: P(\theta|X) = \frac{P(X|\theta)P(\theta)}{P(X)} 通过贝叶斯定理我们把变量 :math:`X` 和参数变量 :math:`\theta` 的关系定义出来了, 公式中的 :math:`P(\theta)` 表示参数变量 :math:`\theta` 的边缘概率分布, 是在随机变量 :math:`X` 发生之前 :math:`\theta` 的概率分布, 所以我们称之为 :math:`\theta` 的先验分布(prior distribution)。 但实际上我们并不知道参数 :math:`\theta` 的真实概率分布是什么, 所以通常我们会为其假设一个概率分布。 我们假设 :math:`\theta` 的先验概率分布为某一个已知的分布, 然后在这个先验分布 :math:`P(\theta)` 以及条件概率分布 :math:`P(X|\theta)` 情况下, 观测到了变量 :math:`X` 的一些样本 :math:`\mathcal{D}=\{x_1,x_2,\cdots,x_N \}` , 这个样本集中的所有样本都是从联合概率 :math:`P(X,\theta)=P(X|\theta)P(\theta)` 中采样得到的, 现在我们希望能从这个样本集中反推出 :math:`\theta` 的真实概率分布。 也就是在观测样本集的条件下 :math:`\theta` 的概率分布,这些样本都是随机变量 :math:`X` 的采样, 可以把每个样本点都看成随机变量 :math:`X` 的一个副本, 所以有 :math:`P(\theta|X)\Rightarrow P(\theta|x_1,x_2,\cdots,x_N)= P(\theta|\mathcal{D})` 。 .. math:: :label: eq_Bayesian_50 P(\theta|\mathcal{D}) &= \frac{P(\mathcal{D}|\theta)P(\theta)}{P(\mathcal{D})} &=\frac{P(\theta) \prod_{i=1}^N P(x_i|\theta)}{P(x_1,x_2,\cdots,x_N)} 条件概率分布 :math:`P(\theta|\mathcal{D})` 称为参数 :math:`\theta` 的 *后验概率分布(posterior distribution)* , 因为是在观测样本的条件下 :math:`\theta` 的概率分布,所以称为后验。 后验概率分布是我们在样本集的基础上对参数 :math:`\theta` 的估计分布, 我们把后验概率分布 :math:`P(\theta|\mathcal{D})` 作为参数 :math:`\theta` 的估计。 有了参数的估计分布后,我们就可以用来预测新的样本。在贝叶斯理论的前提下,随机变量 :math:`X` 的样本是由 联合概率 :math:`P(X,\theta)=P(\theta)P(X|\theta)` 产生的,其中 :math:`\theta` 的概率分布我们用估计的后验概率分布替换,所以新的样本的预测分布为: .. math:: P(X=x_{new}) = \int P(\theta|D)P(X=x_{new}|\theta) d \theta 这个方式其实等价于把 :math:`\theta` 的期望值 :math:`\hat{\theta}_{E}` 作为估计值,然后把估计值代入条件概率 :math:`P(X|\theta)` 进行预测。 .. math:: \hat{\theta}_{E} = \mathbb{E}_{P(\theta|\mathcal{D})}[\theta] =\int \theta P(\theta|\mathcal{D}) d \theta P(X=x_{new}) = P(X=x_{new}|\theta=\hat{\theta}_{E}) 后验概率的期望值通常被称为参数的贝叶斯估计(Bayes estimate): .. math:: \hat{\theta}_{Bayes} = \mathbb{E}_{P(\theta|\mathcal{D})}[\theta] 然而,并不是所有情况下都能求出后验概率分布的期望值的, 要想求得后验概率分布的期望值,就需要求出后验概率分布 :math:`P(\theta|\mathcal{D})` 的具体形式, 后验概率分布 :eq:`eq_Bayesian_50` 中的分母是对分子的积分,很多时候这个积分的计算复杂度是很高的,以至于无法计算出来。 .. math:: P(\mathcal{D}) = \int P(\mathcal{D}|\theta)P(\theta) d\theta 因此有时候我们是无法得到后验概率分布的期望的。而且就算我们得到了后验概率分布的具体形式, 要计算后验概率分布的期望有需要对后验概率分布进行积分,这在很多时候也是无法达成的。 所以贝叶斯推断中还有另外一种参数估计方法,*最大后验估计(maximum a posterior)* : .. math:: \hat{\theta}_{MAP} = \mathop{\arg \max}_{\theta} P(\theta|\mathcal{D}) 最大后验估计的思想是令后验概率中概率最大的那个值作为参数的估计值,而不是期望值。 我们发现后验概率 :eq:`eq_Bayesian_50` 是正比于分子部分的。 .. math:: :label: eq_Bayesian_51 P(\theta|\mathcal{D}) \propto P(\mathcal{D}|\theta)P(\theta) 我们只需要通过极大化分子就能得到 :math:`\theta` 的最大后验估计值 :math:`\hat{\theta}_{MAP}` , 所以我们不需要计算积分。 .. math:: \hat{\theta}_{MAP} &= \mathop{\arg \max}_{\theta} P(\theta|\mathcal{D}) &\triangleq \mathop{\arg \max}_{\theta} P(\mathcal{D}|\theta)P(\theta) 我们用 :math:`\hat{\theta}_{MAP}` 作为参数的一个具体估计值,然后用于预测新的样本。 .. math:: P(X=x_{new}) = P(X=x_{new}|\theta=\hat{\theta}_{MAP}) 此外,我们发现其中的 :math:`P(\mathcal{D}|\theta)` 和似然函数 :math:`L(\theta;\mathcal{D})=P(\mathcal{D}|\theta)` 是等价的, :eq:`eq_Bayesian_51` 可以表示成: .. math:: \text{后验概率(posterior)} \propto \text{似然(likelihood)} \times \text{先验(prior)} 最大后验估计相当于一个带惩罚(约束)的最大似然估计。 .. math:: \hat{\theta}_{MAP} &= \mathop{\arg \max}_{\theta} P(\mathcal{D}|\theta)P(\theta) &= \mathop{\arg \max}_{\theta} \{ \log P(\mathcal{D}|\theta) + \log P(\theta) \} **最后,最大后验估计由于增加了先验信息,不再是无偏估计,而是有偏估计。** **在样本较少时,先验部分作用较大,随着样本逐步增加,先验部分的作用逐步减少。** **在样本数量比较小时,极大似然估计与最大后验估计互有优劣,但随着样本数量的增加, 极大似然估计和最大后验估计是相似的。**