LDA的Gibbs 采样

1 马尔可夫链

这里写图片描述马尔可夫链(Markov Chain),描述了一种状态序列,其每个状态值取决于前面有限个状态。马尔可夫链是具有马尔可夫性质的随机变量的一个数列。这些变量的范围,即它们所有可能取值的集合,被称为“状态空间”,而这里写图片描述的值则是在时间n的状态。如果这里写图片描述对于过去状态的条件概率分布仅是这里写图片描述的一个函数,则

这里写图片描述

这里x为过程中的某个状态。上面这个恒等式可以被看作是马尔可夫性质。

马尔可夫链是满足马尔可夫性质的随机过程。

LDA的Gibbs 采样_第1张图片

马尔可夫链的稳态:
LDA的Gibbs 采样_第2张图片

无论最初的状态是什么样子的,最终的稳态分布的矩阵是固定的,其中所有行是相同的,表示下一个状态的分布向量。

LDA的Gibbs 采样_第3张图片
q是无穷维状态转移的马尔可夫链的稳态分布

LDA的Gibbs 采样_第4张图片
MCMC,第一个MC是蒙特卡洛随机过程;第二个MC是马尔可夫链,表示存在稳态。
因为马尔可夫链存在稳态分布,所以可以通过足够步后的采样来猜测最终的稳态分布q。

LDA的Gibbs 采样_第5张图片
LDA中Gibbs采样计算时使用条件概率

LDA的Gibbs 采样_第6张图片
使用gibbs采样是因为我们认为LDA最终的zij或者说doc-topic和topic-word存在稳态分布。我们要做的就是不断的迭代采样。 上图中zij是i个doc总j词所属topic的index。 (最初的zij是随机初始化,依据zij可以求doc-topic, topic-word. )最终的目的是求得稳定的doc-topic, topic-word。

具体步骤

在LDA最初提出的时候,人们使用EM算法进行求解,后来人们普遍开始使用较为简单的Gibbs Sampling,具体过程如下:

  1. 首先对所有文档中的所有词遍历一遍,为其都随机分配一个主题,即zm,n=k~Mult(1/K),其中m表示第m篇文档,n表示文档中的第n个词,k表示主题,K表示主题的总数,之后将对应的n(k)m+1, nm+1, n(t)k+1, nk+1, 他们分别表示在m文档中k主题出现的次数,m文档中主题数量的和,k主题对应的t词的次数,k主题对应的总词数。
  2. 之后对下述操作进行重复迭代。
  3. 对所有文档中的所有词进行遍历,假如当前文档m的词t对应主题为k,则n(k)m-1, nm-1, n(t)k-1, nk-1, 即先拿出当前词,之后根据LDA中topic sample的概率分布sample出词t的新的主题(例如原先t是topic3, 更新后可能是topic5了),在对应的n(k)m, nm, n(t)k, nk上分别+1。 这里采用了条件概率估计样本,比联合概率简单。

Gibbs Sampling通过求解出主题分布和词分布的后验分布,从而成功解决主题分布和词分布这两参数未知的问题。

参考

http://www.voidcn.com/blog/u014568921/article/p-4904074.html
http://blog.csdn.net/v_july_v/article/details/41209515

你可能感兴趣的:(LDA,MCMC,gibbs,机器学习)