这里为了增加访问量,具体请看原文:http://www.xperseverance.net/blogs/2013/03/1682/

这几天较空总算把《Gibbs Sampling for the Uninitiated》看明白了点,看完这个对其他模型的 Gibbs Sampling 感觉应该是不会有大问题了,之后可以再仔细看看《Parameter estimation for text analysis》,然后对照他的代码写一份总结。

在此真是万分感谢这个作者,拯救了万千Uninitiated!要是没有这样的tutorial,也没人教,谁特么知道这东西怎么弄。

基础知识:随机过程、马尔科夫蒙特卡洛、Gibbs Sampling的理论基础(待写)

注:本文档主要是Learning Note,而不是独立教程,因此没有:1、基础概念  2、符号解释  3、详细公式推导  这些都可以从《Gibbs Sampling for the Uninitiated》原文找到。我的水平也极其有限,同时我认为如果只看别人博客而不愿意读原文那么肯定是不成的!本文主要目的是写一个学习记录给自己,使得以后忘记的时候能够迅速回顾。若能达到与人交流的目的,那就更好啦。

————————— 伟大的分割线:Gibbs Sampling for the Uninitiated!—————————

1.模型解析

首先应该看清楚这个model的真实面目,如下图:

Reading Note : Gibbs Sampling for the Uninitiated

对于文中Figure4,展开来应该如上图,之前我对于Graph Model其实具体接触比较少,对于Figure4那样画成Plate还是有误导性(主要是会误以为W只是一个随机变量),在这个图里Plate被展开了,所以我就随便用虚线替代实线,对于该图展开后的解释如下:

1.每一个文档有一个Label(j),是文档的class,同时1

2.在Gibbs Sampling中,所有的圆圈都是要被sample的,也就是每一个k是整体sample的,这个会在后面讲到。

3.在这个model中,Gibbs Sampling所谓的P(Z),就是产生图中这整个数据集的联合概率,也就是产生这N个文档整体联合概率,还要算上包括超参θ的概率。所以最后得到了上图中表达式与对应色彩。

2.联合概率公式推导

分别对红色、绿色、蓝色、紫色部分求表达式,得到如下结果:

1)红色部分:这个是从beta分布sample出一个伯努利分布,伯努利分布只有一个参数就是π,不要normalization项(要求的是整个联合概率,所以在这里纠结normalization是没有用的),得到:

1

2)绿色部分:这里L是一整个向量,其中值为0的有C0个,值为1的有C1个,多次伯努利分布就是二项分布啦,因此:

0

3)蓝色部分:对于0类和1类的两个1用相同的式子采样:

i

4)紫色部分:这部分,首先要求对于单独一个文档n,产生所有word也就是),意思就是word1产生概率0.2,word2产生概率0.5,假如这个文档里word1有2个,word2有3个,word3有2个,则这个文档的产生概率就是(0.2*0.2)*(0.5*0.5*0.5)*(0.3*0.3)。所以按照这个道理,一个文档整个联合概率如下:

i

上面这个概率是针对单个文档而言的,把所有文档的这些概率乘起来,就得到了紫色部分:

i

其中x的取值可以是0或1,所以)

最后把上述4部分乘起来,就得到整个模型的联合概率。不再赘述,只是说明文中从式(29)跳到(30),以及式(31)到式(32)的计算,都用到了Beta分布与二项分布共轭的性质,以及多项分布与狄利克雷分布共轭性质,这些可以从PRML2.2和2.3中读到【1】。

3.将隐含变量π积出

为了方便,可以对隐含变量π进行积分,最后达到消去这个变量的目的。

Reading Note : Gibbs Sampling for the Uninitiated

图中带圈的(1)作者是直接通过Beta分布的Normalize Constant得出的,也就是和【1】是同一个道理。

4.吉布斯采样框架

包含三个步骤,按照顺序(1),(2),(3)进行

(1)对所有L变量采样一轮。即整个数据集合有N个文档,也就是有N个L实例,依次对每一个文档j,采样j

)

注意表达式后面那部分的样子,在条件概率中,没有j之后的所有项都是基于(t)轮,也就是前一轮采样的结果。

(2)对0的,这就是Gibbs采样的要求:

)

(3)对1采样:

)

对于其他变量,γ为超参数,是人为设定的,W为观察变量,不需采样。

然后就要求出0.3,那么就可以产生一个伯努利分布,其参数:

0.4

然后我用random函数从uniform distribution产生一个随机数r,如果r<=0.4,则将j赋值为0,否则赋值为1。

在这里不累赘写L的概率表达式了,记录一些关键内容。首先,计算1乘在一起,其实只有其中一个会被减去L中的词的个数,另外一个不变的就全部约掉了,所以最后只会剩下式(48)。

另外,对于式(52),其实作者还是没有写清楚,怎么从伽马分布)采样yi呢?呵呵,这个正好在PRML11.1.2 Reject Sampling里面有的哦~

最后的最后,文章给出了很关键的理解:

i

这个式子中,前半部分其实只有Cx是变量,所以如果C0大,则θ参数的情况下,整个文档的likelihood更倾向于C0还是C1。

相关文章: