LDA主题模型学习笔记1:模型建立

0,背景

       LDA于2003年在论文《Latent Dirichlet Allocation》中提出,是一种主题模型,它可以将文档集中每篇文档的主题以概率分布的形式给出,从而根据主题分布进行主题聚类或文本分类。所以当前我们的目标是要做文本分类。然而实际上我学习LDA目的是要做图像分类。

1,简介

       做文本分类早期比较经典的一种方法是tf-idf,这种方法简单粗暴,是把文档集中的单词做一个vocabulary,然后对文档集中的每一篇文档做词频统计,这样可以得到每篇文档一个关于vocabulary的统计直方图,对于一个文档集就可以得到一个统计矩阵X,再做文档相似度判断从而分类。这种方法的局限性在于,最后得到的矩阵太大,且把一篇文章打散,没有考虑文章内部的数据结构,对同义词也没有做处理,即没有考虑单词和语义之间的多对一关系。

       对于tf-idf,当文档集很大时,矩阵X将会相应地变大,LSI则是用一种压缩方法来处理矩阵X,得到tf-idf中特征的线性组合作为LSI特征,它的作者认为这样的处理使得LSI特征也考虑了同义词和多义词的一些影响。

       pLSI对LSI做改进,引入了概率模型,认为一篇文档中的单词可以从一个mixture model中采样得到,这个mixture model可以分解成多个mixture components,每个components代表一个topic,这些topic服从多项分布。而pLSI同样存在一些问题。当文档集增大时,模型的参数会线性增长,从而导致过拟合,pLSI也没有清晰地给出训练集以外的文档的概率计算方法。

       基于以上,作者提出了LDA模型,LDA模型允许一个文档有多个主题,同义词会被聚集到同个主题–词分布中,多义词会同时存在于多个主题–词分布中。


2,LDA模型

2.1,LDA文档生成过程

       对于数据集D中的每个文档 w ,LDA假定了如下的生成过程:
(1)选择一个N~Poisson( ϵ ),N是该文档中单词的个数;
(2)选择一个 θ ~Dir( α ), θ 是主题分布所服从的多项分布的参数;
(3)对于文档中的每一个词 wn
       a.选择一个主题 zn ~Multinomial( θ );
       b.在选定主题 zn 后,在该主题对应的词分布中选择一个单词 wn ,它的概率是 p(w|zn,β)


其中的参数说明如下:
D:数据集D中包含M个文档, D=w1,w2,,wM
w:每个文档中有N个单词,w= (w1,w2,...,wN) wn 是文档词序列的第n个词;
z:z代表一个主题,是一个k维向量,k是主题个数,第k个主题可以表示为: zk=1,zj=0,kj ,所以每个z是一个单位向量;
w w 代表一个词,是一个V维向量,V是总词典的大小,词典中第v个词可以表示为: wv=1,wu=0,uv ,所以每个 w 都是一个单位向量;
α :是狄利克雷分布的参数,是我们要估计的参数;
β :是一个k*V的矩阵,k是主题个数,V是词典个数, β(i,j) 代表主题 zi 中单词 wj 的概率,也就是说, β 中存储的是主题-词分布,是我们要估计的参数。


此处引入隐变量z是为了后面使用EM算法求解模型参数 α,β 时能简化计算,而引入隐变量 θ 则是在主题分布(是一个多项分布)之上加一层Dirichlet分布(与多项分布共轭),可以保证一篇文档有多个主题。

LDA原始论文中,作者提供了一个简单的例子来说明LDA的文档生成过程:

假设有如下4个主题,每个主题对应的词分布中有15个词。这个实质上反映的是 β 的内容。
LDA主题模型学习笔记1:模型建立_第1张图片
写一篇文档时,以一定概率选取一个主题,再以一定的概率选取该主题下的某个单词,重复这两步,最终生成如下的一篇文档:
LDA主题模型学习笔记1:模型建立_第2张图片


2.2, LDA概率模型

根据以上的文档生成过程,可得到LDA模型图如下所示:
LDA主题模型学习笔记1:模型建立_第3张图片
       从图中可以看出,LDA是一个三层的模型, α,β 是文档集级别的参数,每生成一个文档集采样一次。 θd 是文档级别的变量,每生成一个文档时采样一次。 zdn,wdn 是单词级别的变量,每生成一个单词时采样一次。


从这个概率模型图,我们可以得到如下概率公式:
(1)

p(θ|α)=Γ(ki=1αi)ki=1Γ(αi)θα111...θαk1k

因为 θ 是服从参数为 α 的Dirichlet分布, α 是一个k维的向量,且 αi>0

此处选择Dirichlet分布是因为主题 zn 服从多项分布,而Dirichlet分布和多项分布是共轭分布,在以后的计算中会带来很多便利。


       给定 α,β ,根据文档生成的过程,可以得到,主题分布的参数 θ ,N个主题的集合 z ,N个单词的集合 w ,的联合分布:
(2)

p(θ,z,w|α,β)=p(θ|α)n=1Np(zn|θ)p(wn|zn,β).


       要消掉(2)式中的隐变量 θ,z ,需对连续型变量 θ 求积分,对离散型变量 z 求和,得到文档 w 的边缘分布:
(3)

p(w|α,β)=p(θ|α)(n=1Nznp(zn|θ)p(wn|zn,β))dθ.


       那么就可以通过求乘积进一步得到文档集D的边缘分布:

(4)

p(D|α,β)=d=1Mp(θd|α)(n=1Ndzdnp(zdn|θd)p(wdn|zdn,β))dθd.


       至此,我们对一个文档集建立了LDA模型,模型的参数是 α,β ,我们还引入了两个隐变量 θ,z ,接下来要做的就是消掉隐变量,求解参数,确定LDA模型。

       原始论文《Latent Dirichlet Allocation》中使用变分推断和EM算法。论文《Parameter estimation for text analysis》中采用Gibbs Sampling。


主要参考资料:《Latent Dirichlet Allocation》

你可能感兴趣的:(machine,learning)