理解 LDA 主题模型

摘要:
我再次遇到了主题模型。当时,沈博似乎只记得汪峰写歌词的一个例子,但仍然不明白LDA是什么。1Gamma函数1.0对LDA整体有两个含义。一种是线性判别分析,另一种是概率主题模型:隐式狄利克雷分布。本文将讨论后者。LDA就是这样做的:根据给定的文档,推测其主题分布。此外,LDA的图形模型的结构如下图所示:嗯,很好,只有6句话
    1. 前言
    2. gamma函数
      1. 0 整体把握LDA
      2. 1 gamma函数
    3. beta分布
      1. 1 beta分布
      2. 2 Beta-Binomial 共轭
      3. 3 共轭先验分布
      4. 4 从beta分布推广到Dirichlet 分布
    4. Dirichlet 分布
      1. 1 Dirichlet 分布
      2. 2 Dirichlet-Multinomial 共轭
    5. 主题模型LDA
      1. 1 各个基础模型
        1. 11 Unigram model
        2. 12 Mixture of unigrams model
      2. 2 PLSA模型
        1. 21 pLSA模型下生成文档
        2. 21 根据文档反推其主题分布
        3. 211 EM算法的简单介绍
        4. 212 EM算法估计pLSA的两未知参数
      3. 3 LDA模型
        1. 31 pLSA跟LDA的对比生成文档与参数估计
        2. 32 LDA生成文档过程的进一步理解
        3. 33 pLSA跟LDA的概率图对比
        4. 34 pLSA跟LDA参数估计方法的对比
        5. 35 LDA参数估计Gibbs采样
 
      通俗理解LDA主题模型

0 前言

    印象中,最开始听说“LDA”这个名词,是缘于rickjin在2013年3月写的一个LDA科普系列,叫LDA数学八卦,我当时一直想看来着,记得还打印过一次,但不知是因为这篇文档的前序铺垫太长(现在才意识到这些“铺垫”都是深刻理解LDA 的基础,但如果没有人帮助初学者提纲挈领、把握主次、理清思路,则很容易陷入LDA的细枝末节之中),还是因为其中的数学推导细节太多,导致一直没有完整看完过。

    2013年12月,在我组织的Machine Learning读书会第8期上,@夏粉_百度 讲机器学习中排序学习的理论和算法研究,@沈醉2011 则讲主题模型的理解。又一次碰到了主题模型,当时貌似只记得沈博讲了一个汪峰写歌词的例子,依然没有理解LDA到底是怎样一个东西(但理解了LDA之后,再看沈博主题模型的PPT会很赞)。

    直到昨日下午,机器学习班 第12次课上,邹讲完LDA之后,才真正明白LDA原来是那么一个东东!上完课后,趁热打铁,再次看LDA数学八卦,发现以前看不下去的文档再看时竟然一路都比较顺畅,一口气看完大部。看完大部后,思路清晰了,知道理解LDA,可以分为下述5个步骤:

  1. 一个函数:gamma函数
  2. 四个分布:二项分布、多项分布、beta分布、Dirichlet分布
  3. 一个概念和一个理念:共轭先验和贝叶斯框架
  4. 两个模型:pLSA、LDA(在本文第4 部分阐述)
  5. 一个采样:Gibbs采样

    本文便按照上述5个步骤来阐述,希望读者看完本文后,能对LDA有个尽量清晰完整的了解。同时,本文基于邹讲LDA的PPT、rickjin的LDA数学八卦及其它参考资料写就,可以定义为一篇学习笔记或课程笔记,当然,后续不断加入了很多自己的理解。若有任何问题,欢迎随时于本文评论下指出,thanks。

0 前言

    印象中,最开始听说“LDA”这个名词,是缘于rickjin在2013年3月写的一个LDA科普系列,叫LDA数学八卦,我当时一直想看来着,记得还打印过一次,但不知是因为这篇文档的前序铺垫太长(现在才意识到这些“铺垫”都是深刻理解LDA 的基础,但如果没有人帮助初学者提纲挈领、把握主次、理清思路,则很容易陷入LDA的细枝末节之中),还是因为其中的数学推导细节太多,导致一直没有完整看完过。

    2013年12月,在我组织的Machine Learning读书会第8期上,@夏粉_百度 讲机器学习中排序学习的理论和算法研究,@沈醉2011 则讲主题模型的理解。又一次碰到了主题模型,当时貌似只记得沈博讲了一个汪峰写歌词的例子,依然没有理解LDA到底是怎样一个东西(但理解了LDA之后,再看沈博主题模型的PPT会很赞)。

    直到昨日下午,机器学习班 第12次课上,邹讲完LDA之后,才真正明白LDA原来是那么一个东东!上完课后,趁热打铁,再次看LDA数学八卦,发现以前看不下去的文档再看时竟然一路都比较顺畅,一口气看完大部。看完大部后,思路清晰了,知道理解LDA,可以分为下述5个步骤:

  1. 一个函数:gamma函数
  2. 四个分布:二项分布、多项分布、beta分布、Dirichlet分布
  3. 一个概念和一个理念:共轭先验和贝叶斯框架
  4. 两个模型:pLSA、LDA(在本文第4 部分阐述)
  5. 一个采样:Gibbs采样

    本文便按照上述5个步骤来阐述,希望读者看完本文后,能对LDA有个尽量清晰完整的了解。同时,本文基于邹讲LDA的PPT、rickjin的LDA数学八卦及其它参考资料写就,可以定义为一篇学习笔记或课程笔记,当然,后续不断加入了很多自己的理解。若有任何问题,欢迎随时于本文评论下指出,thanks。

1 gamma函数

1.0 整体把握LDA

    关于LDA有两种含义,一种是线性判别分析(Linear Discriminant Analysis),一种是概率主题模型:隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA),本文讲后者。

    另外,我先简单说下LDA的整体思想,不然我怕你看了半天,铺了太长的前奏,却依然因没见到LDA的影子而显得“心浮气躁”,导致不想再继续看下去。所以,先给你吃一颗定心丸,明白整体框架后,咱们再一步步抽丝剥茧,展开来论述。

    按照wiki上的介绍,LDA由Blei, David M.、Ng, Andrew Y.、Jordan于2003年提出,是一种主题模型,它可以将文档集 中每篇文档的主题以概率分布的形式给出,从而通过分析一些文档抽取出它们的主题(分布)出来后,便可以根据主题(分布)进行主题聚类或文本分类。同时,它是一种典型的词袋模型,即一篇文档是由一组词构成,词与词之间没有先后顺序的关系。

    此外,一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。

    人类是怎么生成文档的呢?LDA的这三位作者在原始论文中给了一个简单的例子。比如假设事先给定了这几个主题:Arts、Budgets、Children、Education,然后通过学习训练,获取每个主题Topic对应的词语。如下图所示:
理解 LDA 主题模型第1张

    然后以一定的概率选取上述某个主题,再以一定的概率选取那个主题下的某个单词,不断的重复这两步,最终生成如下图所示的一篇文章(其中不同颜色的词语分别对应上图中不同主题下的词):

 理解 LDA 主题模型第2张

   而当我们看到一篇文章后,往往喜欢推测这篇文章是如何生成的,我们可能会认为作者先确定这篇文章的几个主题,然后围绕这几个主题遣词造句,表达成文。
    LDA就是要干这事:根据给定的一篇文档,推测其主题分布。
    通俗来说,可以假定认为人类是根据上述文档生成过程写成了各种各样的文章,现在某小撮人想让计算机利用LDA干一件事:你计算机给我推测分析网络上各篇文章分别都写了些啥主题,且各篇文章中各个主题出现的概率大小(主题分布)是啥。
    然,就是这么一个看似普通的LDA,一度吓退了不少想深入探究其内部原理的初学者。难在哪呢,难就难在LDA内部涉及到的数学知识点太多了。
    在LDA模型中,一篇文档生成的方式如下:
  • 从狄利克雷分布理解 LDA 主题模型第3张中取样生成文档 i 的主题分布理解 LDA 主题模型第4张
  • 从主题的多项式分布理解 LDA 主题模型第4张中取样生成文档i第 j 个词的主题理解 LDA 主题模型第6张
  • 从狄利克雷分布理解 LDA 主题模型第7张中取样生成主题理解 LDA 主题模型第6张对应的词语分布理解 LDA 主题模型第9张
  • 从词语的多项式分布理解 LDA 主题模型第9张中采样最终生成词语理解 LDA 主题模型第11张

    其中,类似Beta分布是二项式分布的共轭先验概率分布,而狄利克雷分布(Dirichlet分布)是多项式分布的共轭先验概率分布。

    此外,LDA的图模型结构如下图所示(类似贝叶斯网络结构):

理解 LDA 主题模型第12张

    恩,不错,短短6句话整体概括了整个LDA的主体思想!但也就是上面短短6句话,却接连不断或重复出现了二项分布、多项式分布、beta分布、狄利克雷分布(Dirichlet分布)、共轭先验概率分布、取样,那么请问,这些都是啥呢?

    这里先简单解释下二项分布、多项分布、beta分布、Dirichlet 分布这4个分布。

  •  二项分布(Binomial distribution)。

    二项分布是从伯努利分布推进的。伯努利分布,又称两点分布或0-1分布,是一个离散型的随机分布,其中的随机变量只有两类取值,非正即负{+,-}。而二项分布即重复n次的伯努利试验,记为 理解 LDA 主题模型第13张。简言之,只做一次实验,是伯努利分布,重复做了n次,是二项分布。二项分布的概率密度函数为:

理解 LDA 主题模型第14张

    对于k = 0, 1, 2, ..., n,其中的理解 LDA 主题模型第15张 是二项式系数(这就是二项分布的名称的由来),又记为理解 LDA 主题模型第16张
。回想起高中所学的那丁点概率知识了么:想必你当年一定死记过这个二项式系数理解 LDA 主题模型第16张就是理解 LDA 主题模型第18张.
  • 多项分布,是二项分布扩展到多维的情况。
    多项分布是指单次试验中的随机变量的取值不再是0-1的,而是有多种离散值可能(1,2,3...,k)。比如投掷6个面的骰子实验,N次实验结果服从K=6的多项分布。其中

 理解 LDA 主题模型第19张

     多项分布的概率密度函数为:
理解 LDA 主题模型第20张
  • Beta分布,二项分布的共轭先验分布。
    给定参数理解 LDA 主题模型第21张理解 LDA 主题模型第22张,取值范围为[0,1]的随机变量 x 的概率密度函数:
理解 LDA 主题模型第23张
    其中:
理解 LDA 主题模型第24张理解 LDA 主题模型第25张。 
   注:理解 LDA 主题模型第26张便是所谓的gamma函数,下文会具体阐述。
  • Dirichlet分布,是beta分布在高维度上的推广。
    Dirichlet分布的的密度函数形式跟beta分布的密度函数如出一辙:
理解 LDA 主题模型第27张
    其中
理解 LDA 主题模型第28张
    至此,我们可以看到二项分布和多项分布很相似,Beta分布和Dirichlet 分布很相似,而至于“Beta分布是二项式分布的共轭先验概率分布,而狄利克雷分布(Dirichlet分布)是多项式分布的共轭先验概率分布”这点在下文中说明。

    OK,接下来,咱们就按照本文开头所说的思路:“一个函数:gamma函数,四个分布:二项分布、多项分布、beta分布、Dirichlet分布,外加一个概念和一个理念:共轭先验和贝叶斯框架,两个模型:pLSA、LDA(文档-主题,主题-词语),一个采样:Gibbs采样”一步步详细阐述,争取给读者一个尽量清晰完整的LDA。

    (当然,如果你不想深究背后的细节原理,只想整体把握LDA的主体思想,可直接跳到本文第4 部分,看完第4部分后,若还是想深究背后的细节原理,可再回到此处开始看)

1.1 gamma函数

    咱们先来考虑一个问题(此问题1包括下文的问题2-问题4皆取材自LDA数学八卦):

  1. 问题1 随机变量理解 LDA 主题模型第29张
  2. 把这n 个随机变量排序后得到顺序统计量理解 LDA 主题模型第30张
  3. 然后请问理解 LDA 主题模型第31张的分布是什么。

    为解决这个问题,可以尝试计算理解 LDA 主题模型第31张落在区间[x,x+Δx]的概率。即求下述式子的值:

 理解 LDA 主题模型第33张

    首先,把 [0,1] 区间分成三段 [0,x),[x,x+Δx],(x+Δx,1],然后考虑下简单的情形:即假设n 个数中只有1个落在了区间 [x,x+Δx]内,由于这个区间内的数X(k)是第k大的,所以[0,x)中应该有 k−1 个数,(x+Δx,1] 这个区间中应该有n−k 个数。如下图所示:

理解 LDA 主题模型第34张
    从而问题转换为下述事件E:
理解 LDA 主题模型第35张
 
    对于上述事件E,有:
理解 LDA 主题模型第36张
    其中,o(Δx)表示Δx的高阶无穷小。显然,由于不同的排列组合,即n个数中有一个落在 [x,x+Δx]区间的有n种取法,余下n−1个数中有k−1个落在[0,x)的有理解 LDA 主题模型第37张种组合,所以和事件E等价的事件一共有理解 LDA 主题模型第38张个。
 
    如果有2个数落在区间[x,x+Δx]呢?如下图所示:
理解 LDA 主题模型第39张
    类似于事件E,对于2个数落在区间[x,x+Δx]的事件E’:
理解 LDA 主题模型第40张
    有:
理解 LDA 主题模型第41张
   从上述的事件E、事件E‘中,可以看出,只要落在[x,x+Δx]内的数字超过一个,则对应的事件的概率就是 o(Δx)。于是乎有:
理解 LDA 主题模型第42张
    从而得到理解 LDA 主题模型第31张的概率密度函数理解 LDA 主题模型第44张为:
理解 LDA 主题模型第45张

    至此,本节开头提出的问题得到解决。然仔细观察理解 LDA 主题模型第31张的概率密度函数,发现式子的最终结果有阶乘,联想到阶乘在实数上的推广理解 LDA 主题模型第26张函数:

理解 LDA 主题模型第48张

    两者结合是否会产生奇妙的效果呢?考虑到理解 LDA 主题模型第26张具有如下性质:

理解 LDA 主题模型第50张

    故将代入到理解 LDA 主题模型第31张的概率密度函数理解 LDA 主题模型第44张中,可得:

理解 LDA 主题模型第53张

    然后取理解 LDA 主题模型第54张理解 LDA 主题模型第55张,转换理解 LDA 主题模型第44张得到:

理解 LDA 主题模型第57张

    如果熟悉beta分布的朋友,可能会惊呼:哇,竟然推出了beta分布!

2 beta分布

2.1 beta分布

    在概率论中,beta是指一组定义在理解 LDA 主题模型第58张区间的连续概率分布,有两个参数理解 LDA 主题模型第59张理解 LDA 主题模型第60张,且理解 LDA 主题模型第61张
    beta分布的概率密度函数是:
理解 LDA 主题模型第62张
    其中的理解 LDA 主题模型第63张便是理解 LDA 主题模型第26张函数:
理解 LDA 主题模型第65张
    随机变量X服从参数为的beta分布通常写作:理解 LDA 主题模型第66张

2.2 Beta-Binomial 共轭

    回顾下1.1节开头所提出的问题:“问题1 随机变量理解 LDA 主题模型第29张,把这n 个随机变量排序后得到顺序统计量理解 LDA 主题模型第30张,然后请问理解 LDA 主题模型第31张的分布是什么。” 如果,咱们要在这个问题的基础上增加一些观测数据,变成问题2:
  • 理解 LDA 主题模型第29张,对应的顺序统计量是理解 LDA 主题模型第30张,需要猜测理解 LDA 主题模型第72张
  • 理解 LDA 主题模型第73张, 理解 LDA 主题模型第74张中有理解 LDA 主题模型第75张个比p小,理解 LDA 主题模型第76张个比理解 LDA 主题模型第77张大;
  • 那么,请问理解 LDA 主题模型第78张的分布是什么。
    根据“Yi中有理解 LDA 主题模型第75张个比理解 LDA 主题模型第77张小,理解 LDA 主题模型第76张个比理解 LDA 主题模型第77张大”,换言之,Yi中有理解 LDA 主题模型第75张个比理解 LDA 主题模型第31张小,理解 LDA 主题模型第76张个比理解 LDA 主题模型第31张大,所以理解 LDA 主题模型第31张理解 LDA 主题模型第88张中第理解 LDA 主题模型第89张大的数。
    根据1.1节最终得到的结论“只要落在[x,x+Δx]内的数字超过一个,则对应的事件的概率就是 o(Δx)”,继而推出事件服从beta分布,从而可知理解 LDA 主题模型第72张的概率密度函数为:
理解 LDA 主题模型第91张
   
    熟悉贝叶斯方法(不熟悉的没事,参见此文第一部分)的朋友心里估计又犯“嘀咕”了,这不就是贝叶斯式的思考过程么?
  1. 为了猜测理解 LDA 主题模型第72张,在获得一定的观测数据前,我们对理解 LDA 主题模型第77张的认知是:理解 LDA 主题模型第94张,此称为理解 LDA 主题模型第77张的先验分布;
  2. 然后为了获得这个结果“ 理解 LDA 主题模型第74张中有理解 LDA 主题模型第75张个比p小,理解 LDA 主题模型第76张个比理解 LDA 主题模型第77张大”,针对理解 LDA 主题模型第74张是做了理解 LDA 主题模型第101张次贝努利实验,所以理解 LDA 主题模型第75张服从二项分布理解 LDA 主题模型第103张
  3. 在给定了来自数据提供的理解 LDA 主题模型第104张的知识后,理解 LDA 主题模型第77张的后验分布变为理解 LDA 主题模型第106张
    回顾下贝叶斯派思考问题的固定模式:
  • 先验分布理解 LDA 主题模型第107张 + 样本信息理解 LDA 主题模型第108张 理解 LDA 主题模型第109张 后验分布理解 LDA 主题模型第110张
    上述思考模式意味着,新观察到的样本信息将修正人们以前对事物的认知。换言之,在得到新的样本信息之前,人们对理解 LDA 主题模型第111张的认知是先验分布理解 LDA 主题模型第107张,在得到新的样本信息理解 LDA 主题模型第108张后,人们对理解 LDA 主题模型第111张的认知为理解 LDA 主题模型第110张
    类比到现在这个问题上,我们也可以试着写下:
理解 LDA 主题模型第116张
    其中理解 LDA 主题模型第104张对应的是二项分布理解 LDA 主题模型第118张的计数。
    更一般的,对于非负实数理解 LDA 主题模型第59张理解 LDA 主题模型第60张,我们有如下关系
 
理解 LDA 主题模型第121张

    针对于这种观测到的数据符合二项分布,参数的先验分布和后验分布都是Beta分布的情况,就是Beta-Binomial共轭。换言之,Beta分布是二项式分布的共轭先验概率分布。

    二项分布和Beta分布是共轭分布意味着,如果我们为二项分布的参数p选取的先验分布是Beta分布,那么以p为参数的二项分布用贝叶斯估计得到的后验分布仍然服从Beta分布。

    此外,如何理解参数理解 LDA 主题模型第59张理解 LDA 主题模型第60张所表达的意义呢?理解 LDA 主题模型第59张理解 LDA 主题模型第60张可以认为形状参数,通俗但不严格的理解是,理解 LDA 主题模型第59张理解 LDA 主题模型第60张共同控制Beta分布的函数“长的样子”:形状千奇百怪,高低胖瘦,如下图所示:
理解 LDA 主题模型第128张

2.3 共轭先验分布

    什么又是共轭呢?轭的意思是束缚、控制,共轭从字面上理解,则是共同约束,或互相约束。
    在贝叶斯概率理论中,如果后验概率P(θ|x)和先验概率p(θ)满足同样的分布律,那么,先验分布和后验分布被叫做共轭分布,同时,先验分布叫做似然函数的共轭先验分布。
    比如,某观测数据服从概率分布P(θ)时,当观测到新的X数据时,我们一般会遇到如下问题:
  • 可否根据新观测数据X,更新参数θ?
  • 根据新观测数据可以在多大程度上改变参数θ,即
理解 LDA 主题模型第129张
  • 当重新估计θ的时候,给出新参数值θ的新概率分布,即P(θ|x)。
    事实上,根据根据贝叶斯公式可知:
理解 LDA 主题模型第130张
    其中,P(x|θ)表示以预估θ为参数的x概率分布,可以直接求得,P(θ)是已有原始的θ概率分布。
    所以,如果我们选取P(x|θ)的共轭先验作为P(θ)的分布,那么P(x|θ)乘以P(θ),然后归一化的结果P(θ|x)跟和P(θ)的形式一样。换句话说,先验分布是P(θ),后验分布是P(θ|x),先验分布跟后验分布同属于一个分布族,故称该分布族是θ的共轭先验分布(族)。
    举个例子。投掷一个非均匀硬币,可以使用参数为θ的伯努利模型,θ为硬币为正面的概率,那么结果x的分布形式为:
理解 LDA 主题模型第131张
    其共轭先验为beta分布,具有两个参数理解 LDA 主题模型第59张理解 LDA 主题模型第60张,称为超参数(hyperparameters)。且这两个参数决定了θ参数,其Beta分布形式为
理解 LDA 主题模型第134张
    然后计算后验概率
理解 LDA 主题模型第135张
    归一化这个等式后会得到另一个Beta分布,从而证明了Beta分布确实是伯努利分布的共轭先验分布。

2.4 从beta分布推广到Dirichlet 分布

    接下来,咱们来考察beta分布的一个性质。
    如果理解 LDA 主题模型第136张,则有:
理解 LDA 主题模型第137张
    注意到上式最后结果的右边积分
理解 LDA 主题模型第138张
    其类似于概率分布理解 LDA 主题模型第139张,而对于这个分布有
理解 LDA 主题模型第140张

    从而求得
理解 LDA 主题模型第138张
    的结果为
理解 LDA 主题模型第142张
    最后将此结果带入理解 LDA 主题模型第143张的计算式,得到:
理解 LDA 主题模型第144张

    最后的这个结果意味着对于Beta 分布的随机变量,其均值(期望)可以用理解 LDA 主题模型第145张来估计。此外,狄利克雷Dirichlet 分布也有类似的结论,即如果理解 LDA 主题模型第146张,同样可以证明有下述结论成立:

理解 LDA 主题模型第147张

    那什么是Dirichlet 分布呢?简单的理解Dirichlet 分布就是一组连续多变量概率分布,是多变量普遍化的beta分布。为了纪念德国数学家约翰·彼得·古斯塔夫·勒热纳·狄利克雷(Peter Gustav Lejeune Dirichlet)而命名。狄利克雷分布常作为贝叶斯统计的先验概率。

3 Dirichlet 分布

3.1 Dirichlet 分布

    根据wikipedia上的介绍,维度K ≥ 2(x1,x2…xK-1维,共K个)的狄利克雷分布在参数α1, ..., αK > 0上、基于欧几里得空间RK-1里的勒贝格测度有个概率密度函数,定义为:

理解 LDA 主题模型第148张

    其中,理解 LDA 主题模型第149张相当于是多项beta函数

理解 LDA 主题模型第150张

    且理解 LDA 主题模型第151张

    此外,x1+x2+…+xK-1+xK=1,x1,x2…xK-1>0,且在(K-1)维的单纯形上,其他区域的概率密度为0。

    当然,也可以如下定义Dirichlet 分布

理解 LDA 主题模型第152张

    其中的理解 LDA 主题模型第153张称为Dirichlet 分布的归一化系数:

理解 LDA 主题模型第154张

    且根据Dirichlet分布的积分为1(概率的基本性质),可以得到:
理解 LDA 主题模型第155张

3.2 Dirichlet-Multinomial 共轭

    下面,在2.2节问题2的基础上继续深入,引出问题3。

  • 理解 LDA 主题模型第29张
  • 排序后对应的顺序统计量理解 LDA 主题模型第157张,
  • 理解 LDA 主题模型第158张的联合分布是什么?
    为了简化计算,取x3满足x1+x2+x3=1,但只有x1,x2是变量,如下图所示:
理解 LDA 主题模型第159张

    从而有:

理解 LDA 主题模型第160张

    继而得到于是我们得到理解 LDA 主题模型第158张的联合分布为:

理解 LDA 主题模型第162张

    观察上述式子的最终结果,可以看出上面这个分布其实就是3维形式的 Dirichlet 分布

理解 LDA 主题模型第163张

    令理解 LDA 主题模型第164张,于是分布密度可以写为

理解 LDA 主题模型第165张

    这个就是一般形式的3维 Dirichlet 分布,即便理解 LDA 主题模型第166张延拓到非负实数集合,以上概率分布也是良定义的。

    将Dirichlet分布的概率密度函数取对数,绘制对称Dirichlet分布的图像如下图所示(截取自wikipedia上):

理解 LDA 主题模型第167张

上图中,取K=3,也就是有两个独立参数x1,x2,分别对应图中的两个坐标轴,第三个参数始终满足x3=1-x1-x2且α1=α2=α3=α,图中反映的是参数α从α=(0.3, 0.3, 0.3)变化到(2.0, 2.0, 2.0)时的概率对数值的变化情况。

    为了论证Dirichlet分布是多项式分布的共轭先验概率分布,下面咱们继续在上述问题3的基础上再进一步,提出问题4。

  1. 问题4  理解 LDA 主题模型第168张,排序后对应的顺序统计量理解 LDA 主题模型第169张
  2. 理解 LDA 主题模型第170张,理解 LDA 主题模型第171张,理解 LDA 主题模型第172张(此处的p3非变量,只是为了表达方便),现在要猜测理解 LDA 主题模型第173张
  3. 理解 LDA 主题模型第174张,Yi中落到理解 LDA 主题模型第175张理解 LDA 主题模型第176张理解 LDA 主题模型第177张 三个区间的个数分别为 m1,m2,m3,m=m1+m2+m3;
  4.  问后验分布理解 LDA 主题模型第178张的分布是什么。

   为了方便讨论,记理解 LDA 主题模型第179张,及理解 LDA 主题模型第180张,根据已知条件“理解 LDA 主题模型第174张,Yi中落到理解 LDA 主题模型第175张理解 LDA 主题模型第176张理解 LDA 主题模型第177张 三个区间的个数分别为 m1,m2”,可得理解 LDA 主题模型第185张理解 LDA 主题模型第186张分别是这m+n个数中第理解 LDA 主题模型第187张大、第理解 LDA 主题模型第188张大的数。于是,后验分布理解 LDA 主题模型第189张应该为理解 LDA 主题模型第190张,即一般化的形式表示为:理解 LDA 主题模型第191张

    同样的,按照贝叶斯推理的逻辑,可将上述过程整理如下:

  1.  我们要猜测参数理解 LDA 主题模型第192张,其先验分布为理解 LDA 主题模型第193张
  2.  数据Yi落到三个区间理解 LDA 主题模型第175张理解 LDA 主题模型第176张理解 LDA 主题模型第177张 的个数分别为理解 LDA 主题模型第197张,所以理解 LDA 主题模型第198张服从多项分布理解 LDA 主题模型第199张
  3.  在给定了来自数据提供的知识理解 LDA 主题模型第200张后,理解 LDA 主题模型第201张的后验分布变为理解 LDA 主题模型第202张

    上述贝叶斯分析过程的直观表述为:

理解 LDA 主题模型第203张

    令理解 LDA 主题模型第204张,可把理解 LDA 主题模型第205张从整数集合延拓到实数集合,从而得到更一般的表达式如下:

理解 LDA 主题模型第206张

    针对于这种观测到的数据符合多项分布,参数的先验分布和后验分布都是Dirichlet 分布的情况,就是Dirichlet-Multinomial 共轭。换言之,至此已经证明了Dirichlet分布的确就是多项式分布的共轭先验概率分布。
    意味着,如果我们为多项分布的参数p选取的先验分布是Dirichlet分布,那么以p为参数的多项分布用贝叶斯估计得到的后验分布仍然服从Dirichlet分布。
    进一步,一般形式的Dirichlet 分布定义如下:
理解 LDA 主题模型第207张
    而对于给定的理解 LDA 主题模型第208张理解 LDA 主题模型第209张,其多项分布为:
理解 LDA 主题模型第210张
    结论是:Dirichlet分布理解 LDA 主题模型第211张和多项分布理解 LDA 主题模型第212张是共轭关系。

4 主题模型LDA

        在开始下面的旅程之前,先来总结下我们目前所得到的最主要的几个收获:

  • 通过上文的第2.2节,我们知道beta分布是二项式分布的共轭先验概率分布:
    •  “对于非负实数理解 LDA 主题模型第59张理解 LDA 主题模型第60张,我们有如下关系
理解 LDA 主题模型第121张

    其中理解 LDA 主题模型第104张对应的是二项分布理解 LDA 主题模型第118张的计数。针对于这种观测到的数据符合二项分布,参数的先验分布和后验分布都是Beta分布的情况,就是Beta-Binomial 共轭。”

  • 通过上文的3.2节,我们知道狄利克雷分布(Dirichlet分布)是多项式分布的共轭先验概率分布:
    • “ 把理解 LDA 主题模型第205张从整数集合延拓到实数集合,从而得到更一般的表达式如下:

理解 LDA 主题模型第206张

    针对于这种观测到的数据符合多项分布,参数的先验分布和后验分布都是Dirichlet 分布的情况,就是 Dirichlet-Multinomial 共轭。 ”
  • 以及贝叶斯派思考问题的固定模式:
    • 先验分布理解 LDA 主题模型第107张 + 样本信息理解 LDA 主题模型第108张理解 LDA 主题模型第109张 后验分布理解 LDA 主题模型第110张
        上述思考模式意味着,新观察到的样本信息将修正人们以前对事物的认知。换言之,在得到新的样本信息之前,人们对理解 LDA 主题模型第111张的认知是先验分布理解 LDA 主题模型第107张,在得到新的样本信息理解 LDA 主题模型第108张后,人们对理解 LDA 主题模型第111张的认知为理解 LDA 主题模型第110张
  • 顺便提下频率派与贝叶斯派各自不同的思考方式:
    • 频率派把需要推断的参数θ看做是固定的未知常数,即概率理解 LDA 主题模型第229张虽然是未知的,但最起码是确定的一个值,同时,样本X 是随机的,所以频率派重点研究样本空间,大部分的概率计算都是针对样本X 的分布;
    • 而贝叶斯派的观点则截然相反,他们认为待估计的参数理解 LDA 主题模型第229张是随机变量,服从一定的分布,而样本X 是固定的,由于样本是固定的,所以他们重点研究的是参数理解 LDA 主题模型第229张的分布。

    OK,在杀到终极boss——LDA模型之前,再循序渐进理解基础模型:Unigram model、mixture of unigrams model,以及跟LDA最为接近的pLSA模型。

   为了方便描述,首先定义一些变量:

  • 理解 LDA 主题模型第232张表示词,理解 LDA 主题模型第233张表示所有单词的个数(固定值)
  • 理解 LDA 主题模型第234张表示主题,理解 LDA 主题模型第235张是主题的个数(预先给定,固定值)
  • 理解 LDA 主题模型第236张表示语料库,其中的理解 LDA 主题模型第237张是语料库中的文档数(固定值)
  • 理解 LDA 主题模型第238张表示文档,其中的理解 LDA 主题模型第239张表示一个文档中的词数(随机变量)

4.1 各个基础模型

4.1.1 Unigram model

    对于文档理解 LDA 主题模型第238张,用理解 LDA 主题模型第241张表示词理解 LDA 主题模型第242张的先验概率,生成文档理解 LDA 主题模型第243张的概率为:

理解 LDA 主题模型第244张

    其图模型为(图中被涂色的w表示可观测变量,N表示一篇文档中总共N个单词,M表示M篇文档):

理解 LDA 主题模型第245张

    或为:

理解 LDA 主题模型第246张

    unigram model假设文本中的词服从Multinomial分布,而我们已经知道Multinomial分布的先验分布为Dirichlet分布。
    上图中的理解 LDA 主题模型第247张表示在文本中观察到的第n个词,n∈[1,N]表示该文本中一共有N个单词。加上方框表示重复,即一共有N个这样的随机变量理解 LDA 主题模型第247张。其中,p和α是隐含未知变量:

  • p是词服从的Multinomial分布的参数
  • α是Dirichlet分布(即Multinomial分布的先验分布)的参数。

    一般α由经验事先给定,p由观察到的文本中出现的词学习得到,表示文本中出现每个词的概率。

4.1.2 Mixture of unigrams model

    该模型的生成过程是:给某个文档先选择一个主题理解 LDA 主题模型第234张,再根据该主题生成文档,该文档中的所有词都来自一个主题。假设主题有理解 LDA 主题模型第250张,生成文档理解 LDA 主题模型第243张的概率为:
理解 LDA 主题模型第252张
    其图模型为(图中被涂色的w表示可观测变量,未被涂色的z表示未知的隐变量,N表示一篇文档中总共N个单词,M表示M篇文档):
理解 LDA 主题模型第253张

4.2 PLSA模型

    啊哈,长征两万五,经过前面这么长的铺垫,终于快要接近LDA模型了!因为跟LDA模型最为接近的便是下面要阐述的这个pLSA模型,理解了pLSA模型后,到LDA模型也就一步之遥——给pLSA加上贝叶斯框架,便是LDA。

4.2.1 pLSA模型下生成文档

OK,在上面的Mixture of unigrams model中,我们假定一篇文档只有一个主题生成,可实际中,一篇文章往往有多个主题,只是这多个主题各自在文档中出现的概率大小不一样。比如介绍一个国家的文档中,往往会分别从教育、经济、交通等多个主题进行介绍。那么在pLSA中,文档是怎样被生成的呢?
    假设你要写M篇文档,由于一篇文档由各个不同的词组成,所以你需要确定每篇文档里每个位置上的词。
    再假定你一共有K个可选的主题,有V个可选的词,咱们来玩一个扔骰子的游戏。
  • 1. 假设你每写一篇文档会制作一颗K面的“文档-主题”骰子(扔此骰子能得到K个主题中的任意一个),和K个V面的“主题-词项” 骰子(每个骰子对应一个主题,K个骰子对应之前的K个主题,且骰子的每一面对应要选择的词项,V个面对应着V个可选的词)。
    • 比如可令K=3,即制作1个含有3个主题的“文档-主题”骰子,这3个主题可以是:教育、经济、交通。然后令V = 3,制作3个有着3面的“主题-词项”骰子,其中,教育主题骰子的3个面上的词可以是:大学、老师、课程,经济主题骰子的3个面上的词可以是:市场、企业、金融,交通主题骰子的3个面上的词可以是:高铁、汽车、飞机。
  • 2. 每写一个词,先扔该“文档-主题”骰子选择主题,得到主题的结果后,使用和主题结果对应的那颗“主题-词项”骰子,扔该骰子选择要写的词。
    • 先扔“文档-主题”的骰子,假设(以一定的概率)得到的主题是教育,所以下一步便是扔教育主题筛子,(以一定的概率)得到教育主题筛子对应的某个词:大学。
      • 上面这个投骰子产生词的过程简化下便是:“先以一定的概率选取主题,再以一定的概率选取词”。事实上,一开始可供选择的主题有3个:教育、经济、交通,那为何偏偏选取教育这个主题呢?其实是随机选取的,只是这个随机遵循一定的概率分布。比如可能选取教育主题的概率是0.5,选取经济主题的概率是0.3,选取交通主题的概率是0.2,那么这3个主题的概率分布便是{教育:0.5,经济:0.3,交通:0.2},我们把各个主题z在文档d中出现的概率分布称之为主题分布,且是一个多项分布。
      • 同样的,从主题分布中随机抽取出教育主题后,依然面对着3个词:大学、老师、课程,这3个词都可能被选中,但它们被选中的概率也是不一样的。比如大学这个词被选中的概率是0.5,老师这个词被选中的概率是0.3,课程被选中的概率是0.2,那么这3个词的概率分布便是{大学:0.5,老师:0.3,课程:0.2},我们把各个词语w在主题z下出现的概率分布称之为词分布,这个词分布也是一个多项分布。
      • 所以,选主题和选词都是两个随机的过程,先从主题分布{教育:0.5,经济:0.3,交通:0.2}中抽取出主题:教育,然后从该主题对应的词分布{大学:0.5,老师:0.3,课程:0.2}中抽取出词:大学。
理解 LDA 主题模型第254张
  • 3. 最后,你不停的重复扔“文档-主题”骰子和”主题-词项“骰子,重复N次(产生N个词),完成一篇文档,重复这产生一篇文档的方法M次,则完成M篇文档。
    上述过程抽象出来即是PLSA的文档生成模型。在这个过程中,我们并未关注词和词之间的出现顺序,所以pLSA是一种词袋方法。具体说来,该模型假设一组共现(co-occurrence)词项关联着一个隐含的主题类别理解 LDA 主题模型第255张。同时定义:
  • 理解 LDA 主题模型第256张表示海量文档中某篇文档被选中的概率。
  • 理解 LDA 主题模型第257张表示词理解 LDA 主题模型第258张在给定文档理解 LDA 主题模型第259张中出现的概率。
    • 怎么计算得到呢?针对海量文档,对所有文档进行分词后,得到一个词汇列表,这样每篇文档就是一个词语的集合。对于每个词语,用它在文档中出现的次数除以文档中词语总的数目便是它在文档中出现的概率理解 LDA 主题模型第257张
  • 理解 LDA 主题模型第261张表示具体某个主题理解 LDA 主题模型第262张在给定文档理解 LDA 主题模型第259张下出现的概率。
  • 理解 LDA 主题模型第264张表示具体某个词理解 LDA 主题模型第258张在给定主题理解 LDA 主题模型第266张下出现的概率,与主题关系越密切的词,其条件概率理解 LDA 主题模型第264张越大。
    利用上述的第1、3、4个概率,我们便可以按照如下的步骤得到“文档-词项”的生成模型:
  1. 按照概率理解 LDA 主题模型第256张选择一篇文档理解 LDA 主题模型第259张
  2. 选定文档理解 LDA 主题模型第259张后,从主题分布中按照概率理解 LDA 主题模型第261张选择一个隐含的主题类别理解 LDA 主题模型第262张
  3. 选定理解 LDA 主题模型第262张后,从词分布中按照概率理解 LDA 主题模型第264张选择一个词理解 LDA 主题模型第258张
    所以pLSA中生成文档的整个过程便是选定文档生成主题,确定主题生成词。

4.2.1 根据文档反推其主题分布

    反过来,既然文档已经产生,那么如何根据已经产生好的文档反推其主题呢?这个利用看到的文档推断其隐藏的主题(分布)的过程(其实也就是产生文档的逆过程),便是主题建模的目的:自动地发现文档集中的主题(分布)。
    换言之,人类根据文档生成模型写成了各类文章,然后丢给了计算机,相当于计算机看到的是一篇篇已经写好的文章。现在计算机需要根据一篇篇文章中看到的一系列词归纳出当篇文章的主题,进而得出各个主题各自不同的出现概率:主题分布。即文档d和单词w是可被观察到的,但主题z却是隐藏的。
    如下图所示(图中被涂色的d、w表示可观测变量,未被涂色的z表示未知的隐变量,N表示一篇文档中总共N个单词,M表示M篇文档):
理解 LDA 主题模型第276张
    上图中,文档d和词w是我们得到的样本(样本随机,参数虽未知但固定,所以pLSA属于频率派思想。区别于下文要介绍的LDA中:样本固定,参数未知但不固定,是个随机变量,服从一定的分布,所以LDA属于贝叶斯派思想),可观测得到,所以对于任意一篇文档,其理解 LDA 主题模型第257张是已知的。
    从而可以根据大量已知的文档-词项信息理解 LDA 主题模型第257张,训练出文档-主题理解 LDA 主题模型第261张和主题-词项理解 LDA 主题模型第264张,如下公式所示:
理解 LDA 主题模型第281张
    故得到文档中每个词的生成概率为:
理解 LDA 主题模型第282张

    由于理解 LDA 主题模型第256张可事先计算求出,而理解 LDA 主题模型第264张理解 LDA 主题模型第261张未知,所以理解 LDA 主题模型第286张就是我们要估计的参数(值),通俗点说,就是要最大化这个θ。

    用什么方法进行估计呢,常用的参数估计方法有极大似然估计MLE、最大后验证估计MAP、贝叶斯估计等等。因为该待估计的参数中含有隐变量z,所以我们可以考虑EM算法。

4.2.1.1 EM算法的简单介绍

    EM算法,全称为Expectation-maximization algorithm,为期望最大算法,其基本思想是:首先随机选取一个值去初始化待估计的值理解 LDA 主题模型第287张,然后不断迭代寻找更优的理解 LDA 主题模型第288张使得其似然函数likelihood 理解 LDA 主题模型第289张比原来的理解 LDA 主题模型第290张要大。换言之,假定现在得到了理解 LDA 主题模型第291张,想求理解 LDA 主题模型第292张,使得

理解 LDA 主题模型第293张

    EM的关键便是要找到理解 LDA 主题模型第294张的一个下界理解 LDA 主题模型第295张(注:理解 LDA 主题模型第296张,其中,X表示已经观察到的随机变量),然后不断最大化这个下界,通过不断求解下界理解 LDA 主题模型第295张的极大化,从而逼近要求解的似然函数理解 LDA 主题模型第294张

    所以EM算法的一般步骤为:

  • 1. 随机选取或者根据先验知识初始化理解 LDA 主题模型第287张
  • 2. 不断迭代下述两步
    • ①给出当前的参数估计理解 LDA 主题模型第291张,计算似然函数理解 LDA 主题模型第294张的下界理解 LDA 主题模型第295张
    • ②重新估计参数θ,即求理解 LDA 主题模型第292张,使得理解 LDA 主题模型第304张
  • 3. 上述第二步后,如果理解 LDA 主题模型第294张收敛(即理解 LDA 主题模型第295张收敛)则退出算法,否则继续回到第二步。

    上述过程好比在二维平面上,有两条不相交的曲线,一条曲线在上(简称上曲线理解 LDA 主题模型第307张),一条曲线在下(简称下曲线理解 LDA 主题模型第308张),下曲线为上曲线的下界。现在对上曲线未知,只已知下曲线,为了求解上曲线的最高点,我们试着不断增大下曲线,使得下曲线不断逼近上曲线,下曲线在某一个点达到局部最大值并与上曲线在这点的值相等,记录下这个值,然后继续增大下曲线,寻找下曲线上与上曲线上相等的值,迭代到理解 LDA 主题模型第294张收敛(即理解 LDA 主题模型第295张收敛)停止,从而利用当前下曲线上的局部最大值当作上曲线的全局最大值(换言之,EM算法不保证一定能找到全局最优值)。如下图所示:

理解 LDA 主题模型第311张

    以下是详细介绍。

    假定有训练集理解 LDA 主题模型第312张,包含m个独立样本,希望从中找到该组数据的模型p(x,z)的参数。   

    然后通过极大似然估计建立目标函数--对数似然函数:

理解 LDA 主题模型第313张

    这里,z是隐随机变量,直接找到参数的估计是很困难的。我们的策略是建立理解 LDA 主题模型第314张的下界,并且求该下界的最大值;重复这个过程,直到收敛到局部最大值。

    令Qi是z的某一个分布,Qi≥0,且结合Jensen不等式,有:

理解 LDA 主题模型第315张

    为了寻找尽量紧的下界,我们可以让使上述等号成立,而若要让等号成立的条件则是:

理解 LDA 主题模型第316张

    换言之,有以下式子成立:理解 LDA 主题模型第317张,且由于有:理解 LDA 主题模型第318张

    所以可得:

理解 LDA 主题模型第319张

    最终得到EM算法的整体框架如下:

理解 LDA 主题模型第320张

    OK,EM算法还会在本博客后面的博文中具体阐述。接下来,回到pLSA参数的估计问题上。

4.2.1.2 EM算法估计pLSA的两未知参数

    首先尝试从矩阵的角度来描述待估计的两个未知变量理解 LDA 主题模型第321张理解 LDA 主题模型第322张

  • 假定用理解 LDA 主题模型第323张表示词表理解 LDA 主题模型第324张在主题理解 LDA 主题模型第325张上的一个多项分布,则理解 LDA 主题模型第326张可以表示成一个向量,每个元素理解 LDA 主题模型第327张表示词项理解 LDA 主题模型第328张出现在主题理解 LDA 主题模型第325张中的概率,即

理解 LDA 主题模型第330张

  • 理解 LDA 主题模型第331张表示所有主题理解 LDA 主题模型第332张在文档理解 LDA 主题模型第333张上的一个多项分布,则理解 LDA 主题模型第334张可以表示成一个向量,每个元素理解 LDA 主题模型第335张表示主题理解 LDA 主题模型第325张出现在文档理解 LDA 主题模型第333张中的概率,即

理解 LDA 主题模型第338张

    这样,巧妙的把理解 LDA 主题模型第321张理解 LDA 主题模型第322张转换成了两个矩阵。换言之,最终我们要求解的参数是这两个矩阵:

理解 LDA 主题模型第341张

理解 LDA 主题模型第342张

    由于词和词之间是相互独立的,所以整篇文档N个词的分布为:

理解 LDA 主题模型第343张

    再由于文档和文档之间也是相互独立的,所以整个语料库中词的分布为(整个语料库M篇文档,每篇文档N个词):

理解 LDA 主题模型第344张

    其中,理解 LDA 主题模型第345张表示词项理解 LDA 主题模型第328张在文档理解 LDA 主题模型第333张中的词频,理解 LDA 主题模型第348张表示文档di中词的总数,显然有理解 LDA 主题模型第349张
    从而得到整个语料库的词分布的对数似然函数(下述公式中有个小错误,正确的应该是:N为M,M为N):

理解 LDA 主题模型第350张

    现在,我们需要最大化上述这个对数似然函数来求解参数理解 LDA 主题模型第327张理解 LDA 主题模型第335张。对于这种含有隐变量的最大似然估计,可以使用EM算法。EM算法,分为两个步骤:先E-step,后M-step。

  • E-step:假定参数已知,计算此时隐变量的后验概率。
    利用贝叶斯法则,可以得到:

理解 LDA 主题模型第353张

  • M-step:带入隐变量的后验概率,最大化样本分布的对数似然函数,求解相应的参数。
    观察之前得到的对数似然函数理解 LDA 主题模型第354张的结果,由于文档长度理解 LDA 主题模型第355张可以单独计算,所以去掉它不影响最大化似然函数。此外,根据E-step的计算结果,把 理解 LDA 主题模型第356张代入理解 LDA 主题模型第354张,于是我们只要最大化下面这个函数 理解 LDA 主题模型第358张 即可(下述公式中有个小错误,正确的应该是:N为M,M为N):

理解 LDA 主题模型第359张

    这是一个多元函数求极值问题,并且已知有如下约束条件(下述公式中有个小错误,正确的应该是:M为N):

理解 LDA 主题模型第360张

    熟悉凸优化的朋友应该知道,一般处理这种带有约束条件的极值问题,常用的方法便是拉格朗日乘数法,即通过引入拉格朗日乘子将约束条件和多元(目标)函数融合到一起,转化为无约束条件的极值问题。

    这里我们引入两个拉格朗日乘子理解 LDA 主题模型第361张理解 LDA 主题模型第362张,从而写出拉格朗日函数(下述公式中有个小错误,正确的应该是:N为M,M为N):

理解 LDA 主题模型第363张

    因为我们要求解的参数是理解 LDA 主题模型第327张理解 LDA 主题模型第335张,所以分别对理解 LDA 主题模型第327张理解 LDA 主题模型第335张求偏导,然后令偏导结果等于0,得到(下述公式中有个小错误,正确的应该是:N为M,M为N):

理解 LDA 主题模型第368张

    消去拉格朗日乘子,最终可估计出参数理解 LDA 主题模型第327张理解 LDA 主题模型第335张(下述公式中有个小错误,正确的应该是:N为M,M为N):

理解 LDA 主题模型第371张

    综上,在pLSA中:

  1. 由于理解 LDA 主题模型第264张理解 LDA 主题模型第261张未知,所以我们用EM算法去估计理解 LDA 主题模型第286张这个参数的值。
  2. 而后,用理解 LDA 主题模型第327张表示词项理解 LDA 主题模型第328张出现在主题理解 LDA 主题模型第325张中的概率,即理解 LDA 主题模型第378张,用理解 LDA 主题模型第335张表示主题理解 LDA 主题模型第325张出现在文档理解 LDA 主题模型第333张中的概率,即理解 LDA 主题模型第382张,从而把理解 LDA 主题模型第321张转换成了“主题-词项”矩阵Φ(主题生成词),把理解 LDA 主题模型第322张转换成了“文档-主题”矩阵Θ(文档生成主题)。
  3. 最终求解出理解 LDA 主题模型第327张理解 LDA 主题模型第335张

4.3 LDA模型

    事实上,理解了pLSA模型,也就差不多快理解了LDA模型,因为LDA就是在pLSA的基础上加层贝叶斯框架,即LDA就是pLSA的贝叶斯版本(正因为LDA被贝叶斯化了,所以才需要考虑历史先验知识,才加的两个先验参数)。

4.3.1 pLSA跟LDA的对比:生成文档与参数估计

    在pLSA模型中,我们按照如下的步骤得到“文档-词项”的生成模型:

  1. 按照概率理解 LDA 主题模型第256张选择一篇文档理解 LDA 主题模型第259张
  2. 选定文档理解 LDA 主题模型第259张后,确定文章的主题分布
  3. 从主题分布中按照概率理解 LDA 主题模型第261张选择一个隐含的主题类别理解 LDA 主题模型第262张
  4. 选定理解 LDA 主题模型第262张后,确定主题下的词分布
  5. 从词分布中按照概率理解 LDA 主题模型第264张选择一个词理解 LDA 主题模型第258张 ”

    下面,咱们对比下本文开头所述的LDA模型中一篇文档生成的方式是怎样的:

  1. 按照先验概率理解 LDA 主题模型第256张选择一篇文档理解 LDA 主题模型第259张
  2. 从狄利克雷分布(即Dirichlet分布)理解 LDA 主题模型第3张中取样生成文档 理解 LDA 主题模型第259张的主题分布理解 LDA 主题模型第4张,换言之,主题分布理解 LDA 主题模型第4张由超参数为理解 LDA 主题模型第3张的Dirichlet分布生成
  3. 从主题的多项式分布理解 LDA 主题模型第4张中取样生成文档理解 LDA 主题模型第259张第 j 个词的主题理解 LDA 主题模型第6张
  4. 从狄利克雷分布(即Dirichlet分布)理解 LDA 主题模型第7张中取样生成主题理解 LDA 主题模型第6张对应的词语分布理解 LDA 主题模型第9张,换言之,词语分布理解 LDA 主题模型第9张由参数为理解 LDA 主题模型第7张的Dirichlet分布生成
  5. 从词语的多项式分布理解 LDA 主题模型第9张中采样最终生成词语理解 LDA 主题模型第11张 ”

    从上面两个过程可以看出,LDA在PLSA的基础上,为主题分布和词分布分别加了两个Dirichlet先验。

    继续拿之前讲解PLSA的例子进行具体说明。如前所述,在PLSA中,选主题和选词都是两个随机的过程,先从主题分布{教育:0.5,经济:0.3,交通:0.2}中抽取出主题:教育,然后从该主题对应的词分布{大学:0.5,老师:0.3,课程:0.2}中抽取出词:大学。

理解 LDA 主题模型第412张
    而在LDA中,选主题和选词依然都是两个随机的过程,依然可能是先从主题分布{教育:0.5,经济:0.3,交通:0.2}中抽取出主题:教育,然后再从该主题对应的词分布{大学:0.5,老师:0.3,课程:0.2}中抽取出词:大学。
    那PLSA跟LDA的区别在于什么地方呢?区别就在于:
  • PLSA中,主题分布和词分布是唯一确定的,能明确的指出主题分布可能就是{教育:0.5,经济:0.3,交通:0.2},词分布可能就是{大学:0.5,老师:0.3,课程:0.2}。
  • 但在LDA中,主题分布和词分布不再唯一确定不变,即无法确切给出。例如主题分布可能是{教育:0.5,经济:0.3,交通:0.2},也可能是{教育:0.6,经济:0.2,交通:0.2},到底是哪个我们不再确定(即不知道),因为它是随机的可变化的。但再怎么变化,也依然服从一定的分布,即主题分布跟词分布由Dirichlet先验随机确定。
   看到这,你可能凌乱了,你说面对多个主题或词,各个主题或词被抽中的概率不一样,所以抽取主题或词是随机抽取,还好理解。但现在你说主题分布和词分布本身也都是不确定的,这是怎么回事?没办法,谁叫Blei等人“强行”给PLSA安了个贝叶斯框架呢,正因为LDA是PLSA的贝叶斯版本,所以主题分布跟词分布本身由先验知识随机给定。
    进一步,你会发现:
  • pLSA中,主题分布和词分布确定后,以一定的概率(理解 LDA 主题模型第322张理解 LDA 主题模型第321张)分别选取具体的主题和词项,生成好文档。而后根据生成好的文档反推其主题分布、词分布时,最终用EM算法(极大似然估计思想)求解出了两个未知但固定的参数的值:理解 LDA 主题模型第327张(由理解 LDA 主题模型第321张转换而来)和理解 LDA 主题模型第335张(由理解 LDA 主题模型第322张转换而来)。
    • 文档d产生主题z的概率,主题z产生单词w的概率都是两个固定的值。
      • 举个文档d产生主题z的例子。给定一篇文档d,主题分布是一定的,比如{ P(zi|d), i = 1,2,3 }可能就是{0.4,0.5,0.1},表示z1、z2、z3,这3个主题被文档d选中的概率都是个固定的值:P(z1|d) = 0.4、P(z2|d) = 0.5、P(z3|d) = 0.1,如下图所示(图截取自沈博PPT上):
      • 理解 LDA 主题模型第419张
  • 但在贝叶斯框架下的LDA中,我们不再认为主题分布(各个主题在文档中出现的概率分布)和词分布(各个词语在某个主题下出现的概率分布)是唯一确定的(而是随机变量),而是有很多种可能。但一篇文档总得对应一个主题分布和一个词分布吧,怎么办呢?LDA为它们弄了两个Dirichlet先验参数,这个Dirichlet先验为某篇文档随机抽取出某个主题分布和词分布。
    • 文档d产生主题z(准确的说,其实是Dirichlet先验为文档d生成主题分布Θ,然后根据主题分布Θ产生主题z)的概率,主题z产生单词w的概率都不再是某两个确定的值,而是随机变量。
      • 还是再次举下文档d具体产生主题z的例子。给定一篇文档d,现在有多个主题z1、z2、z3,它们的主题分布{ P(zi|d), i = 1,2,3 }可能是{0.4,0.5,0.1},也可能是{0.2,0.2,0.6},即这些主题被d选中的概率都不再认为是确定的值,可能是P(z1|d) = 0.4、P(z2|d) = 0.5、P(z3|d) = 0.1,也有可能是P(z1|d) = 0.2、P(z2|d) = 0.2、P(z3|d) = 0.6等等,而主题分布到底是哪个取值集合我们不确定(为什么?这就是贝叶斯派的核心思想,把未知参数当作是随机变量,不再认为是某一个确定的值),但其先验分布是dirichlet 分布,所以可以从无穷多个主题分布中按照dirichlet 先验随机抽取出某个主题分布出来。如下图所示(图截取自沈博PPT上):

理解 LDA 主题模型第420张

    换言之,LDA在pLSA的基础上给这两参数(理解 LDA 主题模型第322张理解 LDA 主题模型第321张)加了两个先验分布的参数(贝叶斯化):一个主题分布的先验分布Dirichlet分布理解 LDA 主题模型第3张,和一个词语分布的先验分布Dirichlet分布理解 LDA 主题模型第7张
    综上,LDA真的只是pLSA的贝叶斯版本,文档生成后,两者都要根据文档去推断其主题分布和词语分布(即两者本质都是为了估计给定文档生成主题,给定主题生成词语的概率),只是用的参数推断方法不同,在pLSA中用极大似然估计的思想去推断两未知的固定参数,而LDA则把这两参数弄成随机变量,且加入dirichlet先验。
    所以,pLSA跟LDA的本质区别就在于它们去估计未知参数所采用的思想不同,前者用的是频率派思想,后者用的是贝叶斯派思想。
    好比,我去一朋友家:
  • 按照频率派的思想,我估计他在家的概率是1/2,不在家的概率也是1/2,是个定值。
  • 而按照贝叶斯派的思想,他在家不在家的概率不再认为是个定值1/2,而是随机变量。比如按照我们的经验(比如当天周末),猜测他在家的概率是0.6,但这个0.6不是说就是完全确定的,也有可能是0.7。如此,贝叶斯派没法确切给出参数的确定值(0.3,0.4,0.6,0.7,0.8,0.9都有可能),但至少明白在哪个范围或哪些取值(0.6,0.7,0.8,0.9)更有可能,哪个范围或哪些取值(0.3,0.4) 不太可能。进一步,贝叶斯估计中,参数的多个估计值服从一定的先验分布,而后根据实践获得的数据(例如周末不断跑他家),不断修正之前的参数估计,从先验分布慢慢过渡到后验分布。
    OK,相信已经解释清楚了。如果是在机器学习班上face-to-face,更好解释和沟通。

4.3.2 LDA生成文档过程的进一步理解

    上面说,LDA中,主题分布 —— 比如{ P(zi), i =1,2,3 }等于{0.4,0.5,0.1}或{0.2,0.2,0.6} —— 是由dirichlet先验给定的,不是根据文档产生的。所以,LDA生成文档的过程中,先从dirichlet先验中“随机”抽取出主题分布,然后从主题分布中“随机”抽取出主题,最后从确定后的主题对应的词分布中“随机”抽取出词。
    那么,dirichlet先验到底是如何“随机”抽取主题分布的呢?
    事实上,从dirichlet分布中随机抽取主题分布,这个过程不是完全随机的。为了说清楚这个问题,咱们得回顾下dirichlet分布。事实上,如果我们取3个事件的话,可以建立一个三维坐标系,类似xyz三维坐标系,这里,我们把3个坐标轴弄为p1、p2、p3,如下图所示:
理解 LDA 主题模型第425张

 在这个三维坐标轴所划分的空间里,每一个坐标点(p1,p2,p3)就对应着一个主题分布,且某一个点(p1,p2,p3)的大小表示3个主题z1、z2、z3出现的概率大小(因为各个主题出现的概率和为1,所以p1+p2+p3 = 1,且p1、p2、p3这3个点最大取值为1)。比如(p1,p2,p3) = (0.4,0.5,0.1)便对应着主题分布{ P(zi), i =1,2,3 } = {0.4,0.5,0.1}。

    可以想象到,空间里有很多这样的点(p1,p2,p3),意味着有很多的主题分布可供选择,那dirichlet分布如何选择主题分布呢?把上面的斜三角形放倒,映射到底面的平面上,便得到如下所示的一些彩图(3个彩图中,每一个点对应一个主题分布,高度代表某个主题分布被dirichlet分布选中的概率,且选不同的理解 LDA 主题模型第59张,dirichlet 分布会偏向不同的主题分布):

理解 LDA 主题模型第427张

    我们来看上图中左边这个图,高度就是代表dirichlet分布选取某个坐标点(p1,p2,p3)(这个点就是一个主题分布)的概率大小。如下图所示,平面投影三角形上的三个顶点上的点:A=(0.9,0.05,0.05)、B=(0.05,0.9,0.05)、C=(0.05,0.05,0.9)各自对应的主题分布被dirichlet分布选中的概率值很大,而平面三角形内部的两个点:D、E对应的主题分布被dirichlet分布选中的概率值很小。
理解 LDA 主题模型第428张理解 LDA 主题模型第429张
    所以虽然说dirichlet分布是随机选取任意一个主题分布的,但依然存在着P(A) = P(B) = P(C) >> P(D) = P(E),即dirichlet分布还是“偏爱”某些主题分布的。至于dirichlet分布的参数理解 LDA 主题模型第59张是如何决定dirichlet分布的形状的,可以从dirichlet分布的定义和公式思考。
    此外,就算说“随机”选主题也是根据主题分布来“随机”选取,这里的随机不是完全随机的意思,而是根据各个主题出现的概率值大小来抽取。比如当dirichlet先验为文档d生成的主题分布{ P(zi), i =1,2,3 }是{0.4,0.5,0.1}时,那么主题z2在文档d中出现的概率便是0.5。所以,从主题分布中抽取主题,这个过程也不是完全随机的,而是按照各个主题出现的概率值大小进行抽取。

4.3.3 pLSA跟LDA的概率图对比

    接下来,对比下LDA跟pLSA的概率模型图模型,左图是pLSA,右图是LDA(右图不太规范,z跟w都得是小写, 其中,阴影圆圈表示可观测的变量,非阴影圆圈表示隐变量,箭头表示两变量间的条件依赖性conditional dependency,方框表示重复抽样,方框右下角的数字代表重复抽样的次数):
理解 LDA 主题模型第431张理解 LDA 主题模型第432张
    对应到上面右图的LDA,只有W / w是观察到的变量,其他都是隐变量或者参数,其中,Φ表示词分布,Θ表示主题分布,理解 LDA 主题模型第3张 是主题分布Θ的先验分布(即Dirichlet 分布)的参数,理解 LDA 主题模型第7张是词分布Φ的先验分布(即Dirichlet 分布)的参数,N表示文档的单词总数,M表示文档的总数。
    所以,对于一篇文档d中的每一个单词,LDA根据先验知识理解 LDA 主题模型第3张确定某篇文档的主题分布θ,然后从该文档所对应的多项分布(主题分布)θ中抽取一个主题z,接着根据先验知识理解 LDA 主题模型第7张确定当前主题的词语分布ϕ,然后从主题z所对应的多项分布(词分布)ϕ中抽取一个单词w。然后将这个过程重复N次,就产生了文档d。
    换言之:
  1. 假定语料库中共有M篇文章,每篇文章下的Topic的主题分布是一个从参数为理解 LDA 主题模型第3张的Dirichlet先验分布中采样得到的Multinomial分布,每个Topic下的词分布是一个从参数为理解 LDA 主题模型第7张的Dirichlet先验分布中采样得到的Multinomial分布。
  2. 对于某篇文章中的第n个词,首先从该文章中出现的每个主题的Multinomial分布(主题分布)中选择或采样一个主题,然后再在这个主题对应的词的Multinomial分布(词分布)中选择或采样一个词。不断重复这个随机生成过程,直到M篇文章全部生成完成。
    综上,M 篇文档会对应于 M 个独立的 Dirichlet-Multinomial 共轭结构,K 个 topic 会对应于 K 个独立的 Dirichlet-Multinomial 共轭结构。
  • 其中,理解 LDA 主题模型第3张→θ→z 表示生成文档中的所有词对应的主题,显然 理解 LDA 主题模型第3张→θ 对应的是Dirichlet 分布,θ→z 对应的是 Multinomial 分布,所以整体是一个 Dirichlet-Multinomial 共轭结构,如下图所示:
理解 LDA 主题模型第441张
  • 类似的,理解 LDA 主题模型第7张→φ→w,容易看出, 此时β→φ对应的是 Dirichlet 分布, φ→w 对应的是 Multinomial 分布, 所以整体也是一个Dirichlet-Multinomial 共轭结构,如下图所示:
理解 LDA 主题模型第443张

4.3.4 pLSA跟LDA参数估计方法的对比

    上面对比了pLSA跟LDA生成文档的不同过程,下面,咱们反过来,假定文档已经产生,反推其主题分布。那么,它们估计未知参数所采用的方法又有什么不同呢?
  • 在pLSA中,我们使用EM算法去估计“主题-词项”矩阵Φ(由理解 LDA 主题模型第321张转换得到)和“文档-主题”矩阵Θ(由理解 LDA 主题模型第322张转换得到)这两个参数,而且这两参数都是个固定的值,只是未知,使用的思想其实就是极大似然估计MLE。
  • 而在LDA中,估计Φ、Θ这两未知参数可以用变分(Variational inference)-EM算法,也可以用gibbs采样,前者的思想是最大后验估计MAP(MAP与MLE类似,都把未知参数当作固定的值),后者的思想是贝叶斯估计。贝叶斯估计是对MAP的扩展,但它与MAP有着本质的不同,即贝叶斯估计把待估计的参数看作是服从某种先验分布的随机变量。
    • 关于贝叶斯估计再举个例子。假设中国的大学只有两种:理工科和文科,这两种学校数量的比例是1:1,其中,理工科男女比例7:1,文科男女比例1:7。某天你被外星人随机扔到一个校园,问你该学校可能的男女比例是多少?然后,你实际到该校园里逛了一圈,看到的5个人全是男的,这时候再次问你这个校园的男女比例是多少?
  1. 因为刚开始时,有先验知识,所以该学校的男女比例要么是7:1,要么是1:7,即P(比例为7:1) = 1/2,P(比例为1:7) = 1/2。
  2. 然后看到5个男生后重新估计男女比例,其实就是求P(比例7:1|5个男生)= ?,P(比例1:7|5个男生) = ?
  3. 用贝叶斯公式理解 LDA 主题模型第446张,可得:P(比例7:1|5个男生) = P(比例7:1)*P(5个男生|比例7:1) / P(5个男生),P(5个男生)是5个男生的先验概率,与学校无关,所以是个常数;类似的,P(比例1:7|5个男生) = P((比例1:7)*P(5个男生|比例1:7)/P(5个男生)。
  4. 最后将上述两个等式比一下,可得:P(比例7:1|5个男生)/P(比例1:7|5个男生) = {P((比例7:1)*P(5个男生|比例7:1)} / { P(比例1:7)*P(5个男生|比例1:7)}。
    由于LDA把要估计的主题分布和词分布看作是其先验分布是Dirichlet分布的随机变量,所以,在LDA这个估计主题分布、词分布的过程中,它们的先验分布(即Dirichlet分布)事先由人为给定,那么LDA就是要去求它们的后验分布(LDA中可用gibbs采样去求解它们的后验分布,得到期望理解 LDA 主题模型第447张理解 LDA 主题模型第448张)!
   此外,不厌其烦的再插一句,在LDA中,主题分布和词分布本身都是多项分布,而由上文3.2节可知“Dirichlet分布是多项式分布的共轭先验概率分布”,因此选择Dirichlet 分布作为它们的共轭先验分布。意味着为多项分布的参数p选取的先验分布是Dirichlet分布,那么以p为参数的多项分布用贝叶斯估计得到的后验分布仍然是Dirichlet分布。

4.3.5 LDA参数估计:Gibbs采样

    理清了LDA中的物理过程,下面咱们来看下如何学习估计。

    类似于pLSA,LDA的原始论文中是用的变分-EM算法估计未知参数,后来发现另一种估计LDA未知参数的方法更好,这种方法就是:Gibbs Sampling,有时叫Gibbs采样或Gibbs抽样,都一个意思。Gibbs抽样是马尔可夫链蒙特卡尔理论(MCMC)中用来获取一系列近似等于指定多维概率分布(比如2个或者多个随机变量的联合概率分布)观察样本的算法。

    OK,给定一个文档集合,w是可以观察到的已知变量,理解 LDA 主题模型第3张理解 LDA 主题模型第7张是根据经验给定的先验参数,其他的变量z,θ和φ都是未知的隐含变量,需要根据观察到的变量来学习估计的。根据LDA的图模型,可以写出所有变量的联合分布:

理解 LDA 主题模型第451张

    注:上述公式中及下文中,理解 LDA 主题模型第452张等价上文中定义的理解 LDA 主题模型第6张理解 LDA 主题模型第454张等价于上文中定义的理解 LDA 主题模型第11张理解 LDA 主题模型第456张等价于上文中定义的理解 LDA 主题模型第9张,等价于上文中定义的理解 LDA 主题模型第4张

    因为理解 LDA 主题模型第3张产生主题分布θ,主题分布θ确定具体主题,且理解 LDA 主题模型第7张产生词分布φ、词分布φ确定具体词,所以上述式子等价于下述式子所表达的联合概率分布理解 LDA 主题模型第461张

理解 LDA 主题模型第462张

    其中,第一项因子理解 LDA 主题模型第463张表示的是根据确定的主题理解 LDA 主题模型第464张和词分布的先验分布参数理解 LDA 主题模型第7张采样词的过程,第二项因子理解 LDA 主题模型第466张是根据主题分布的先验分布参数理解 LDA 主题模型第3张采样主题的过程,这两项因子是需要计算的两个未知参数。

    由于这两个过程是独立的,所以下面可以分别处理,各个击破。

    第一个因子理解 LDA 主题模型第463张,可以根据确定的主题理解 LDA 主题模型第464张和从先验分布理解 LDA 主题模型第7张取样得到的词分布Φ产生:

理解 LDA 主题模型第471张

    由于样本中的词服从参数为主题理解 LDA 主题模型第472张的独立多项分布,这意味着可以把上面对词的乘积分解成分别对主题和对词的两层乘积:

理解 LDA 主题模型第473张

    其中,理解 LDA 主题模型第474张是词 t 在主题 k 中出现的次数。

    回到第一个因子上来。目标分布理解 LDA 主题模型第475张需要对词分布Φ积分,且结合我们之前在3.1节定义的Dirichlet 分布的归一化系数理解 LDA 主题模型第153张的公式

理解 LDA 主题模型第477张

    可得:

理解 LDA 主题模型第478张

    这个结果可以看作K个Dirichlet-Multinomial模型的乘积。
    现在开始求第二个因子理解 LDA 主题模型第466张。类似于理解 LDA 主题模型第480张的步骤,先写出条件分布,然后分解成两部分的乘积:

理解 LDA 主题模型第481张

    其中,理解 LDA 主题模型第259张 表示的单词 i 所属的文档,理解 LDA 主题模型第483张是主题 k 在文章 m 中出现的次数。

    对主题分布Θ积分可得:

理解 LDA 主题模型第484张

    综合第一个因子和第二个因子的结果,得到理解 LDA 主题模型第461张的联合分布结果为:

理解 LDA 主题模型第486张

    接下来,有了联合分布理解 LDA 主题模型第461张,咱们便可以通过联合分布来计算在给定可观测变量 w 下的隐变量 z 的条件分布(后验分布)理解 LDA 主题模型第488张来进行贝叶斯分析。
    换言之,有了这个联合分布后,要求解第m篇文档中的第n个词(下标为理解 LDA 主题模型第489张的词)的全部条件概率就好求了。
    先定义几个变量。理解 LDA 主题模型第490张表示除去理解 LDA 主题模型第491张的词,理解 LDA 主题模型第492张理解 LDA 主题模型第493张
    然后,排除当前词的主题分配,即根据其他词的主题分配和观察到的单词来计算当前词主题的概率公式为:
理解 LDA 主题模型第494张
    勘误:考虑到理解 LDA 主题模型第495张,所以上述公式的第二行的分子,非p(w,z) *p(z),而是p(w|z)*p(z)。
    且有:
理解 LDA 主题模型第496张
    最后一步,便是根据Markov链的状态理解 LDA 主题模型第472张获取主题分布的参数Θ和词分布的参数Φ。
    换言之根据贝叶斯法则和Dirichlet先验,以及上文中得到的理解 LDA 主题模型第498张理解 LDA 主题模型第499张各自被分解成两部分乘积的结果,可以计算得到每个文档上Topic的后验分布和每个Topic下的词的后验分布分别如下(据上文可知:其后验分布跟它们的先验分布一样,也都是Dirichlet 分布):
理解 LDA 主题模型第500张
    其中,理解 LDA 主题模型第501张是构成文档m的主题数向量,理解 LDA 主题模型第502张是构成主题k的词项数向量。
    此外,别忘了上文中2.4节所述的Dirichlet的一个性质,如下:

     “ 如果理解 LDA 主题模型第146张,同样可以证明有下述结论成立:

理解 LDA 主题模型第147张

    即:如果理解 LDA 主题模型第505张,则理解 LDA 主题模型第506张中的任一元素理解 LDA 主题模型第507张的期望是:
理解 LDA 主题模型第508张
    可以看出,超参数理解 LDA 主题模型第509张的直观意义就是事件先验的伪计数(prior pseudo-count)。 ”
    所以,最终求解的Dirichlet 分布期望为:
理解 LDA 主题模型第510张
    然后将理解 LDA 主题模型第511张理解 LDA 主题模型第512张的结果代入之前得到的理解 LDA 主题模型第513张的结果中,可得:
理解 LDA 主题模型第514张
    仔细观察上述结果,可以发现,式子的右半部分便是理解 LDA 主题模型第515张,这个概率的值对应着理解 LDA 主题模型第516张的路径概率。如此,K 个topic 对应着K条路径,Gibbs Sampling 便在这K 条路径中进行采样,如下图所示:
理解 LDA 主题模型第517张
    何等奇妙,就这样,Gibbs Sampling通过求解出主题分布和词分布的后验分布,从而成功解决主题分布和词分布这两参数未知的问题。

5 读者微评

    本文发表后,部分热心的读者在微博上分享了他们自己理解LDA的心得,也欢迎更多朋友分享你的理解心得(比如评论在本文下,或评论在微博上),从而在分享、讨论的过程中让更多人可以更好的理解:
  1. @SiNZeRo:lda 如果用em就是 map估计了. lda本意是要去找后验分布 然后拿后验分布做bayesian分析. 比如theta的期望 . 而不是把先验作为正则化引入。最后一点gibbs sampling其实不是求解的过程 是去explore后验分布 去采样 用于求期望.
  2. @研究者July:好问题好建议,这几天我陆续完善下!//@帅广应s:LDA这个东西该怎么用?可以用在哪些地方?还有就是Gibbs抽样的原理是什么?代码怎么实现?如果用EM来做,代码怎么实现? LDA模型的变形和优化有哪些?LDA不适用于解决哪类的问题?总之,不明白怎么用,参数怎么调优? 
  3. @xiangnanhe:写的很好,4.1.3节中的那两个图很赞,非常直观的理解了LDA模型加了先验之后在学参数的时候要比PLSI更灵活;PLSI在学参数的过程中比较容易陷入local minimum然后overfitting。
  4. @asker2:无论是pLSA中,还是LDA中,主题分布和词分布本身是固定的存在,但都未知。pLSA跟LDA的区别在于,去探索这两个未知参数的方法或思想不一样。pLSA是求到一个能拟合文本最好的参数(分布),这个值就认为是真实的参数。但LDA认为,其实我们没法去完全求解出主题分布、词分布到底是什么参数,我们只能把它们当成随机变量,通过缩小其方差(变化度)来尽量让这个随机变量变得更“确切”。换言之,我们不再求主题分布、词分布的具体值,而是通过这些分布生成的观测值(即实际文本)来反推分布的参数的范围,即在什么范围比较可能,在什么范围不太可能。所以,其实这就是一种贝叶斯分析的思想,虽然无法给出真实值具体是多少,但可以按照经验给一个相对合理的真实值服从的先验分布,然后从先验出发求解其后验分布。
  5. ..

6 参考文献与推荐阅读

  1. Blei, David M.; Ng, Andrew Y.; Jordan, Michael I. Latent Dirichlet allocation(LDA原始论文):http://www.jmlr.org/papers/volume3/blei03a/blei03a.pdf
  2. Blei. Probabilistic Topic Models:http://www.cs.princeton.edu/~blei/papers/Blei2012.pdf,一网友的翻译:http://www.cnblogs.com/siegfang/archive/2013/01/30/2882391.html
  3. 一堆wikipedia,比如隐含狄利克雷分布LDA的wiki:http://zh.wikipedia.org/wiki/%E9%9A%90%E5%90%AB%E7%8B%84%E5%88%A9%E5%85%8B%E9%9B%B7%E5%88%86%E5%B8%83,狄利克雷分布的wiki:http://zh.wikipedia.org/wiki/%E7%8B%84%E5%88%A9%E5%85%8B%E9%9B%B7%E5%88%86%E5%B8%83
  4. 从贝叶斯方法谈到贝叶斯网络 ;
  5. rickjin的LDA数学八卦(力荐,本文部分图片和公式来自于此文档)网页版:http://www.flickering.cn/tag/lda/,PDF版:http://emma.memect.com/t/9756da9a47744de993d8df13a26e04e38286c9bc1c5a0d2b259c4564c6613298/LDA
  6. Thomas Hofmann.Probabilistic Latent Semantic Indexing(pLSA原始论文):http://cs.brown.edu/~th/papers/Hofmann-SIGIR99.pdf
  7. Gregor Heinrich.Parameter estimation for text analysis(关于Gibbs 采样最精准细致的论述):http://www.arbylon.net/publications/text-est.pdf
  8. Probabilistic latent semantic analysis (pLSA):http://blog.tomtung.com/2011/10/plsa/http://blog.tomtung.com/2011/10/plsa/
  9. 《概率论与数理统计教程第二版 茆诗松等人著》,如果忘了相关统计分布,建议复习此书或此文第二部分;
  10. 支持向量机通俗导论:理解SVM的三层境界》,第二部分关于拉格朗日函数的讨论;
  11. 机器学习班第11次课上,邹博讲EM & GMM的PPT:http://pan.baidu.com/s/1i3zgmzF
  12. 机器学习班第12次课上,邹博讲主题模型LDA的PPT:http://pan.baidu.com/s/1jGghtQm
  13. 主题模型之pLSA:http://blog.jqian.net/post/plsa.html
  14. 主题模型之LDA:http://blog.jqian.net/post/lda.html
  15. 搜索背后的奥秘——浅谈语义主题计算:http://www.semgle.com/search-engine-algorithms-mystery-behind-search-on-the-calculation-of-semantic-topic
  16. LDA的EM推导:http://www.cnblogs.com/hebin/archive/2013/04/25/3043575.html
  17. Machine Learning读书会第8期上,沈博讲主题模型的PPT:http://vdisk.weibo.com/s/zrFL6OXKgKMAf
  18. Latent Dirichlet Allocation (LDA)- David M.Blei:http://www.xperseverance.net/blogs/2012/03/17/
  19. 用GibbsLDA做Topic Modeling:http://weblab.com.cityu.edu.hk/blog/luheng/2011/06/24/%E7%94%A8gibbslda%E5%81%9Atopic-modeling/#comment-87
  20. 主题模型在文本挖掘中的应用:http://net.pku.edu.cn/~zhaoxin/Topic-model-xin-zhao-wayne.pdf
  21. 二项分布和多项分布,beta分布的对比:http://www.cnblogs.com/wybang/p/3206719.html
  22. LDA简介:http://cos.name/2010/10/lda_topic_model/
  23. LDA的相关论文、工具库:http://site.douban.com/204776/widget/notes/12599608/note/287085506/
  24. 一个网友学习LDA的心得:http://www.xuwenhao.com/2011/03/20/suggestions-for-programmers-to-learn-lda/
  25. http://blog.csdn.net/hxxiaopei/article/details/7617838
  26. 主题模型LDA及其在微博推荐&广告算法中的应用:http://www.wbrecom.com/?p=136
  27. LDA发明人之一Blei 写的毕业论文:http://www.cs.princeton.edu/~blei/papers/Blei2004.pdf
  28. LDA的一个C实现:http://www.cs.princeton.edu/~blei/lda-c/index.html
  29. LDA的一些其它资料:http://www.xperseverance.net/blogs/2012/03/657/

7 后记

    再次感谢本文最主要的参考:LDA原始论文、pLSA原始论文、LDA数学八卦、机器学习班第12次课主题模型PPT,和Parameter estimation for text analysis等等的作者们(本文中大部分的图片、公式截取自这些参考资料上),因为有他们的创造或分享,才有机会理解和再加工LDA,最终让本文得以成文。
    后续几天会不断修改完善本文,若有任何问题,可在本文下评论,thanks。
    July、二零一四年十一月二十一日。

作者写的太好了,本文来源于:http://blog.csdn.net/v_july_v/article/details/41209515

免责声明:文章转载自《理解 LDA 主题模型》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇前端用js获取本地文件的内容springboot下Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

数学统计基础-概率论与数理统计

  排列数:    组合数:      关联规则:  1、联合概率和条件概率 联合概率:P(AB)两个概率同时发生的概率    2、关联规则算法    数据分析精选 这个发现为商家带来了大量的利润,但是如何从浩如烟海却又杂乱无章的大数据中,发现啤酒和尿布销售之间的联系呢?这又给了我们什么样的启示呢?关联规则分析 关联...

数学概念的提出(一) —— 熵的定义式 H(x)=-log2(p(x))

h(x)=−log2p(x) 考虑一个离散型随机变量 x,当我们观测到该变量的一个特定值,问此时我们通过该值获得的关于该变量的信息量是多少? 信息量可视为“意外的程度”(degree of surprise)关于对该随机变量 x 的掌握; 如果该事件发生了,而我们事先被告知,该事件极不可能(highly improbable)发生,将会比被告知该事件极...

机器学习 —— 概率图模型(推理:MAP)

  MAP 是最大后验概率的缩写。后验概率指的是当有一定观测结果的情况下,对其他随机变量进行推理。假设随机变量的集合为X ,观察到的变量为 e, W = X-e , AP = P(W|e). 后验概率和联合概率是不同的两个概念。事实上,后验概率更接近推理本身的“意义”,并且被越来越多的用于诊断系统中。在医疗诊断系统中,存在包括病症,症状等许多随机变量,使用...

matlab 工具之各种降维方法工具包,下载及使用教程,有PCA, LDA, 等等。。。

最近跑深度学习,提出的feature是4096维的,放到我们的程序里,跑得很慢,很慢。。。。 于是,一怒之下,就给他降维处理了,但是matlab 自带的什么pca( ), princomp( )函数,搞不清楚怎么用的,表示不大明白,下了一个软件包: 名字:Matlab Toolbox for Dimensionality Reduction 链接:http...

理解先验概率 后验概率 似然函数

理解一下这些基础知识 先验概率(prior probability) 是指根据以往经验和分析得到的概率,如全概率公式,它往往作为 "由因求果" 问题中的 "因" 出现的概率。 在贝叶斯统计中,先验概率分布,即关于某个变量X的概率分布,是在获得某些信息或者依据前,对X之不确定性所进行的猜测。这是对不确定性(而不是随机性)赋予一个量化的数值的表征,这个量化数值...

Kendall Rank(肯德尔等级)相关系数

1、简介在统计学中,肯德尔相关系数是以Maurice Kendall命名的,并经常用希腊字母τ(tau)表示其值。肯德尔相关系数是一个用来测量两个随机变量相关性的统计值。一个肯德尔检验是一个无参数假设检验,它使用计算而得的相关系数去检验两个随机变量的统计依赖性。肯德尔相关系数的取值范围在-1到1之间,当τ为1时,表示两个随机变量拥有一致的等级相关性;当τ为...