LDA主题模型
一、LDA主题模型
在之前利用文本相似度解决推荐系统冷启动问题的博文中已简单介绍了LDA主题模型的使用,现在来介绍一下LDA主题模型的原理。
Latent Dirichlet Allocation模型简称为LDA,2003年由Blei, David M.、Ng, Andrew Y.、Jordan提出,用来推测文档的主题,在机器学习领域主题模型中占有非常重要的地位。
LDA将文档中每篇文档的主题以概率分布的形式表示出来,通过分析并抽取出这些文档的主题分布,便可根据这些文档的主题分布进行主题聚类或文本分类。
二、主题模型文本建模原理
我们将日常生活中产生的每一个文本存储为一篇文档,那么每篇文档就是有序的词的序列:

为了了解语料库中的词序列是如何生成的,我们需要进行统计文本建模。由于我们观察到的只是词序列构成的语料,因此在统计文本建模中,有两个核心的问题:
① 模型中有哪些参数;
② 产生词序列有哪些规则。
为了回答上面两个问题,我们先从最简单的Unigram Model入手。
1、Unigram Model之频率视角
假设词典中有一共有V个词
,Unigram Model认为:
对于词典中的V个词
,每个词的概率为
,我们将词序列产生的过程记为

因此,对于一篇文档
,该文档被生成的概率就是

而文档和文档之间我们认为是独立的,所以如果语料中有多篇文档
,则该语料的概率是

在Unigram Model中,由于我们假设了文档之间是独立可交换的,而文档中的词也是独立可交换的,所以一篇文档相当于一个袋子,里面装了一些词,而词的顺序信息无关紧要,因此Unigram Model也成为词袋模型(Bag-of-words)。
假设语料中总的词频是N,在所有的N个词中,如果我们关注每个词vi的发生次数ni,那么
正好是一个多项分布

此时,语料的概率是

此外,我们还需要估计模型中的参数
,也就是词序列中每个词的概率,使用极大似然估计最大化p(W), 于是参数的估计值为

2、Unigram Model之贝叶斯派视角
对于以上模型,贝叶斯统计学派的统计学习家持有不同意见,他们认为模型中的参数
不是唯一固定的,它应该也是一个随机变量。因此,贝叶斯学派认为有无穷多个各式各样的词典,有些词典中的词数量多,有些词典中的词数量少,词典
服从一个概率分布
,这个分布称为参数
的先验分布。

根据贝叶斯统计学派的观点,我们并不知道文档使用的是哪一个词典,因此每个词典都可能被使用。对每一个具体的词典
,由该词典生成文档的概率是
,所以最终文档产生的概率就是对每一个词典上产生的文档概率进行积分累加求和,

又此时有

因此,对先验分布
的选择是多项式分布对应的共轭分布,即Dirichlet分布

其中,
是归一化因子
,即


根据Drichlet分布的知识,我们可推出后验分布为

进一步的,我们可以计算出贝叶斯统计学派观点下Unigram Model中文本语料的产生概率为

3、Topic Model和PLSA
无论是从频率视角还是从贝叶斯视角,Unigram Model模型的假设过程与人类写文章产生每一个词的过程的差别还是很大,而且过于简单。为了解决这个问题,我们需要回忆整理一下人类写文章构词的思路:决定写文章------>确定文章的主题------>确定每个主题下的关键词语。由上述过程,我们可以很自然的引入主题模型(topic model):一篇文章通常是由多个主题构成的,而每个主题大概可以用与该主题相关的频率最高的一些词来描述。
主题模型的这种直观想法,在Hoffman于1999年提出的PLSA(Probabilistic Latent Semantic Analysis)模型中首先进行了明确的数学化。Hoffman认为:一篇文档(Document)可以由多个主题(Topic)混合而成,而每个Topic都是词汇上的概率分布,文章中的每个词都是由一个固定的Topic生成的。因此,在生成每篇文档(Doc)时,假设这篇文档有K个Topic(编号从1到K),每个Topic有V个Word(编号从1到V),生成文档的过程为:
1、为Doc选择一个Topic,假设编号为Kt;
2、选择编号为Kt的Topic,从这个Topic中生成一个Word,假设编号为Vw;
3、重复上述过程,直至完成文档的生成。

在PLSA模型中,第m篇文档dm中的每个词的生成概率为:

整篇文档的生成概率为:

其中,
为包含M篇文档的语料C,
为文档中的M个Topic,
为Topic中的K个Word。
4、LDA文本建模
在上述PLSA模型中,Topic和Word都是模型中参数,参数都是随机变量,但是没有先验分布。因此,LDA(Latent Dirichlet Allocation)模型在PLSA模型的计算过程中加入了一个先验分布,即Dirichlet分布。

LDA模型生成文档的过程与PLSA相似,在生成每篇文档(Doc)时,假设这篇文档有K个Topic(编号从1到K),每个Topic有V个Word(编号从1到V),生成文档的过程为:
1、为Doc选择一个Topic,假设编号为z;
2、选择编号为z的Topic,从这个Topic中生成一个Word;
3、重复上述过程,直至完成文档的生成。
假设语料库中有M篇文档,所有的word和对应的topic表示为:

其中,
表示第m篇文档中的词,
表示这些词对应的topic编号。
因此,语料生成过程中的word和topic可如下图所示:

使用概率图模型表示,LDA模型生成文档的过程可用下图表示:

有了LDA模型,我们需要:
1、估计模型中的参数
;
2、对于新来的一篇文档
,我们能够计算这篇文档的topic分布
。
实际应用
在实际应用中,我们可以基于语料训练LDA模型,并应用训练得到的模型对新的文档进行topic语义分析。因此,利用LDA模型,我们可以建立基于主题和语义的搜索系统,可以将LDA应用到推荐系统和问答系统中,以及应用到其他方面。
LDA在故宫问答系统中的应用实例
参考资料:
《LDA数学八卦》------------Rickjin(靳志辉)
