报告人:王雨婷 时间:2017.4.19
与会人员:
教师:安宁、杨矫云
学生:段优、江思源、刘杰、刘硕、唐晨、腾越、王雨婷、严金戈、姚小慧、殷越、景波
请假人员:丁会通
本次报告的参考文献包括:
1.文献《Latent Dirichlet Allocation》作者DM Blei,AY Ng,MI Jordan
出版源《Journal of Machine Learning Research》, 2003 被引量3000,这篇文献是所有研究LDA的开篇之作,最经典的一篇文章。
2.通俗理解LDA主题模型,网址为http://blog.csdn.net/v_july_v/article/details/41209515
用比较通俗的语言详细的介绍了LDA的整体过程,包括公式推导,以及用了一些具体的例子方便理解整体流程。
3.主题模型之LDA,一篇博客,网址为 http://blog.jqian.net/post/lda.html ,其中关于LDA Gibbs的公式推导部分尤其清晰,公式推导推荐看这个。
本次报告先介绍了主题模型,LDA的基本原理,最后介绍了LDA的基本流程。
主题模型:
主题模型旨在一系列文章中找到一种结构。一篇文档是由多个主题构成的,每个主题占一部分比例。一个主题模型能回答以下这样的问题:X文章讨论的是什么?X文章和Y文章有多相似?如果我对Z文章感兴趣,我应该先读哪些文章?
LDA(Latent Dirichlet Allocation)
LDA由Blei, David M.、Ng, Andrew Y.、Jordan于2003年提出,它是一种典型的词袋模型,即一篇文档是由一组词构成,词与词之间没有顺序以及先后的关系。一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。是迄今最成功的主题模型。LDA主要思想:根据给定的文档,推测其主题分布。
生成文档的过程:
当我们看到一篇文章后,往往喜欢推测这篇文章是如何生成的,我们可能会认为作者先确定这篇文章的几个主题,然后围绕这几个主题遣词造句,表达成文。人类是根据上述文档生成过程写成了各种各样的文章,现在想让计算机利用LDA干一件事:推测分析各篇文章分别都写了些什么主题,且各篇文章中各个主题出现的概率大小(主题分布)是什么。
基本字母定义:
D中涉及的所有不同单词组成一个大集合VOCABULARY(简称VOC)
LDA以文档集合D作为输入(会有切词,去停用词,取词干等常见的预处理)
希望训练出的两个向量(设聚成k个Topic,VOC中共包含m个词结果):
文档的主题分布θd< pt1,…, ptk>,其中,pti表示d对应T中第i个主题zi的概率。
主题对应的词语分布φt< pw1,…, pwm>,其中,pwi表示主题zi生成VOC中第i个单词的概率。
LDA文档生成模型:
给定一个文档集合,w是可以观察到的已知变量,α和β是根据经验给定的先验参数,其他的变量z,θ和φ都是未知的隐含变量,需要根据观察到的变量来学习估计的。根据LDA的图模型,可以写出所有变量的联合分布:
LDA把要估计的主题分布和词分布看作是其先验分布是Dirichlet分布的随机变量,所以,在LDA这个估计主题分布、词分布的过程中,它们的先验分布(即Dirichlet分布)事先由人为给定,那么LDA就是要去求它们的后验分布(LDA中可用gibbs采样去求解它们的后验分布,得到期望的θd, φt)
LDA学习过程:
LDA的核心公式如下:
p(w|d) = p(w|t)*p(t|d)
其中p(t|d)利用θd计算得到,p(w|t)利用φt计算得到
算法开始时,先随机地给θd和φt赋值(对所有的d和t),给定超参数。然后上述过程不断重复,最终收敛到的结果就是LDA的输出。再详细说一下这个迭代的学习过程: 1)针对一个特定的文档ds中的第i单词wi,利用当前的θd和φt,可以计算它对应任意一个Topic的pj(wi|ds),其中j取值1~k。然后可以根据这些概率值结果以及超参数为ds中的第i个单词wi选择一个topic。 2)然后,如果ds中的第i个单词wi在这里选择了一个与原先不同的topic,就会反过来影响θd和φt 。
对D中所有的d中的所有w进行一次p(w|d)的计算并重上面新选择topic看作一次迭代。这样进行n次循环迭代之后,就会收敛到LDA所需要的结果了。
(具体过程涉及公式比较复杂,上述仅简单介绍了流程,不妨碍理解,若想深入了解,推荐参考资料3)