赞
踩
隐含狄利克雷分布简称LDA(Latent Dirichlet allocation),首先由Blei, David M.、吴恩达和Jordan, Michael I于2003年提出,目前在文本挖掘领域包括文本主题识别、文本分类以及文本相似度计算方面都有应用。
LDA是一种典型的词袋模型,即它认为一篇文档是由一组词构成的一个集合,词与词之间没有顺序以及先后的关系。一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。
它是一种主题模型,它可以将文档集中每篇文档的主题按照概率分布的形式给出;
同时是一种无监督学习算法,在训练时不需要手工标注的训练集,需要的仅仅是文档集以及指定主题的数量k即可;
此外LDA的另一个优点则是,对于每一个主题均可找出一些词语来描述它;
LDA可以被认为是一种聚类算法:
[LDA automatically assigns topics to text documents]
Note:
1 阴影圆圈表示可观测的变量,非阴影圆圈表示隐变量;箭头表示两变量间的条件依赖性;方框表示重复抽样,方框右下角的数字代表重复抽样的次数。这种表示方法也叫做plate notation,参考PRML 8.0 Graphical Models。
对应到图2, α⃗ 和 β⃗ 是超参数;方框中, Φ={φ⃗ k} 表示有 K 种“主题-词项”分布; Θ={ϑ⃗ m} 有 M 种“文档-主题”分布,即对每篇文档都会产生一个 ϑ⃗ m 分布;每篇文档 m 中有 n 个词,每个词 wm,n 都有一个主题 zm,n ,该词实际是由 φ⃗ zm,n 产生。
2 φ(topic-word分布) and θ(doc-topic分布) 是狄利克雷分布, z(赋给词w的主题) and w(当前词) 是多项式分布. θ指向z是从doc-topic分布中采样一个主题赋给w(但是此时还不知道词w具体是什么,而是只知道其主题),φ指向w是φ的topic-word分布依赖于w。
当我们看到一篇文章后,往往喜欢推测这篇文章是如何生成的,我们可能会认为作者先确定这篇文章的几个主题,然后围绕这几个主题遣词造句,表达成文。LDA就是要根据给定的一篇文档,推测其主题分布。
因此正如LDA贝叶斯网络结构中所描述的,在LDA模型中一篇文档生成的方式如下:
因此整个模型中所有可见变量以及隐藏变量的联合分布是
(这里i表示第i个文档)
最终一篇文档的单词分布的最大似然估计可以通过将上式的以及
进行积分和对
进行求和得到
根据的最大似然估计,最终可以通过吉布斯采样等方法估计出模型中的参数。
在LDA最初提出的时候,人们使用EM算法进行求解。
后来人们普遍开始使用较为简单的Gibbs Sampling,具体过程如下:
∝
(topic sample的概率分布)
主题k中词t的概率分布
文档m中主题k的概率分布
从这里看出,gibbs采样方法求解lda最重要的是条件概率p(zi | z-i,w)的计算上。
[http://zh.wikipedia.org/wiki/隐含狄利克雷分布]
其中
对应的是二项分布
的计数。针对于这种观测到的数据符合二项分布,参数的先验分布和后验分布都是Beta分布的情况,就是Beta-Binomial 共轭。”
针对于这种观测到的数据符合多项分布,参数的先验分布和后验分布都是Dirichlet 分布的情况,就是 Dirichlet-Multinomial 共轭。 ”
正如Beta分布是二项式分布的共轭先验概率分布,狄利克雷分布作为多项式分布的共轭先验概率分布。
理解lda生成词的关键,lz建议先看lda基础模型。当然,已经理解可以直接跳过,看推理参数部分。
[TopicModel - Unigram、LSA、PLSA算法详解]
LDA就是在pLSA的基础上加层贝叶斯框架。pLSA样本随机,参数虽未知但固定,属于频率派思想;而LDA样本固定,参数未知但不固定,是个随机变量,服从一定的分布,LDA属于贝叶斯派思想。
pLSA模型按照如下的步骤生成“文档-词项”:
LDA模型中一篇文档生成的方式:
从上面两个过程可以看出,LDA在PLSA的基础上,为主题分布和词分布分别加了两个Dirichlet先验(也就是主题分布的分布和词分布的分布)。
在这个三维坐标轴所划分的空间里,每一个坐标点(p1,p2,p3)就对应着一个主题分布,且某一个点(p1,p2,p3)的大小表示3个主题z1、z2、z3出现的概率大小(因为各个主题出现的概率和为1,所以p1+p2+p3 = 1 {三角平面},且p1、p2、p3这3个点最大取值为1)。比如(p1,p2,p3) = (0.4,0.5,0.1)便对应着主题分布{ P(zi), i =1,2,3 } = {0.4,0.5,0.1},空间里有很多这样的点(p1,p2,p3),意味着有很多的主题分布可供选择,那dirichlet分布如何选择主题分布呢?把上面的斜三角形放倒,映射到底面的平面上,便得到如下所示的一些彩图(3个彩图中,每一个点对应一个主题分布,高度代表某个主题分布被dirichlet分布选中的概率,且选不同的,dirichlet 分布会偏向不同的主题分布):
理解这一节,需要先看懂吉布斯采样算法。
类似于pLSA,LDA的原始论文中是用的变分-EM算法估计未知参数,但不太好理解,并且EM算法可能推导出局部最优解。后来发现另一种估计LDA未知参数的方法更好,Heinrich使用了Gibbs抽样法。Gibbs抽样是马尔可夫链蒙特卡尔理论(MCMC)中用来获取一系列近似等于指定多维概率分布(比如2个或者多个随机变量的联合概率分布)观察样本的算法。
为了构造LDA Gibbs抽样器,我们需要使用隐变量的Gibbs抽样器公式。
(lz:这里分母实际只是分子对zi的一个积分,将变量zi积分掉,就得到p(z-i, x),所以重点在联合分布p(z,w)公式上,一般先推出联合分布公式再积分就可以使用上面的隐变量gibbs采样公式了。而这个联合分布就是我们采样出来的结果推断出的近似分布,也就是下面LDA所有变量的联合分布如何通过采样结果求解出来)。
在LDA模型中,隐变量为 zm,n ,即样本中每个词 wm,n 所属的主题,而参数 Θ 和 Φ 等可以通过观察到的 wm,n 和相应的 zm,n 积分求得,这种处理方法称作collapsed,在Gibbs sampling中经常使用。
要推断的目标分布p(z|w)(后验概率分布),它和联合分布成正比
{
这里省略了超参数},这个分布涉及很多离散随机变量,并且分母是
个项的求和,很难求解(正如从一维均匀分布采样很容易,直接从二维均匀分布采样就比较困难了,也是通过固定某个维度gibbs采样的)。此时,就需要Gibbs sampling发挥用场了,我们期望Gibbs抽样器可以通过Markov链利用全部的条件分布
p(zi|z¬i,w)
来模拟
p(z|w)
。
联合概率分布 p(w,z) : p(w,z|α,β)=p(w|z,β)p(z|α)
给定一个文档集合,w是可以观察到的已知变量, 因为产生主题分布θ,主题分布θ确定具体主题,且
产生词分布φ、词分布φ确定具体词,所以上述式子等价于下述式子所表达的所有变量的联合概率分布
:
(从概率图表示中也可以看出)
由于此公式第一部分独立于 ,第二部分独立于
,所以可以分别处理。计算的两个未知参数:第一项因子
表示的是根据确定的主题
和词分布的先验分布参数
采样词的过程,第二项因子
是根据主题分布的先验分布参数
采样主题的过程。
第一个因子,可以根据确定的主题
和从先验分布
取样得到的词分布Φ产生:
由于样本中的词服从参数为主题的独立多项分布,这意味着可以把上面对词的乘积分解成分别对主题和对词的两层乘积:
其中是词 t 在主题 k 中出现的次数,可以从初始化和迭代中计算出;Φ(k, t)是词分布也就是主题k下词t的采样概率,未知参数,如上分析过,通过
求。
Note:
1 每个主题下包含所有词,所有词都要考虑,只是概率不一样而已。并且这里的w和z上面都有箭头,都是向量。
2 初始时每个词w随机分配主题k,这样每个主题下的词也就随机分配了,也就得到初始值并不断修正,具体参考后面的【Gibbs sampling具体算法】
回到第一个因子上来,目标分布需要对词分布Φ积分:
(68)
其中在LDA中的数学模型定义的Dirichlet 分布的归一化系数
的公式
(两种表达方式,其中int表示积分)
这个结果可以看作K个Dirichlet-Multinomial模型的乘积。
Note: 推导:
类似,对于,先写出条件分布,然后分解成两部分的乘积:
其中, 表示的单词 i 所属的文档,
是主题 k 在文章 m 中出现的次数。
对主题分布Θ积分可得联合分布因子2:
(72)
Note: 上式推导:
综合第一个因子和第二个因子的结果,得到的联合分布结果为:
通过联合分布公式就可以得出出下面的条件分布的公式,对每个单词的主题进行采样。
公式(80)
Note: LDA的原始论文中,主题的词分布通常叫β,但是在许多后来的论文中叫φ,如on smoothing and inference for topic models.
![]()
其中,是构成文档m的主题数向量,
是构成主题k的词项数向量。
文档m主题的概率分布公式推导如下:
根据Dirichlet 分布期望,最终得到的分布参数求解公式为(注意分布参数的计算要在sampling收敛阶段进行):
对所有文档 m∈[1,M] :
迭代burn-in和sampling步骤:
[参数估计方法Gregor Heinrich.Parameter estimation for text analysis* - 5.5 The collapsed LDA Gibbs sampler]
推断算法复杂度
LDA inference is O(kN2) where N is the number of words, and k is the number of topics.
from:http://blog.csdn.net/pipisorry/article/details/42649657
ref: [Blei, David; Ng, Andrew;Latent Dirichlet allocation.Journal of Machine Learning Research*]
[David M. Blei《Introduction to Probabilistic Topic Models》译文:概率主题模型简介 Introduction to Probabilistic Topic Models]
[主题模型之LDA*]
[LDA学习笔记---来自《Parameter estimation for text analysis》]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。