共轭分布与共轭先验

在PRML中对于共轭分布与共轭先验有很详细的解释,但是可能因为太详细了,而且我们以前的统计教材都是基于频率学派而不是贝叶斯学派的,所以在理解这个概念时,很多人一开始都会觉得比较困难(包括我自己),其实这里的关键是要搞清楚这两个概念一起配套一系列概念,只要把这一族概念都理解清楚了,那这两个定义其实也就很容易明了了。

 

首先一切的基础在于贝叶斯学派认为分布存在先验分布和后验分布的不同(频率学派则认为一个事件的概率只有一个)。比如抛硬币正面的概率,频率学派认为概率就是1/2,而贝叶斯学派会认为不同的硬币抛出来的概率是不一样的(因为硬币材质的不同,实验的环境不同等等)抛硬币的先验概率是1/2,但是在我经过一系列实验确认后再得到的后验概率很可能就不是1/2了,那么对于抛硬币这个事件来说,抛出正面硬币的概率就应该是是一个概率的概率,也就是说它的结果不是一个单一的值1/2,而是一个概率分布,可能有很高的概率是1/2,但是也有一定的概率是100%(比如抛100次结果还真都100次都是正面)。那么在这里这个概率的分布用函数来表示就是一个似然函数,所以似然函数也被称为“分布的分布”。用公式来表示就是:

后验概率(posterior probability)∝ 似然函数(likelyhood function)*先验概率(prior probability)

即:

P(X|D) ∝ P(μ|D)*P(X)

 

这里D表示一组观测实验(比如我扔了五次硬币得到5次正反面的结果),X表示随机变量(在这里是硬币的正反面),表示随机函数里面的参数(在这里就是硬币掷为正面的概率)。

注意这里是正比于而不是等于,这个是理解似然函数的一个关键,右侧直接的乘积其实是不满足概率分布归一化的条件的(就是右侧的积分最后不会等于1)那么这个正比符号怎样才能变成等号呢?其实只要再除以一个系数进行归一化就可以了:

P(X|D)  =P(μ|D)*P(X)/P(D)

这个归一化的系数是怎么来的呢?让我们回忆一下贝叶斯公式:

P(X|D)*P(D)=P(XD)

而P(μ|D)=P(D|X)    (似然函数在计算时的做法就是将D的观察结果代入P(X)的分布式子中去得到的)

于是

(P(μ|D)/P(D))*P(X)=P(D|X)*P(X)/P(D)=P(XD)/P(D)=P(X|D)

P(XD)在这里的含义就是观测实验的那一批样本事件与X同时发生的概率。(在PRML中是用概率归一化的条件来推导P(D)的,这个其实是从加入P(D)的最终目的来考虑,而我觉得直接从P(D)在概率上的物理意义用贝叶斯公式来推导等式也是make sense的……)

 

似然函数的形式是依赖于观测值的,它在贝叶斯学派与频率学派都有很大的作用,不过在两家的用法并不相同。频率学派认为每个事件的概率是一个客观存在的常数值,只是我们不知道而已。比如抛硬币,在实验估计之前我们不知道它是多少(频率学派也不会管之前大家说抛硬币出现正面的概率是1/2还是多少,所谓“眼见为实,耳听为虚”,他们的最终结论只和在实验中观测到的数据有关系),但是它肯定是一个确定的常数,然后我们通过观察实验,获得一组样本值(D),再将这组样本值代入似然函数(P(D|X)),求解使得似然函数最大的值就是估计出来的(当然由于实验的结果不同,这个估计出来的也很可能不是1/2,实验不同得到的结果也不同,但是根据大数定律,理论上实验次数足够多以后,求出来的是会越来越接近真实的概率的)。也就是说频率学派认为答案只有一个,我们不断地通过各种估计法来猜测这个值。

 

而贝叶斯学派并不会完全拒绝大家之前所说的“硬币扔出正面的概率是1/2”的说法,只是贝叶斯学派认为最终硬币扔出正面反面的概率并不是一个常数值,不是一个有唯一答案的真理,这个值本身应该也是一个随机变量,是在不断变化的一个数值,如何得到这个值,贝叶斯学派认为一样也需要实验在“硬币扔出正面的概率是1/2”的说法的基础上通过实验数据(似然函数)不断去预估这个扔出正面概率的实际分布(后验分布)。

 

举个例子:假如我扔了5次硬币,先出现了3次正面,后出现了两次反面,那么这时的似然函数就应该是P(μ|D)=P(D|X)=L(μ)=μ*μ*μ*(1-μ)*(1-μ)(是硬币抛正面的概率,在似然函数里就相当于概率分布函数里的随机变量一样变成一个随机变化的值了),假如是1/2,那么L(μ)就等于1/2*1/2*1/2*(1-1/2)*(1-1/2)即1/2的5次方,我们前面说过L(μ)表示的是的概率,从这个结果来看1/32(0.03125)的概率值显然并不是L(μ)的最大值,如果我们对这时的L(μ)求导求最大值的话会发现,在μ=3/5时L(μ)才最大,为0.03456。而这时的后验概率,如果按照公式直接计算的话我们会发现最后的结果应该是L(μ)*P(X)/P(D),也就是一个随μ变化的值,其中P(D)可以简单地由古典概型算出来:P(D)=1/=1/32=0.03125。如果μ取了3/5,代入上式那么抛硬币为正面的概率就是0.55296,而不是1/2,当然贝叶斯学派最终得到的后验概率是一个随μ变化的分布,只不过在这种情况这个分布取到0.55296这个值的概率最大而已(听起来比频率学派严谨不少)。如果用我们以前统计课本上的频率学派的最大似然估计法,如果在μ=3/5时L(μ)最大,那么得出结论就是最后抛硬币为正面的概率就是3/5,当然还要附上一个参数估计的置信度,表示这个结论自然不是100%准确的(所以在机器学习的建模过程中,如果用频率学派的做法,最后基本必然导致模型的过拟合,这里欠缺的variance其实就是因为缺少了先验知识的引入,所以虽然“尽信书不如无书”,但是完全不顾前人积累的经验也是可能走入死胡同的)。

 

搞清楚了似然函数、先验概率、后验概率的几个贝叶斯学派的基本概念,其实要明白共轭分布和共轭先验就很简单了,所谓共轭分布就是先验概率和后验概率具有一样函数形式的分布形式,一样的函数形式的含义举个例子就是假如先验分布函数是形如12CA4AA421BA4796879F7D395D5DB613的形式(比如二项分布就是这种形式)而后验分布是22199132D8744864ABCAD816212C4707这样的形式,两者只是具体参数值不同,或者先验分布和后验分布都是高斯分布等等的情形就可为认为先验分布和后验分布具有同样的形式,这时两者就共轭。因为后验概率正比于先验概率与似然函数的乘积,因此似然函数是有可能改变后验概率的形式的。例如的先验假如乘上的是logμ形式的似然函数,那么它的后验函数的形式肯定就发生了变化,这时先验和后验就不是共轭的了,而假如12CA4AA421BA4796879F7D395D5DB613的先验乘上的是3C2BCAD9D7DA4FB8ADB26C8636C7F14C(比如贝塔分布)的形式,那么最后后验函数的形式就可以和先验函数保持一致了。

 

那么共轭先验又是什么概念呢?因为在现实建模问题中,往往我们先得到和固定的反而是似然函数(其实也很好理解,客观的实验观察数据才是第一手最solid的材料),这时先验函数(可以理解为先验知识或者是对后验分布的一种假设和猜测)是可以选择的。这时如果我选的先验分布最后乘上这个似然函数,使得后验分布与先验分布共轭,那么我们就称这个先验函数为似然函数的共轭先验。很明显的,后验分布和先验分布共轭的情况下是可以大大简化计算量的。所以在确定似然函数后寻找先验分布时在该似然函数的共轭先验中寻找是比较好的一种选择。

This entry was posted in machine learning and tagged , , , , , , , . Bookmark the permalink.

6 Responses to 共轭分布与共轭先验

  1. Cesc says:

    好文,ZJUer 路过。。

  2. Saplace says:

    终于有一个把话说清楚的文章了。太感动了TaT..

  3. itongworld says:

    好文,BITer路过

  4. 奥莉Ollie says:

    逻辑很清楚!不过我还有一个提问,半共轭先验(semi-conjugate prior )和共轭先验(conjugate prior )相比,又有什么不同呢,什么时候更好用半共轭先验呢?谢谢!

Leave a Reply

Your email address will not be published. Required fields are marked *