您的位置:首页 > 其它

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

2015-06-06 23:37 441 查看

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\mathbf w,LDA假定了如下的生成过程:

(1)选择一个N~Poisson(ϵ\epsilon),N是该文档中单词的个数;

(2)选择一个θ\theta~Dir(α\alpha),θ\theta是主题分布所服从的多项分布的参数;

(3)对于文档中的每一个词wnw_n:

a.选择一个主题znz_n~Multinomial(θ\theta);

b.在选定主题znz_n后,在该主题对应的词分布中选择一个单词wnw_n,它的概率是p(w|zn,β)p(w|z_n,\beta)。

其中的参数说明如下:

D:数据集D中包含M个文档,D=w1,w2,…,wMD={w_1,w_2,…,w_M};

w:每个文档中有N个单词,w=(w1,w2,...,wN)(w_1,w_2,...,w_N),wnw_n是文档词序列的第n个词;

z:z代表一个主题,是一个k维向量,k是主题个数,第k个主题可以表示为:zk=1,zj=0,k≠jz^k=1, z^j=0, k\neq j,所以每个z是一个单位向量;

ww:ww代表一个词,是一个V维向量,V是总词典的大小,词典中第v个词可以表示为:wv=1,wu=0,u≠vw^v=1, w^u=0, u \neq v,所以每个ww都是一个单位向量;

α\alpha:是狄利克雷分布的参数,是我们要估计的参数;

β\beta:是一个k*V的矩阵,k是主题个数,V是词典个数,β(i,j)\beta (i,j)代表主题ziz_i中单词wjw_j的概率,也就是说,β\beta中存储的是主题-词分布,是我们要估计的参数。

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

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

假设有如下4个主题,每个主题对应的词分布中有15个词。这个实质上反映的是β\beta 的内容。




写一篇文档时,以一定概率选取一个主题,再以一定的概率选取该主题下的某个单词,重复这两步,最终生成如下的一篇文档:



2.2, LDA概率模型

根据以上的文档生成过程,可得到LDA模型图如下所示:




从图中可以看出,LDA是一个三层的模型,α,β\alpha,\beta 是文档集级别的参数,每生成一个文档集采样一次。θd\theta_d 是文档级别的变量,每生成一个文档时采样一次。zdn,wdnz_{dn},w_{dn} 是单词级别的变量,每生成一个单词时采样一次。

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

(1)p(θ|α)=Γ(∑ki=1αi)∏ki=1Γ(αi)θα1−11...θαk−1k p(\theta |\alpha)=\frac{\Gamma(\sum_{i=1}^k\alpha_i)}{\prod_{i=1}^k\Gamma(\alpha_i) }\theta_1^{\alpha_1-1 }...\theta_k^{\alpha_k-1}

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

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

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

(2)

p(θ,z,w|α,β)=p(θ|α)∏n=1Np(zn|θ)p(wn|zn,β).p(\theta,\mathbf z,\mathbf w | \alpha , \beta )=p(\theta|\alpha) \prod_{n=1}^Np(z_n|\theta)p(w_n|z_n,\beta).

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

(3)

p(w|α,β)=∫p(θ|α)(∏n=1N∑znp(zn|θ)p(wn|zn,β))dθ.p(\mathbf w|\alpha,\beta)=\int p(\theta|\alpha)(\prod_{n=1}^N \sum_{z_n}p(z_n|\theta)p(w_n|z_n,\beta)) d\theta.

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

(4)p(D|α,β)=∏d=1M∫p(θd|α)(∏n=1Nd∑zdnp(zdn|θd)p(wdn|zdn,β))dθd.p(D|\alpha,\beta)=\prod_{d=1}^M \int p(\theta_d|\alpha)(\prod_{n=1}^{N_d}\sum_{z_{dn}} p(z_{dn}|\theta_d)p(w_{dn}|z_{dn},\beta))d\theta_d.

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

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

主要参考资料:《Latent Dirichlet Allocation》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: