共轭先验分布
我们之前学习过贝叶斯公式,概括地来说,贝叶斯公式是对因果关系的总结。
贝叶斯学派与频率学派最大的不同是频率派认为参数是客观存在,不会改变,虽然未知,但却是固定值;贝叶斯派则认为参数是随机值,因为没有观察到,那么和是一个随机数也没有什么区别,因此参数也可以有分布。
而这个概率分布是在抽样之前,就基于已有的知识对于这个未知量进行的预估,这在贝叶斯公式里面被称作 先验分布,然后再基于样本的分布情况,最后在考虑到所有因素的情况下得出 后验分布。
往小处说,频率派最常关心的是似然函数,而贝叶斯派最常关心的是后验分布。
贝叶斯公式牵涉到较为复杂的计算,特别是当其先验分布很复杂时,这个时候就需要一种能够简化计算的方法,这就需要引入下一个概念——共轭先验分布。
共轭先验分布的定义是:
设是总体分布中的参数(或参数向量),x为给定的样本。贝叶斯公式为:
而由于x为给定样本,P(x)有时被称为“证据”,仅仅是归一化因子,如果不关心的具体值,只考察
取何值时后验概率
最大,则可将分母省去。得:
在贝叶斯概率理论中,如果后验概率和先验概率
满足同样的分布律,那么,先验分布和后验分布被叫做共轭分布,同时,先验分布叫做似然函数
的共轭先验分布。
采用共轭先验分布的意义为可以使得先验分布和后验分布的形式相同,这样当共轭先验分布是一个常见的分布时,可以很快地补出所需的常数项,从而得出后验分布。
一些常见的共轭先验分布
函数:
Beta分布:
二项分布的共轭先验是Beta分布,它具有两个参数α和β
而多项分布的共轭先验为Dirichlet分布,当Dirichlet分布参数相同时为对称Dirichlet分布。
LDA模型
LDA模型又称作主题模型,是一种形成文章的模型,它模拟一个过程:
共有m篇文章,一共涉及了K个主题。
每篇文章(长度为)都有各自的主题分布,主题分布是多项分布,该多项分布的参数服从Dirichlet分布,该Dirichlet分布的参数为α。
每个主题都有各自的词分布,词分布为多项分布,该多项分布的参数服从Dirichlet分布,该Dirichlet分布的参数为β。
对于某篇文章中的第n个词,首先从该文章的主题分布中采样一个主题,然后在这个主题对应的词分布中采样一个词。不断重复这个随机生成过程,直到m篇文章全部完成上述过程。
图中K为主题个数,M为文档总数,Nm是第m个文档的单词总数。β是每个Topic下词的多项分布的Dirichlet先验参数,α是每个文档下Topic的多项分布的Dirichlet先验参数。是第m个文档中第n个词的主题,
是m个文档中的第n个词。两个隐含变量0和(p分别表示第m个文档下的Topic分布和第k个Topic下词的分布,前者是k维(k为Topic总数)向量,后者是v维向量(v为词典中term总数)。
给定一个文档集合,是可以观察到的已知变量,α和β是根据经验给定的先验参数,其他的变量
都是未知的隐含变量,需要根据观察到的变量来学习估计的。根据LDA的图模型,可以写出所有变量的联合分布:
如何去计算,就要用到Gibbs Sampling了
Gibbs Sampling
Gibbs Sampling算法的运行方式是每次选取概率向量的一个维度,给定其他维度的变量值采样当前
维度的值。不断迭代直到收敛输出待估计的参数.
初始时随机给文本中的每个词分配主题,然后统计每个主题z下出现词t的数量以及每个文档m下出现主题z的数量,每一轮计算
,即排除当前词的主题分布,根据其他所有词的主题分布估计当前词分配各个主题的概率。
当得到当前词属于所有主题z的概率分布后,根据这个概率分布为该词采样一个新的主题。
用同样的方法更新下一个词的主题,直到发现每个文档的主题分布,和每个主题的词分布
收敛,算法停止,输出待估计的参数
和
,同时每个单词的主题
也可同时得出。
实际应用中会设置最大迭代次数。每一次计算的公式称为Gibbs updating rule。