LDA于2003年在论文《Latent Dirichlet Allocation》中提出,是一种主题模型,它可以将文档集中每篇文档的主题以概率分布的形式给出,从而根据主题分布进行主题聚类或文本分类。所以当前我们的目标是要做文本分类。然而实际上我学习LDA目的是要做图像分类。
做文本分类早期比较经典的一种方法是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模型允许一个文档有多个主题,同义词会被聚集到同个主题–词分布中,多义词会同时存在于多个主题–词分布中。
对于数据集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,k≠j ,所以每个z是一个单位向量;
w : w 代表一个词,是一个V维向量,V是总词典的大小,词典中第v个词可以表示为: wv=1,wu=0,u≠v ,所以每个 w 都是一个单位向量;
α :是狄利克雷分布的参数,是我们要估计的参数;
β :是一个k*V的矩阵,k是主题个数,V是词典个数, β(i,j) 代表主题 zi 中单词 wj 的概率,也就是说, β 中存储的是主题-词分布,是我们要估计的参数。
此处引入隐变量z是为了后面使用EM算法求解模型参数 α,β 时能简化计算,而引入隐变量 θ 则是在主题分布(是一个多项分布)之上加一层Dirichlet分布(与多项分布共轭),可以保证一篇文档有多个主题。
LDA原始论文中,作者提供了一个简单的例子来说明LDA的文档生成过程:
假设有如下4个主题,每个主题对应的词分布中有15个词。这个实质上反映的是 β 的内容。
写一篇文档时,以一定概率选取一个主题,再以一定的概率选取该主题下的某个单词,重复这两步,最终生成如下的一篇文档:
根据以上的文档生成过程,可得到LDA模型图如下所示:
从图中可以看出,LDA是一个三层的模型, α,β 是文档集级别的参数,每生成一个文档集采样一次。 θd 是文档级别的变量,每生成一个文档时采样一次。 zdn,wdn 是单词级别的变量,每生成一个单词时采样一次。
从这个概率模型图,我们可以得到如下概率公式:
(1)
此处选择Dirichlet分布是因为主题 zn 服从多项分布,而Dirichlet分布和多项分布是共轭分布,在以后的计算中会带来很多便利。
给定 α,β ,根据文档生成的过程,可以得到,主题分布的参数 θ ,N个主题的集合 z ,N个单词的集合 w ,的联合分布:
(2)
要消掉(2)式中的隐变量 θ,z ,需对连续型变量 θ 求积分,对离散型变量 z 求和,得到文档 w 的边缘分布:
(3)
那么就可以通过求乘积进一步得到文档集D的边缘分布:
(4)
至此,我们对一个文档集建立了LDA模型,模型的参数是 α,β ,我们还引入了两个隐变量 θ,z ,接下来要做的就是消掉隐变量,求解参数,确定LDA模型。
原始论文《Latent Dirichlet Allocation》中使用变分推断和EM算法。论文《Parameter estimation for text analysis》中采用Gibbs Sampling。
主要参考资料:《Latent Dirichlet Allocation》