伯努利分布、二项分布、Beta分布、多项分布和Dirichlet分布与他们之间的关系,以及在LDA中的应用【存疑】      
View on GitHub

龙珠

修炼自己与发现世界

伯努利分布、二项分布、Beta分布、多项分布和Dirichlet分布与他们之间的关系,以及在LDA中的应用【存疑】

By arthur503 -- 17 Nov 2013

在看LDA的时候,遇到的数学公式分布有些多,因此在这里总结一下思路。

一、伯努利试验、伯努利过程与伯努利分布

先说一下什么是伯努利试验:

维基百科伯努利试验中:

伯努利试验(Bernoulli trial)是只有两种可能结果的单次随机试验。

即:对于一个随机变量而言,P(X=1)=p以及P(X=0)=1-p。一般用抛硬币来举例。另外,此处也描述了伯努利过程:

一个伯努利过程(Bernoulli process)是由重复出现独立但是相同分布的伯努利试验组成,例如抛硬币十次。

维基百科中,伯努利过程的描述如下:

换言之,伯努利过程是一列独立同分布的伯努利试验。

伯努利分布

伯努利分布(the Bernoulli distribution,又名两点分布或者0-1分布,是一个离散型概率分布。

记其成功概率为p(0≤p≤1),失败概率为q=1-p。

注意:此处描述的是在“一次”抛硬币,而不是多次。

二、(还不知道名字的分布)【存疑:看到名字了再来修改】

与伯努利分布对应,如果在一次实验中,出现的结果不是2种而是k种可能,则成为是:(还不知道名字的分布)。

常见例子:掷骰子(有多个可能结果)。

可以认为:伯努利分布是此分布在k=2时的特殊情况。

三、二项分布

二项分布

在概率论和统计学中,二项分布是n个独立的是/非试验中成功的次数的离散概率分布,其中每次试验的成功概率为p。这样的单次成功/失败试验又称为伯努利试验。实际上,当n = 1时,二项分布就是伯努利分布。

也就是说,单次抛硬币是伯努利分布,多次抛硬币是二项分布。二项分布中:

P(X=x|n,p) = C_{n}^{x}p^{x}(1-p)^{n-x}

即:抛硬币n次,得到x次为正面朝上的概率分布。(注意:虽然一般认为硬币是均匀的,这样硬币正面朝上的概率是0.5.但是,在抛硬币试验中,我们并不假设已经知道这种情况,而是假定对硬币正面朝上的概率完全未知)

四、多项分布

与二项分布之于伯努利分布相同,多项分布相当于进行n次(还不知道名字的分布)试验。假设k个实验结果的概率分别为:p_{1}, p_{2},…, p_{k},得到的k个结果的次数分别是:x_{1}, x_{2},…, x_{k},则:

P(x_{1}, x_{2},…, x_{k}|n, p_{1}, p_{2},…, p_{k}) = \frac{n!}{Π_{i=1}^{k}x_{i}!} * p_{i}^{x_{i}}

其中,∑_{i}x_{i}=n。

即:掷骰子n次,得到k个面朝上的次数分别为:x_{1}, x_{2},…, x_{k}的概率分布。

可以认为:多项分布是二项分布的推广,二项分布是多项分布在k=2时的特殊情况。根据多项式的公式,在k=2时,可以推出二项分布的公式。

五、Beta分布

我试着模仿下面的Dirichlet分布中的例子来解释Beta分布:

Beta分布可以看做是分布之上的分布。我们还是以抛硬币为例。不过,我们并不假设硬币是均匀的(也就是说:并不假设每次抛硬币,正面朝上的概率为0.5),所以抛硬币的正面朝上的概率p是未知的(只知道p∈[0,1])。如果进行一次二项分布试验,在这次二项分布试验中,抛硬币10000次,其中正面朝上7000次,反面朝上3000次,我们可以得到,正负面朝上的概率分别为{p,1-p}={0.7,0.3}。但是我们并不确信这个结果是正确的。我们想要做10000次二项分布试验,在每次二项分布试验中,均抛硬币10000次(说不定在其他二项分布实验中,得到的正负面朝上的概率是{0.2,0.8}或者{0.6,0.4},这些情况都有可能),那么,我们想要知道,在这样的多次重复二项分布实验中,抛硬币最后得到正负面朝上概率为{0.7,0.3}这样概率为多少?这就是在求抛硬币的概率分布之上的分布。这样的分布就叫做Beta分布。

正如二项分布可以看做多次进行伯努利试验所得到的分布一样,Beta分布也可以看做是多次进行二项分布的试验所得到的分布,是分布之上的分布。

Beta分布的公式如下:

p(p|α,β) = \frac{1}{B(α,β)} * p^{α-1} * (1-p)^{β-1}

其中,β∈[0,1],B(α,β) = \frac{Γ(α+β)}{Γ(α)Γ(β)} ≈ C_{α-1}^{α+β-2} 。【存疑:此处的B(α,β)在有的出处为B(α,β)的倒数!】

注:在“LDA数学八卦”中,作者求得α=k, β=n-k-1。

此处涉及到了Gamma分布Γ(x),我们暂时不讲,只要知道:Γ(n) = (n-1)! 即可。

Beta分布是二项分布之上的分布(distribution over bionominals),也是二项分布的共轭先验分布(conjugate prior of bionominals)。对于什么是共轭先验分布,可以参看这里:PRML Chapter 2. Probability Distributions。【我现在还没看懂。。orz】

概率语言模型及其变形系列(2)-LDA及Gibbs Sampling中也提到了:

什么是共轭分布呢?在文本语言模型的参数估计-最大似然估计、MAP及贝叶斯估计一文中我们可以看到,当我们为二项分布的参数p选取的先验分布是Beta分布时,以p为参数的二项分布用贝叶斯估计得到的后验概率仍然服从Beta分布,由此我们说二项分布和Beta分布是共轭分布。这就是共轭分布要满足的性质。在LDA中,每个文档中词的Topic分布服从Multinomial分布,其先验选取共轭先验即Dirichlet分布;每个Topic下词的分布服从Multinomial分布,其先验也同样选取共轭先验即Dirichlet分布。

六、Dirichlet分布

The Dirichlet Distribution 狄利克雷分布 (PRML 2.2.1)举了一个很通俗的例子:

Dirichlet分布可以看做是分布之上的分布。如何理解这句话,我们可以先举个例子:假设我们有一个骰子,其有六面,分别为{1,2,3,4,5,6}。现在我们做了10000次投掷的实验,得到的实验结果是六面分别出现了{2000,2000,2000,2000,1000,1000}次,如果用每一面出现的次数与试验总数的比值估计这个面出现的概率,则我们得到六面出现的概率,分别为{0.2,0.2,0.2,0.2,0.1,0.1}。现在,我们还不满足,我们想要做10000次试验,每次试验中我们都投掷骰子10000次。我们想知道,出现这样的情况使得我们认为,骰子六面出现概率为{0.2,0.2,0.2,0.2,0.1,0.1}的概率是多少(说不定下次试验统计得到的概率为{0.1, 0.1, 0.2, 0.2, 0.2, 0.2}这样了)。这样我们就在思考骰子六面出现概率分布这样的分布之上的分布。而这样一个分布就是Dirichlet分布。

如果理解了Beta分布与二项分布的关系,Dirichlet分布于多项分布之间的关系就可以理解了。简单来说,Dirichlet分布是多项分布之上的分布。也就是说,在多次进行多项分布试验中,每次都会得到一组多项分布中k个结果的概率向量p^{→} = {p_{1}, p_{2},…, p_{k}},那么,得到某一个概率向量(如p_{0}^{→})的分布是什么样的呢?这就是Dirichlet分布,其公式如下:

p(P={p_{i}}|α_{i}) = \frac{Π_{i}Γ(α_{i})}{Γ(∑_{i}α_{i})} * Π_{i}p_{i}^{α_{i}-1}

其中,∑_{i}p_{i} = 1, p_{i} ≥ 0。

这里面也涉及到了Gamma分布,我们还是先略过不讲。

和之前一样,可以认为:Beta分布是Dirichlet分布在k=2时的特殊情况。我们令:k=2, α = α_{1}, β = α_{2},即可得到Beta分布的公式。

Dirichlet分布是多项分布之上的分布(distribution over multinominals),也是多项分布的共轭先验分布(conjugate prior of multinominals)。

七、Gamma分布(Γ(x)分布)

关于Gamma分布,Rickjin写的“LDA数学八卦”中有详细的描述,强烈推荐。我看过了一遍,但还没有理解,因此略过,等搞明白了再说。【存疑:可考虑再专门写一篇gamma分布的文章】

八、多项分布、Dirichlet分布在LDA中的应用

此处只是初步说一下自己对多项分布、Dirichlet分布与LDA的关系的理解。

LDA模型在描述的时候,是从生成文章的方向来描述的,但在实际计算中,一般是根据已有的文章(即:语料库corpus)来反推文章的主题。

我们先按生成文章的方向来讲。

LDA是假设一篇文章中有多个主题,每个主题有对应的单词,我们分别将其对应为doc-topic,和topic-word模型。

我们先来看看topic-word模型:

对于一个topic,它对应的一个word库,在这个word库中,每一个word都有可能被选择,这个,不过不同word被选择的概率不同,因此,这个topic-word模型中word的分布为多项分布。根据多项分布的公式:P(x_{1}, x_{2},…, x_{k}|n, p_{1}, p_{2},…, p_{k}),其中,x_{i}就是单词word的出现次数,p_{i}就是单词word的出现概率。

再来看doc-topic模型:

对于一篇文章中,可能会有多个主题,每个主题的概率也是不同的,那么,doc-topic模型也是多项分布吗?注意:在一篇文章doc中,文章的主题并不是随机选择的,而是有确定主题的,也就是说,对于一片doc,已经默认其主题的概率p_{i}的是固定的。那么,我们从语料库中选择单词来形成这篇文章,且这篇文章的主题符合概率向量p_{→}={p_{1}, p_{2},…, p_{k}},这个分布就是Dirichlet分布。根据Dirichlet分布的公式:p(P={p_{i}}|α_{i}),其中,p_{i}就是各个主题出现的概率。【存疑:此处p_{i}与上一段的p_{i}所指的不是一个东西吧?应该一个是在一个主题中各个word的出现概率p,一个是在一篇文章doc中,各个主题出现的概率p。】

【存疑:现在不明白的是,Dirichlet分布中的α_{i}的意义是什么?概率语言模型及其变形系列(2)-LDA及Gibbs Sampling中有说到:α^{→}为Dirichlet分布的参数,在概率语言模型中通常会根据经验给定,由于是参数向量服从分布的参数,因此称为“hyperparamer”。不过,还是没有说他的意义是什么?】

LDA模型要解决的主要问题是:

已知:

Dirichlet分布的公式:p(P={p_{i}}|α_{i})

多项分布的公式:P(x_{1}, x_{2},…, x_{k}|n, p_{1}, p_{2},…, p_{k})

在此情况下,根据已知的各个word(如x_{1}, x_{2},…, x_{k})的统计词频等信息,求出各个word属于各个主题的概率,即:

P({p_{i}}|x_{1}, x_{2},…, x_{k}) = ?

(注:根据共轭先验分布的公式,参看CMU的一个PPTDirichlet Distribution, Dirichlet Process and Dirichlet Process Mixture,可以得到:

P({p_{i}}|x_{1}, x_{2},…, x_{k}) = \frac{Π_{i}Γ(α_{i}+x_{i})}{Γ(N+∑_{i}α_{i})} * Π_{i}p_{i}^{α_{i}+x_{i}-1}

)

根据不同的主题进行排序,从而可以得到不同主题情况下的所有word的排序结果,我们一般取前20~100个单词,就可以看出这个主题是哪一类的。

九、【存疑:不明白的问题】:

  1. 为何关于二项分布的分布是Beta分布的那种形式(即:如何推导出来的)?
  2. 为何关于多项分布的分布是Dirichlet分布的形式?
  3. Beta分布中的α、β参数所代表的意义是什么?
  4. Dirichlet分布中的α^{→} = {α_{i}}所代表的意义是什么?
  5. LDA模型中的φ参数在哪个分布里,怎么没有看到?它的意义是什么?
  6. LDA模型中,每个topic下对应的word是所有的corpus中的words吗,还是只是其中的一部分word所组成的子集?
  7. LDA模型中,每个文章doc中,选择topic也和和每个topic中选择word一样,都是多项分布吗?

参考资料: