通俗理解LDA主题模型

      通俗理解LDA主题模型



0 前言

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

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

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

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

    本文便依照上述5个步骤来阐述,但愿读者看完本文后,能对LDA有个尽可能清晰完整的了解。同一时候,本文基于邹讲LDA的PPT、rickjin的LDA数学八卦及其它參考资料写就,可以定义为一篇学习笔记或课程笔记,固然,兴许不断增长了很是多本身的理解。api

如有不论什么问题,欢迎随时于本文评论下指出,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年提出。是一种主题模型,它可以将文档集 中每篇文档的主题以几率分布的形式给出。从而经过分析一些文档抽取出它们的主题(分布)出来后,便可以依据主题(分布)进行主题聚类或文本分类。同一时候,它是一种典型的词袋模型,即一篇文档是由一组词构成,词与词之间没有前后顺序的关系。xss

    此外,一篇文档可以包括多个主题,文档中每个词都由当中的一个主题生成。函数

    人类是怎么生成文档的呢?LDA的这三位做者在原始论文中给了一个简单的样例。比方假设事先给定了这几个主题:Arts、Budgets、Children、Education,而后经过学习训练。获取每个主题Topic相应的词语。例如如下图所看到的:工具

 

    而后以必定的几率选取上述某个主题,再以必定的几率选取那个主题下的某个单词,不断的反复这两步,终于生成例如如下图所看到的的一篇文章(当中不一样颜色的词语分别相应上图中不一样主题下的词):

  

    而当咱们看到一篇文章后。每每喜欢推測这篇文章是怎样生成的,咱们可能会以为做者先肯定这篇文章的几个主题,而后环绕这几个主题遣词造句,表达成文。
    LDA就是要干这事: 依据给定的一篇文档,推測其主题分布

    通俗来讲,可以假定以为 人类是依据上述文档生成过程写成了各类各样的文章,现在某小撮人想让计算机利用LDA干一件事:你计算机给我推測分析网络上各篇文章分别都写了些啥主题,且各篇文章中各个主题出现的几率大小(主题分布)是啥
    然,就是这么一个看似普通的LDA,一度吓退了很多想深刻探究其内部原理的刚開始学习的人。难在哪呢,难就难在LDA内部涉及到的数学知识点太多了。
    在LDA模型中,一篇文档生成的方式例如如下:
  • 从狄利克雷分布中取样生成文档 i 的主题分布
  • 从主题的多项式分布中取样生成文档i第 j 个词的主题
  • 从狄利克雷分布中取样生成主题相应的词语分布
  • 从词语的多项式分布中採样终于生成词语

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

    此外。LDA的图模型结构例如如下图所看到的(类似贝叶斯网络结构):

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

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

  •  二项分布(Binomial distribution)
    二项分布是从伯努利分布推动的。

伯努利分布,又称两点分布或0-1分布,是一个离散型的随机分布。当中的随机变量仅仅有两类取值,非正即负{+,-}。而二项分布即反复n次的伯努利试验,记为 。简言之,仅仅作一次实验,是伯努利分布。反复作了n次。是二项分布。二项分布的几率密度函数为:

    
    对于k = 0, 1, 2, ..., n,当中的 是二项式系数(这就是二项分布的名称的由来),又记为 。回想起高中所学的那丁点几率知识了么:想必你当年必定死记过这个二项式系数 就是
  • 多项分布,是二项分布扩展到多维的状况

    多项分布是指单次试验中的随机变量的取值再也不是0-1的,而是有多种离散值可能(1,2,3...,k)。比方投掷6个面的骰子实验。N次实验结果服从K=6的多项分布。

当中

    多项分布的几率密度函数为:
  • Beta分布,二项分布的共轭先验分布
    给定參数 ,取值范围为[0,1]的随机变量 x 的几率密度函数
    当中
。 
   注: 即是所谓的gamma函数。下文会详细阐述。

  • Dirichlet分布,是beta分布在高维度上的推广

    Dirichlet分布的的密度函数形式跟beta分布的密度函数一模一样:
    当中
    至此,咱们可以看到 二项分布和多项分布很是类似, Beta分布和Dirichlet 分布很是类似,而至于 Beta分布是二项式分布的共轭先验几率分布。而狄利克雷分布 (Dirichlet分布)是多项式分布的共轭先验几率分布 这点在下文中说明。

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

    (固然,假设你不想深究背后的细节原理,仅仅想整体把握LDA的主体思想,可直接跳到本文第4 部分。看完第4部分后。若仍是想深究背后的细节原理,可再回到此处開始看)

1.1 gamma函数

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

  1. 问题1 随机变量
  2. 把这n 个随机变量排序后获得顺序统计量
  3. 而后请问的分布是什么。

    为解决问题,可以尝试计算落在区间[x,x+Δx]的几率。即求下述式子的值:

    首先。把 [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 个数。

例如如下图所看到的:

    从而问题转换为下述事件E:

    对于上述事件E,有:
    当中,o(Δx)表示Δx的高阶无穷小。显然。因为不一样的排列组合,即n个数中有一个落在 [x,x+Δx]区间的有n种取法,余下n−1个数中有k−1个落在[0,x)的有 种组合,因此和事件E等价的事件一共同拥有 个。

    假设有2个数落在区间[x,x+Δx]呢?例如如下图所看到的:
    类似于事件E,对于2个数落在区间[x,x+Δx]的事件E’:
    有:
   从上述的事件E、事件E‘中,可以看出。仅仅要落在[x,x+Δx]内的数字超过一个,则相应的事件的几率就是 o(Δx)。

因而乎有:

    从而获得 的几率密度函数 为:

    至此,本节开头提出的问题获得解决。然细致观察的几率密度函数。发现式子的终于结果有阶乘。联想到阶乘在实数上的推广函数:

    二者结合是否会产生奇异的效果呢?考虑到具备例如如下性质:

    故将代入到的几率密度函数中,可得:

    而后取,转换获得:

    假设熟悉beta分布的朋友,可能会惊呼:哇,竟然推出了beta分布。


2 beta分布

2.1 beta分布

    在几率论中,beta是指一组定义在 区间的连续几率分布。有两个參数 。且

    beta分布的几率密度函数是:
    当中的 即是 函数:
    随机变量X服从參数为 的beta分布一般写做:

2.2 Beta-Binomial 共轭

    回想下1.1节开头所提出的问题:“问题1 随机变量 。把这n 个随机变量排序后获得顺序统计量 ,而后请问 的分布是什么。

” 假设。我们要在这个问题的基础上增长一些观測数据,变成问题2

  • ,相应的顺序统计量是。需要推測
  • , 中有个比p小,个比大;
  • 那么,请问的分布是什么。
    依据“Yi中有 个比 小, 个比 大”。换言之。Yi中有 个比 小, 个比 大,因此 中第 大的数。
    依据1.1节终于获得的结论“仅仅要落在[x,x+Δx]内的数字超过一个。则相应的事件的几率就是 o(Δx)”。继而推出事件服从beta分布,从而可知 的几率密度函数为:
   
    熟悉贝叶斯方法(不熟悉的没事,參见 此文第一部分)的朋友内心预计又犯“嘀咕”了,这不就是贝叶斯式的思考过程么?
  1. 为了推測,在得到必定的观測数据前,咱们对的认知是:,此称为的先验分布;
  2. 而后为了得到这个结果“ 中有个比p小,个比大”。针对是作了次贝努利实验。因此服从二项分布
  3. 在给定了来自数据提供的的知识后,的后验分布变为

    回想下 贝叶斯派思考问题的固定模式:
  • 先验分布 + 样本信息  后验分布
     上述思考模式意味着。新观察到的样本信息将修正人们曾经对事物的认知。换言之,在获得新的样本信息以前,人们对 的认知是先验分布 ,在获得新的样本信息 后,人们对 的认知为

    类比到现在这个问题上,咱们也可以试着写下:
    当中 相应的是二项分布 的计数。
    更通常的,对于非负实数 。咱们有例如如下关系

    针对于这样的观測到的数据符合二项分布參数的先验分布和后验分布都是Beta分布的状况,就是Beta-Binomial共轭。换言之,Beta分布是二项式分布的共轭先验几率分布

    二项分布和Beta分布是共轭分布意味着,假设咱们为二项分布的參数p选取的先验分布是Beta分布,那么以p为參数的二项分布用贝叶斯预计获得的后验分布仍然服从Beta分布。

    此外,怎样理解參数 所表达的意义呢? 可以以为形状參数。通俗但不严格的理解是。 共同控制Beta分布的函数“长的样子”:形状千奇百怪。高低胖瘦,例如如下图所看到的:
 

2.3 共轭先验分布

    什么又是共轭呢?轭的意思是束缚、控制,共轭从字面上理解,则是共同约束。或互相约束。

     在贝叶斯几率理论中。假设后验几率P(θ|x)和先验几率p(θ)知足相同的分布律。那么。先验分布和后验分布被叫作共轭分布,同一时候,先验分布叫作似然函数的共轭先验分布
    比方,某观測数据服从几率分布 P(θ)时,当观測到新的X数据时,咱们一般会遇到例如如下问题:
  • 能否依据新观測数据X。更新參数θ?
  • 依据新观測数据可以在多大程度上改变參数θ,即
  • 当又一次预计θ的时候,给出新參数值θ的新几率分布。即P(θ|x)
    事实上。依据依据贝叶斯公式可知:
    当中。P(x|θ)表示以预估θ为參数的x几率分布。可以直接求得,P(θ)是已有原始的θ几率分布。
    因此。假设咱们选取P(x|θ)的共轭先验做为P(θ)的分布。那么P(x|θ)乘以P(θ)。而后归一化的结果P(θ|x)跟和P(θ)的形式同样。

换句话说,先验分布是P(θ)。后验分布是P(θ|x),先验分布跟后验分布同属于一个分布族。故称该分布族是θ的共轭先验分布(族)


    举个样例。

投掷一个非均匀硬币,可以使用參数为θ的伯努利模型,θ为硬币为正面的几率,那么结果x的分布形式为:

    其共轭先验为beta分布,具备两个參数 ,称为超參数(hyperparameters)。

且这两个參数决定了θ參数,其Beta分布形式为

    而后计算后验几率
    归一化这个等式后会获得还有一个Beta分布。从而证实了Beta分布确实是伯努利分布的共轭先验分布。

2.4 从beta分布推广到Dirichlet 分布

    接下来。我们来考察beta分布的一个性质。

    假设 。则有:
    注意到上式最后结果的右边积分
    其类似于几率分布 ,而对于这个分布有

    从而求得
    的结果为
    最后将此结果带入 的计算式,获得:

    最后的这个结果意味着对于Beta 分布的随机变量。其均值(指望)可以用来预计。

此外。狄利克雷Dirichlet 分布也有类似的结论,即假设。相同可以证实有下述结论成立:

    那什么是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里的勒贝格測度有个几率密度函数,定义为:

    当中,至关因而多项beta函数

    且

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

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

    当中的称为Dirichlet 分布的归一化系数:

    且依据Dirichlet分布的积分为1(几率的基本性质)。可以获得:

3.2 Dirichlet-Multinomial 共轭

    如下。在2.2节问题2的基础上继续深刻。引出问题3

  • 排序后相应的顺序统计量,
  • 的联合分布是什么?
    为了简化计算,取x3知足x1+x2+x3=1,但仅仅有x1,x2是变量。例如如下图所看到的:

    从而有:

    继而获得因而咱们获得的联合分布为:

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

    令,因而分布密度可以写为

    这个就是通常形式的3维 Dirichlet 分布,即使延拓到非负实数集合,以上几率分布也是良定义的。

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

    上图中。取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  ,排序后相应的顺序统计量
  2. ,,(此处的p3非变量,仅仅是为了表达方便)。现在要推測
  3. 。Yi中落到 三个区间的个数分别为 m1,m2,m3,m=m1+m2+m3。
  4.  问后验分布的分布是什么。

   为了方便讨论,记,及。依据已知条件“,Yi中落到 三个区间的个数分别为 m1,m2”,可得各自是这m+n个数中第大、第大的数。因而。后验分布应该为,即通常化的形式表示为:

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

  1.  咱们要推測參数,其先验分布为
  2.  数据Yi落到三个区间 的个数分别为,因此服从多项分布
  3.  在给定了来自数据提供的知识后,的后验分布变为

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

    令,可把从整数集合延拓到实数集合,从而获得更通常的表达式例如如下:

    针对于这样的 观測到的数据符合多项分布,參数的先验分布和后验分布都是Dirichlet 分布的状况, 就是Dirichlet-Multinomial 共轭

换言之,至此已经证实了Dirichlet分布的确就是多项式分布的共轭先验几率分布。

     意味着,假设咱们为多项分布的參数p选取的先验分布是Dirichlet分布,那么以p为參数的多项分布用贝叶斯预计获得的后验分布仍然服从Dirichlet分布。

    进一步,通常形式的Dirichlet 分布定义例如如下:
    而对于给定的 ,其多项分布为:
    结论是:Dirichlet分布 和多项分布 是共轭关系。


4 主题模型LDA

        在開始如下的旅程以前,先来总结下咱们眼下所获得的最基本的几个收获:

  • 经过上文的第2.2节,咱们知道beta分布是二项式分布的共轭先验几率分布:
    •  对于非负实数,咱们有例如如下关系

    当中相应的是二项分布的计数。针对于这样的观測到的数据符合二项分布,參数的先验分布和后验分布都是Beta分布的状况。就是Beta-Binomial 共轭。

  • 经过上文的3.2节,咱们知道狄利克雷分布(Dirichlet分布)是多项式分布的共轭先验几率分布:
    •  从整数集合延拓到实数集合。从而获得更通常的表达式例如如下:

    针对于这样的观測到的数据符合多项分布。參数的先验分布和后验分布都是Dirichlet 分布的状况,就是 Dirichlet-Multinomial 共轭。  ”
  • 以及贝叶斯派思考问题的固定模式:
    • 先验分布 + 样本信息  后验分布
         上述思考模式意味着,新观察到的样本信息将修正人们曾经对事物的认知。换言之,在获得新的样本信息以前,人们对 的认知是先验分布 ,在获得新的样本信息 后。人们对 的认知为
  • 顺便提下频率派与贝叶斯派各自不一样的思考方式:
    • 频率派把需要判断的參数θ看作是固定的未知常数。即几率尽管是未知的,但最起码是肯定的一个值,同一时候,样本X 是随机的,因此频率派重点研究样本空间,大部分的几率计算都是针对样本X 的分布;
    • 贝叶斯派的观点则截然相反,他们以为待预计的參数是随机变量,服从必定的分布。而样本X 是固定的,因为样本是固定的。因此他们重点研究的是參数的分布。

    OK,在杀到终极boss——LDA模型以前,再按部就班理解基础模型:Unigram model、mixture of unigrams model,以及跟LDA最为接近的pLSA模型。

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

  • 表示词,表示所有单词的个数(固定值)
  • 表示主题,是主题的个数(预先给定。固定值)
  • 表示语料库,当中的是语料库中的文档数(固定值)
  • 表示文档,当中的表示一个文档中的词数(随机变量)

4.1 各个基础模型

4.1.1 Unigram model

    对于文档。用表示词的先验几率。生成文档的几率为:

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

    或为:

    unigram model假设文本中的词服从Multinomial分布。而咱们已经知道Multinomial分布的先验分布为Dirichlet分布。
    上图中的表示在文本中观察到的第n个词。n∈[1,N]表示该文本中一共同拥有N个单词。

加上方框表示反复,即一共同拥有N个这样的随机变量

当中,p和α是隐含未知变量:

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

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

4.1.2 Mixture of unigrams model

    该模型的生成过程是:给某个文档先选择一个主题,再依据该主题生成文档。该文档中的所有词都来自一个主题。

假设主题有。生成文档的几率为:

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

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}中抽取出词:大学
  • 3. 最后,你不停的反复扔“文档-主题”骰子和”主题-词项“骰子。反复N次(产生N个词),完毕一篇文档,反复这产生一篇文档的方法M次。则完毕M篇文档。
    上述 过程抽象出来便是PLSA的文档生成模型。 在这个过程当中,咱们并未关注词和词之间的出现顺序,因此pLSA是一种词袋方法。 详细说来,该模型假设一组共现(co-occurrence)词项关联着一个隐含的主题类别

同一时候定义:

  • 表示海量文档中某篇文档被选中的几率。
  • 表示词在给定文档中出现的几率。
    • 怎么计算获得呢?针对海量文档,对所有文档进行分词后,获得一个词汇列表。这样每篇文档就是一个词语的集合。

      对于每个词语,用它在文档中出现的次数除以文档中词语总的数目即是它在文档中出现的几率

  • 表示详细某个主题在给定文档下出现的几率。
  • 表示详细某个词在给定主题下出现的几率,与主题关系越密切的词,其条件几率越大。

    利用上述的第一、三、4个几率,咱们便可以依照例如如下的步骤获得“文档-词项”的生成模型:
  1. 依照几率选择一篇文档
  2. 选定文档后,从主题分布中依照几率选择一个隐含的主题类别
  3. 选定后,从词分布中依照几率选择一个词
    因此pLSA中生成文档的整个过程即是选定文档生成主题,肯定主题生成词。

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

    反过来,既然文档已经产生,那么怎样依据已经产生好的文档反推其主题呢?这个利用看到的文档判断其隐藏的主题(分布)的过程(事实上也就是产生文档的逆过程),即是主题建模的目的:本身主动地发现文档集中的主题(分布)。
    换言之。人类依据文档生成模型写成了各种文章,而后丢给了 计算机,至关于计算机看到的是一篇篇已经写好的文章。现在计算机需要依据一篇篇文章中看到的一系列词概括出当篇文章的主题,进而得出各个主题各自不一样的出现几率:主题分布

即文档d和单词w是可被观察到的,但主题z倒是隐藏的。

    例如如下图所看到的( 图中被涂色的d、w表示可观測变量。未被涂色的z表示未知的隐变量。N表示一篇文档中总共N个单词,M表示M篇文档):
    上图中,文档d和词w是咱们获得的样本(样本随机,參数虽未知但固定,因此pLSA属于频率派思想差异于下文要介绍的LDA中:样本固定,參数未知但不固定,是个随机变量,服从必定的分布。因此LDA属于贝叶斯派思想)。可观測获得,因此 对于随意一篇文档。其是已知的。

    从而可以 依据 大量已知的文档-词项信息 ,训练出文档-主题 主题-词项 ,例如如下公式所看到的:
    故获得文档中每个词的生成几率为:

    因为可事先计算求出,未知,因此就是咱们要预计的參数(值),通俗点说。就是要最大化这个θ

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

4.2.1.1 EM算法的简介

    EM算法。全称为Expectation-maximization algorithm,为指望最大算法,其基本思想是:首先随机选取一个值去初始化待预计的值,而后不断迭代寻找更优的使得其似然函数likelihood 比原来的要大。

换言之,假定现在获得了。想求,使得

    EM的关键即是要找到的一个下界(注:当中。X表示已经观察到的随机变量)。而后不断最大化这个下界。经过不断求解下界的极大化,从而逼近要求解的似然函数

    因此EM算法的通常步骤为:

  • 1. 随机选取或者依据先验知识初始化
  • 2. 不断迭代下述两步
    • ①给出当前的參数预计,计算似然函数的下界
    • ②又一次预计參数θ。即求,使得
  • 3. 上述第二步后,假设收敛(即收敛)则退出算法,不然继续回到第二步。

    上述过程比如在二维平面上。有两条不相交的曲线,一条曲线在上(简称上曲线)。一条曲线在下(简称下曲线),下曲线为上曲线的下界。现在对上曲线未知。仅仅已知下曲线,为了求解上曲线的最高点,咱们试着不断增大下曲线。使得下曲线不断逼近上曲线,下曲线在某一个点达到局部最大值并与上曲线在这点的值相等,记录下这个值,而后继续增大下曲线,寻找下曲线上与上曲线上相等的值,迭代到收敛(即收敛)中止,从而利用当前下曲线上的局部最大值看成上曲线的全局最大值(换言之,EM算法不保证必定能找到全局最优值)。

例如如下图所看到的:

    如下是详细介绍。

    假定有训练集包括m个独立样本,但愿从中找到该组数据的模型p(x,z)的參数。

   

    而后经过极大似然预计创建目标函数--对数似然函数:

    这里,z是隐随机变量,直接找到參数的预计是很是困难的。

咱们的策略是创建的下界。并且求该下界的最大值;反复这个过程,直到收敛到局部最大值。

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

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

    换言之。有如下式子成立:。且因为有:

    因此可得:

    终于获得EM算法的整体框架例如如下:

    OK,EM算法还会在本博客后面的博文中详细阐述。

接下来,回到pLSA參数的预计问题上。

4.2.1.2 EM算法预计pLSA的两未知參数

    首先尝试从矩阵的角度来描写叙述待预计的两个未知变量

  • 假定用表示词表在主题上的一个多项分布,则可以表示成一个向量,每个元素表示词项出现在主题中的几率,即

  • 表示所有主题在文档上的一个多项分布,则可以表示成一个向量,每个元素表示主题出现在文档中的几率,即

    这样,巧妙的把转换成了两个矩阵

换言之,终于咱们要求解的參数是这两个矩阵:

    因为词和词之间是相互独立的,因此整篇文档N个词的分布为:

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

    当中。表示词项在文档中的词频。表示文档di中词的总数。显然有


    从而获得整个语料库的词分布的对数似然函数(下述公式中有个小错误,正确的应该是:N为M。M为N):


    现在,咱们需要最大化上述这个对数似然函数来求解參数。对于这样的含有隐变量的最大似然预计,可以使用EM算法。EM算法,分为两个步骤:先E-step,后M-step。

  • E-step:假定參数已知,计算此时隐变量的后验几率。

    利用贝叶斯法则,可以获得:

  • M-step:带入隐变量的后验几率,最大化样本分布的对数似然函数,求解相应的參数。

    观察以前获得的对数似然函数的结果。因为文档长度可以单独计算。因此去掉它不影响最大化似然函数。

此外,依据E-step的计算结果,把 代入,因而咱们仅仅要最大化如下这个函数  就能够下述公式中有个小错误,正确的应该是:N为M,M为N

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

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

    这里咱们引入两个拉格朗日乘子,从而写出拉格朗日函数下述公式中有个小错误,正确的应该是:N为M。M为N

    因为咱们要求解的參数是,因此分别对求偏导。而后令偏导结果等于0,获得下述公式中有个小错误。正确的应该是:N为M,M为N

    消去拉格朗日乘子,终于可预计出參数下述公式中有个小错误,正确的应该是:N为M,M为N

    综上。在pLSA中:

  1. 因为未知,因此咱们用EM算法去预计这个參数的值。

  2. 然后,用表示词项出现在主题中的几率。即,用表示主题出现在文档中的几率,即。从而转换成了“主题-词项”矩阵Φ(主题生成词),把转换成了“文档-主题”矩阵Θ(文档生成主题)。
  3. 终于求解出

4.3 LDA模型

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

4.3.1 pLSA跟LDA的对照:生成文档与參数预计

    在pLSA模型中,咱们依照例如如下的步骤获得“文档-词项”的生成模型:

  1. 依照几率选择一篇文档
  2. 选定文档后。肯定文章的主题分布
  3. 从主题分布中依照几率选择一个隐含的主题类别
  4. 选定后,肯定主题下的词分布
  5. 从词分布中依照几率选择一个词 

    如下。我们对照下本文开头所述的LDA模型中一篇文档生成的方式是怎样的:

  1. 依照先验几率选择一篇文档
  2. 从狄利克雷分布(即Dirichlet分布中取样生成文档 的主题分布,换言之,主题分布由超參数为的Dirichlet分布生成
  3. 从主题的多项式分布中取样生成文档第 j 个词的主题
  4. 从狄利克雷分布(即Dirichlet分布中取样生成主题相应的词语分布。换言之,词语分布由參数为的Dirichlet分布生成
  5. 从词语的多项式分布中採样终于生成词语 

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

    继续拿以前解说PLSA的样例进行详细说明。

如前所述。在PLSA中,选主题和选词都是两个随机的过程,先从主题分布{教育:0.5,经济:0.3。交通:0.2}中抽取出主题:教育,而后从该主题相应的词分布{大学:0.5,老师:0.3,课程:0.2}中抽取出词:大学。

    而在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中,主题分布和词分布肯定后。以必定的几率()分别选取详细的主题和词项,生成好文档。

    然后依据生成好的文档反推其主题分布、词分布时,终于用EM算法(极大似然预计思想)求解出了两个未知但固定的參数的值:(由转换而来)和(由转换而来)。

    • 文档d产生主题z的几率。主题z产生单词w的几率都是两个固定的值。
      • 举个文档d产生主题z的样例。给定一篇文档d,主题分布是必定的,比方{ P(zi|d), i = 1,2,3 }可能就是{0.4,0.5,0.1},表示z一、z二、z3。这3个主题被文档d选中的几率都是个固定的值:P(z1|d) = 0.四、P(z2|d) = 0.五、P(z3|d) = 0.1,例如如下图所看到的(图截取自沈博PPT上):

  • 但在贝叶斯框架下的LDA中,咱们再也不以为主题分布(各个主题在文档中出现的几率分布)和词分布(各个词语在某个主题下出现的几率分布)是惟一肯定的(而是随机变量,而是有很是多种可能。但一篇文档总得相应一个主题分布和一个词分布吧。怎么办呢?LDA为它们弄了两个Dirichlet先验參数,这个Dirichlet先验为某篇文档随机抽取出某个主题分布和词分布。
    • 文档d产生主题z(准确的说。事实上是Dirichlet先验为文档d生成主题分布Θ,而后依据主题分布Θ产生主题z)的几率,主题z产生单词w的几率都再也不是某两个肯定的值。而是随机变量
      • 仍是再次举下文档d详细产生主题z的样例。给定一篇文档d,现在有多个主题z一、z二、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.四、P(z2|d) = 0.五、P(z3|d) = 0.1,也有多是P(z1|d) = 0.二、P(z2|d) = 0.二、P(z3|d) = 0.6等等。而主题分布到底是哪一个取值集合咱们不肯定(为何?这就是贝叶斯派的核心思想。把未知參数看成是随机变量,再也不以为是某一个肯定的值)。但其先验分布是dirichlet 分布,因此可以从无穷多个主题分布中依照dirichlet 先验随机抽取出某个主题分布出来。例如如下图所看到的(图截取自沈博PPT上):

    换言之,LDA在pLSA的基础上给这两參数 加了两个先验分布的參数( 贝叶斯化):一个主题分布的先验分布 Dirichlet分布 ,和一个词语分布的先验分布 Dirichlet分布
    综上,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个坐标轴弄为p一、p二、p3,例如如下图所看到的:

    在这个三维坐标轴所划分的空间里,每个坐标点(p1,p2,p3)就相应着一个主题分布。且某一个点(p1,p2,p3)的大小表示3个主题z一、z二、z3出现的几率大小(因为各个主题出现的几率和为1。因此p1+p2+p3 = 1,且p一、p二、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分布选中的几率。且选不一样的。dirichlet 分布会偏向不一样的主题分布):

    咱们来看上图中左边这个图,高度就是表明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分布选中的几率值很是小。

    因此尽管说dirichlet分布是随机选取随意一个主题分布的,但依旧存在着P(A) = P(B) = P(C) >> P(D) = P(E)。即dirichlet分布仍是“偏心”某些主题分布的。至于dirichlet分布的參数 是怎样决定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,仅仅有W / w是观察到的变量,其它都是隐变量或者參数。当中。Φ表示词分布,Θ表示主题分布,  是主题分布Θ的先验分布(即Dirichlet 分布)的參数。 是词分布Φ的先验分布(即Dirichlet 分布)的參数,N表示文档的单词总数,M表示文档的总数。
    因此,对于一篇文档d中的每个单词,LDA依据先验知识 肯定某篇文档的主题分布θ,而后从该文档所相应的多项分布(主题分布)θ中抽取一个主题z,接着依据先验知识 肯定当前主题的词语分布ϕ,而后从主题z所相应的多项分布(词分布)ϕ中抽取一个单词w。而后将这个过程反复N次。就产生了文档d。

    换言之:
  1. 假定语料库中共同拥有M篇文章,每篇文章下的Topic的主题分布是一个从參数为的Dirichlet先验分布中採样获得的Multinomial分布。每个Topic下的词分布是一个从參数为的Dirichlet先验分布中採样获得的Multinomial分布。

  2. 对于某篇文章中的第n个词,首先从该文章中出现的每个主题的Multinomial分布(主题分布)中选择或採样一个主题,而后再在这个主题相应的词的Multinomial分布(词分布)中选择或採样一个词。不断反复这个随机生成过程,直到M篇文章所有生成完毕。
    综上,M 篇文档会相应于 M 个独立的 Dirichlet-Multinomial 共轭结构。K 个 topic 会相应于 K 个独立的 Dirichlet-Multinomial 共轭结构。

  • 当中。→θ→z 表示生成文档中的所有词相应的主题,显然 →θ 相应的是Dirichlet 分布,θ→z 相应的是 Multinomial 分布。因此整体是一个 Dirichlet-Multinomial 共轭结构。例如如下图所看到的:
  • 类似的,→φ→w,easy看出, 此时β→φ相应的是 Dirichlet 分布, φ→w 相应的是 Multinomial 分布, 因此整体也是一个Dirichlet-Multinomial 共轭结构,例如如下图所看到的:

4.3.4 pLSA跟LDA參数预计方法的对照

    上面对照了pLSA跟LDA生成文档的不一样过程,如下,我们反过来,假定文档已经产生,反推其主题分布。那么,它们预计未知參数所採用的方法又有什么不一样呢?
  • 在pLSA中,咱们使用EM算法去预计“主题-词项”矩阵Φ(由转换获得)和“文档-主题”矩阵Θ(由转换获得)这两个參数,并且这两參数都是个固定的值。仅仅是未知,使用的思想事实上就是极大似然预计MLE。
  • 而在LDA中,预计Φ、Θ这两未知參数可以用变分(Variational inference)-EM算法,也可以用gibbs採样,前者的思想是最大后验预计MAPMAP与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. 用贝叶斯公式,可得: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中,主题分布和词分布自己都是多项分布,而由上文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是可以观察到的已知变量,是依据经验给定的先验參数,其它的变量z,θ和φ都是未知的隐含变量,需要依据观察到的变量来学习预计的。依据LDA的图模型,可以写出所有变量的联合分布:


    注:上述公式中及下文中。等价上文中定义的等价于上文中定义的等价于上文中定义的等价于上文中定义的

    因为产生主题分布θ,主题分布θ肯定详细主题,且产生词分布φ、词分布φ肯定详细词,因此上述式子等价于下述式子所表达的联合几率分布

    当中,第一项因子表示的是依据肯定的主题和词分布的先验分布參数採样词的过程,第二项因子是依据主题分布的先验分布參数採样主题的过程,这两项因子是需要计算的两个未知參数

    因为这两个过程是独立的。因此如下可以分别处理。各个击破。

    第一个因子,可以依据肯定的主题和从先验分布取样获得的词分布Φ产生:

    因为样本中的词服从參数为主题的独立多项分布,这意味着可以把上面对词的乘积分解成分别对主题和对词的两层乘积:

    当中,是词 t 在主题 k 中出现的次数。

    回到第一个因子上来。

目标分布需要对词分布Φ积分。且结合咱们以前在3.1节定义的Dirichlet 分布的归一化系数的公式

    可得:

    这个结果可以看做K个Dirichlet-Multinomial模型的乘积。
    现在開始求第二个因子。类似于的步骤。先写出条件分布,而后分解成两部分的乘积:

    当中。 表示的单词 i 所属的文档,是主题 k 在文章 m 中出现的次数。

    对主题分布Θ积分可得:

    综合第一个因子和第二个因子的结果,获得的联合分布结果为

    接下来, 有了联合分布。我们便可以经过联合分布来计算在给定可观測变量 w 下的隐变量 z 的条件分布(后验分布)来进行贝叶斯分析

    换言之,有了这个联合分布后,要求解第m篇文档中的第n个词(下标为 的词)的所有条件几率就好求了。

    先定义几个变量。 表示除去 的词。
    而后。排除当前词的主题分配。即依据其它词的主题分配和观察到的单词来计算当前词主题的几率公式为:
    勘误:考虑到 ,因此上述公式的第二行的分子,非p(w,z) *p(z)。而是p(w|z)*p(z)。

    且有:

    最后一步,即是依据Markov链的状态 获取主题分布的參数Θ和词分布的參数Φ。
    换言之依据贝叶斯法则和Dirichlet先验,以及上文中获得的 各自被分解成两部分乘积的结果,可以计算获得 每个文档上Topic的后验分布和每个Topic下的词的后验分布分别例如如下(据上文可知: 其后验分布跟它们的先验分布同样,也都是 Dirichlet 分布
    当中, 是构成文档m的主题数向量, 是构成主题k的词项数向量。

    此外,别忘了上文中2.4节所述的Dirichlet的一个性质,例如如下:

     “ 假设,相同可以证实有下述结论成立:

    即:假设 。则 中的任一元素 的指望是:
    可以看出。超參数 的直观意义就是事件先验的伪计数(prior pseudo-count)。

 
    因此,终于求解的Dirichlet 分布指望为

    而后将 的结果代入以前获得的 的结果中,可得:
    细致观察上述结果。可以发现,式子的右半部分即是 ,这个几率的值相应着 的路径几率。

如此,K 个topic 相应着K条路径,Gibbs Sampling 便在这K 条路径中进行採样。例如如下图所看到的:

    何等奇异。就这样,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在学參数的过程当中比較easy陷入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的笔记从11月17日下午開始动笔。到21日基本写完,25日基本改完。前先后后。基本写完 + 基本改完,总共花了近10 天的时间,后面还得不断无缺。

前5天就像在树林里中行走,要走的慷慨向很是明确,但在选取哪条小道上则颇费了一番周折,但当最后走出了树林。登上山顶,俯瞰整个森林时,奥,原来它就长这样,会有一种彻爽的感受!

然后5 天。则慢慢開始接近LDA的本质:pLSA的贝叶斯版本号。

    写做过程艰难但结果透彻,也但愿读者能享受到当中。

    最后,再次感谢本文最基本的參考:LDA原始论文、pLSA原始论文、LDA数学八卦、机器学习班第12次课主题模型PPT。和Parameter estimation for text analysis等等的做者们(本文中大部分的图片、公式截取自这些參考资料上),因为有他们的创造或分享。我才有机会理解和再加工LDA,终于让本文得以成文。

    兴许几天会不断改动无缺本文,如有不论什么问题。可在本文下评论,thanks。

    July、二零一四年十一月二十一日。
相关文章
相关标签/搜索