通俗理解LDA主题模型
0 前言
印象中,最開始听说“LDA”这个名词,是缘于rickjin在2013年3月写的一个LDA科普系列,叫LDA数学八卦,我当时一直想看来着,记得还打印过一次,但不知是由于这篇文档的前序铺垫太长(如今才意识到这些“铺垫”都是深刻理解LDA 的基础,但假设没有人帮助刚開始学习的人提纲挈领、把握主次、理清思路,则非常easy陷入LDA的细枝末节之中),还是由于当中的数学推导细节太多,导致一直没有完整看完过。
2013年12月,在我组织的Machine Learning读书会上,@夏粉_百度 讲机器学习中排序学习的理论和算法研究。@沈醉2011 则讲主题模型的理解。又一次碰到了主题模型,当时貌似仅仅记得沈博讲了一个汪峰写歌词的样例。依旧没有理解LDA究竟是怎样一个东西(但理解了LDA之后。再看沈博主题模型的会非常赞)。
直到昨日下午。 第12次课上,邹讲完LDA之后,才真正明确LDA原来是那么一个东东!上完课后,趁热打铁,再次看LDA数学八卦,发现曾经看不下去的文档再看时居然一路都比較顺畅。一口气看完大部。看完大部后,思路清晰了。知道理解LDA。能够分为下述5个步骤:
- 一个函数:gamma函数
- 四个分布:二项分布、多项分布、beta分布、Dirichlet分布
- 一个概念和一个理念:共轭先验和贝叶斯框架
- 两个模型:pLSA、LDA(在本文阐述)
- 一个採样:Gibbs採样
本文便依照上述5个步骤来阐述,希望读者看完本文后,能对LDA有个尽量清晰完整的了解。同一时候,本文基于邹讲LDA的、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相应的词语。例如以下图所看到的:
然后以一定的概率选取上述某个主题,再以一定的概率选取那个主题下的某个单词,不断的反复这两步,终于生成例如以下图所看到的的一篇文章(当中不同颜色的词语分别相应上图中不同主题下的词):
- 从狄利克雷分布中取样生成文档 i 的主题分布
- 从主题的多项式分布中取样生成文档i第 j 个词的主题
- 从狄利克雷分布中取样生成主题相应的词语分布
- 从词语的多项式分布中採样终于生成词语
当中,相似Beta分布是二项式分布的共轭先验概率分布。而狄利克雷分布(Dirichlet分布)是多项式分布的共轭先验概率分布。
此外。LDA的图模型结构例如以下图所看到的(相似结构):
恩,不错,短短6句话总体概括了整个LDA的主体思想!但也就是上面短短6句话,却接连不断或反复出现了二项分布、多项式分布、beta分布、狄利克雷分布(Dirichlet分布)、共轭先验概率分布、取样,那么请问,这些都是啥呢?
这里先简单解释下二项分布、多项分布、beta分布、Dirichlet 分布这4个分布。
- 二项分布(Binomial distribution)。
伯努利分布,又称两点分布或0-1分布,是一个离散型的随机分布。当中的随机变量仅仅有两类取值,非正即负{+,-}。而二项分布即反复n次的伯努利试验,记为 。简言之,仅仅做一次实验,是伯努利分布。反复做了n次。是二项分布。二项分布的概率密度函数为:
- 多项分布,是二项分布扩展到多维的情况。
当中
- Beta分布,二项分布的共轭先验分布。
。 。
- Dirichlet分布,是beta分布在高维度上的推广。
OK。接下来,咱们就依照本文开头所说的思路:“一个函数:gamma函数,四个分布:二项分布、多项分布、beta分布、Dirichlet分布,外加一个概念和一个理念:共轭先验和贝叶斯框架,两个模型:pLSA、LDA(文档-主题,主题-词语),一个採样:Gibbs採样”一步步详细阐述,争取给读者一个尽量清晰完整的LDA。
(当然,假设你不想深究背后的细节原理,仅仅想总体把握LDA的主体思想,可直接跳到本文。看完第4部分后。若还是想深究背后的细节原理,可再回到此处開始看)
1.1 gamma函数
咱们先来考虑一个问题(此问题1包括下文的问题2-问题4皆取材自LDA数学八卦):
- 问题1 随机变量
- 把这n 个随机变量排序后得到顺序统计量
- 然后请问的分布是什么。
为解决问题,能够尝试计算落在区间[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 个数。
例如以下图所看到的:
于是乎有:
至此,本节开头提出的问题得到解决。然细致观察的概率密度函数。发现式子的终于结果有阶乘。联想到阶乘在实数上的推广函数:
两者结合是否会产生奇异的效果呢?考虑到具有例如以下性质:
故将代入到的概率密度函数中,可得:
然后取,,转换得到:
假设熟悉beta分布的朋友,可能会惊呼:哇,居然推出了beta分布。
2 beta分布
2.1 beta分布
2.2 Beta-Binomial 共轭
” 假设。咱们要在这个问题的基础上增加一些观測数据,变成问题2:
- ,相应的顺序统计量是。须要推測。
- , 中有个比p小,个比大;
- 那么,请问的分布是什么。
- 为了推測,在获得一定的观測数据前,我们对的认知是:,此称为的先验分布;
- 然后为了获得这个结果“ 中有个比p小,个比大”。针对是做了次贝努利实验。所以服从二项分布;
- 在给定了来自数据提供的的知识后,的后验分布变为。
- 先验分布 + 样本信息 后验分布
针对于这样的观測到的数据符合二项分布,參数的先验分布和后验分布都是Beta分布的情况,就是Beta-Binomial共轭。换言之,Beta分布是二项式分布的共轭先验概率分布。
二项分布和Beta分布是共轭分布意味着,假设我们为二项分布的參数p选取的先验分布是Beta分布,那么以p为參数的二项分布用贝叶斯预计得到的后验分布仍然服从Beta分布。
2.3 共轭先验分布
- 可否依据新观測数据X。更新參数θ?
- 依据新观測数据能够在多大程度上改变參数θ,即
- 当又一次预计θ的时候,给出新參数值θ的新概率分布。即P(θ|x)。
换句话说,先验分布是P(θ)。后验分布是P(θ|x),先验分布跟后验分布同属于一个分布族。故称该分布族是θ的共轭先验分布(族)。
投掷一个非均匀硬币,能够使用參数为θ的伯努利模型,θ为硬币为正面的概率,那么结果x的分布形式为:
且这两个參数决定了θ參数,其Beta分布形式为
2.4 从beta分布推广到Dirichlet 分布
最后的这个结果意味着对于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 分布的归一化系数:
3.2 Dirichlet-Multinomial 共轭
以下。在2.2节问题2的基础上继续深入。引出问题3。
- ,
- 排序后相应的顺序统计量,
- 问的联合分布是什么?
从而有:
继而得到于是我们得到的联合分布为:
观察上述式子的终于结果,能够看出上面这个分布事实上就是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。
- 问题4 ,排序后相应的顺序统计量
- 令,,(此处的p3非变量,仅仅是为了表达方便)。如今要推測。
- 。Yi中落到,。 三个区间的个数分别为 m1,m2,m3,m=m1+m2+m3。
- 问后验分布的分布是什么。
为了方便讨论,记,及。依据已知条件“,Yi中落到,, 三个区间的个数分别为 m1,m2”,可得、各自是这m+n个数中第大、第大的数。于是。后验分布应该为,即一般化的形式表示为:。
相同的,依照贝叶斯推理的逻辑,可将上述过程整理例如以下:
- 我们要推測參数,其先验分布为;
- 数据Yi落到三个区间。, 的个数分别为,所以服从多项分布
- 在给定了来自数据提供的知识后,的后验分布变为
上述贝叶斯分析过程的直观表述为:
令,可把从整数集合延拓到实数集合,从而得到更一般的表达式例如以下:
换言之,至此已经证明了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
4.2 PLSA模型
4.2.1 pLSA模型下生成文档
那么在pLSA中,文档是怎样被生成的呢?
- 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篇文档。
同一时候定义:
- 表示海量文档中某篇文档被选中的概率。
- 表示词在给定文档中出现的概率。
- 怎么计算得到呢?针对海量文档,对全部文档进行分词后,得到一个词汇列表。这样每篇文档就是一个词语的集合。
对于每一个词语,用它在文档中出现的次数除以文档中词语总的数目便是它在文档中出现的概率
。
- 怎么计算得到呢?针对海量文档,对全部文档进行分词后,得到一个词汇列表。这样每篇文档就是一个词语的集合。
- 表示详细某个主题在给定文档下出现的概率。
- 表示详细某个词在给定主题下出现的概率,与主题关系越密切的词,其条件概率越大。
- 依照概率选择一篇文档
- 选定文档后,从主题分布中依照概率选择一个隐含的主题类别
- 选定后,从词分布中依照概率选择一个词
4.2.1 依据文档反推其主题分布
即文档d和单词w是可被观察到的,但主题z却是隐藏的。
由于可事先计算求出,而和未知,所以就是我们要预计的參数(值),通俗点说。就是要最大化这个θ。
用什么方法进行预计呢,经常使用的參数预计方法有极大似然预计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中:
- 由于和未知,所以我们用EM算法去预计这个參数的值。
- 而后,用表示词项出如今主题中的概率。即,用表示主题出如今文档中的概率,即。从而把转换成了“主题-词项”矩阵Φ(主题生成词),把转换成了“文档-主题”矩阵Θ(文档生成主题)。
- 终于求解出、。
4.3 LDA模型
事实上,理解了pLSA模型,也就差点儿相同快理解了LDA模型。由于LDA就是在pLSA的基础上加层贝叶斯框架,即LDA就是pLSA的贝叶斯版本号(正由于LDA被贝叶斯化了,所以才须要考虑历史先验知识,才加的两个先验參数)。
4.3.1 pLSA跟LDA的对照:生成文档与參数预计
在pLSA模型中,我们依照例如以下的步骤得到“文档-词项”的生成模型:
- 依照概率选择一篇文档
- 选定文档后。确定文章的主题分布
- 从主题分布中依照概率选择一个隐含的主题类别
- 选定后,确定主题下的词分布
- 从词分布中依照概率选择一个词 ”
以下。咱们对照下本文开头所述的LDA模型中一篇文档生成的方式是怎样的:
- 依照先验概率选择一篇文档
- 从狄利克雷分布(即Dirichlet分布)中取样生成文档 的主题分布,换言之,主题分布由超參数为的Dirichlet分布生成
- 从主题的多项式分布中取样生成文档第 j 个词的主题
- 从狄利克雷分布(即Dirichlet分布)中取样生成主题相应的词语分布。换言之,词语分布由參数为的Dirichlet分布生成
- 从词语的多项式分布中採样终于生成词语 ”
从上面两个过程能够看出,LDA在PLSA的基础上,为主题分布和词分布分别加了两个Dirichlet先验。
继续拿之前解说PLSA的样例进行详细说明。
如前所述。在PLSA中,选主题和选词都是两个随机的过程,先从主题分布{教育:0.5,经济:0.3。交通:0.2}中抽取出主题:教育,然后从该主题相应的词分布{大学:0.5,老师:0.3,课程:0.2}中抽取出词:大学。
- 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
先验随机确定。
- pLSA中,主题分布和词分布确定后。以一定的概率(、)分别选取详细的主题和词项,生成好文档。
而后依据生成好的文档反推其主题分布、词分布时,
终于用EM算法(极大似然预计思想)求解出了两个未知但固定的參数的值:(由转换而来)和(由转换而来)。- 文档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上):
- 文档d产生主题z的概率。主题z产生单词w的概率都是两个固定的值。
- 但在贝叶斯框架下的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上):
- 文档d产生主题z(准确的说。事实上是Dirichlet先验为文档d生成主题分布Θ,然后依据主题分布Θ产生主题z)的概率,主题z产生单词w的概率都不再是某两个确定的值。而是随机变量。
- 依照频率派的思想,我预计他在家的概率是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) 不太可能。
进一步。贝叶斯预计中,參数的多个预计值服从一定的先验分布,而后依据实践获得的数据(比如周末不断跑他家)。不断修正之前的參数预计。从先验分布慢慢过渡到后验分布。
假设是在机器学习班上face-to-face,更好解释和沟通。
4.3.2 LDA生成文档过程的进一步理解
为了说清晰这个问题,咱们得回想下dirichlet分布。事实上。假设我们取3个事件的话,能够建立一个三维坐标系。相似xyz三维坐标系,这里。我们把3个坐标轴弄为p1、p2、p3,例如以下图所看到的:
在这个三维坐标轴所划分的空间里,每一个坐标点(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分布选中的概率。且选不同的。dirichlet 分布会偏向不同的主题分布):
4.3.3 pLSA跟LDA的概率图对照
- 假定语料库中共同拥有M篇文章,每篇文章下的Topic的主题分布是一个从參数为的Dirichlet先验分布中採样得到的Multinomial分布。每一个Topic下的词分布是一个从參数为的Dirichlet先验分布中採样得到的Multinomial分布。
- 对于某篇文章中的第n个词,首先从该文章中出现的每一个主题的Multinomial分布(主题分布)中选择或採样一个主题,然后再在这个主题相应的词的Multinomial分布(词分布)中选择或採样一个词。不断反复这个随机生成过程,直到M篇文章全部生成完毕。
- 当中。→θ→z 表示生成文档中的全部词相应的主题,显然 →θ 相应的是Dirichlet 分布,θ→z 相应的是 Multinomial 分布。所以总体是一个 Dirichlet-Multinomial 共轭结构。例如以下图所看到的:
- 相似的,→φ→w,easy看出, 此时β→φ相应的是 Dirichlet 分布, φ→w 相应的是 Multinomial 分布, 所以总体也是一个Dirichlet-Multinomial 共轭结构,例如以下图所看到的:
4.3.4 pLSA跟LDA參数预计方法的对照
- 在pLSA中,我们使用EM算法去预计“主题-词项”矩阵Φ(由转换得到)和“文档-主题”矩阵Θ(由转换得到)这两个參数,而且这两參数都是个固定的值。仅仅是未知,使用的思想事实上就是极大似然预计MLE。
- 而在LDA中,预计Φ、Θ这两未知參数能够用变分(Variational inference)-EM算法,也能够用gibbs採样,前者的思想是最大后验预计MAP(MAP与MLE相似,都把未知參数当作固定的值),后者的思想是贝叶斯预计。贝叶斯预计是对MAP的扩展,但它与MAP有着本质的不同。即贝叶斯预计把待预计的參数看作是服从某种先验分布的随机变量。
- 关于贝叶斯预计再举个样例。假设中国的大学仅仅有两种:理工科和文科,这两种学校数量的比例是1:1。当中,理工科男女比例7:1,文科男女比例1:7。某天你被外星人随机扔到一个校园,问你该学校可能的男女比例是多少?然后,你实际到该校园里逛了一圈,看到的5个人全是男的。这时候再次问你这个校园的男女比例是多少?
- 由于刚開始时,有先验知识,所以该学校的男女比例要么是7:1。要么是1:7,即P(比例为7:1) = 1/2,P(比例为1:7) = 1/2。
- 然后看到5个男生后又一次预计男女比例。事实上就是求P(比例7:1|5个男生)= ?,P(比例1:7|5个男生) = ?
- 用贝叶斯公式,可得: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个男生)。
- 最后将上述两个等式比一下。可得:P(比例7:1|5个男生)/P(比例1:7|5个男生) = {P((比例7:1)*P(5个男生|比例7:1)} / { P(比例1:7)*P(5个男生|比例1:7)}。
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 中出现的次数。
对主题分布Θ积分可得:
综合第一个因子和第二个因子的结果,得到的联合分布结果为:
“ 假设,相同能够证明有下述结论成立:
”
所以,终于求解的Dirichlet 分布期望为:如此,K 个topic 相应着K条路径,Gibbs Sampling 便在这K 条路径中进行採样。例如以下图所看到的:
5 读者微评
- @SiNZeRo:lda 假设用em就是 map预计了. lda本意是要去找后验分布 然后拿后验分布做bayesian分析. 比方theta的期望 . 而不是把先验作为正则化引入。最后一点gibbs sampling事实上不是求解的过程 是去explore后验分布 去採样 用于求期望.
- @研究者July:好问题好建议,这几天我陆续完好下!//@帅广应s:LDA这个东西该怎么用?能够用在哪些地方?还有就是Gibbs抽样的原理是什么?代码怎么实现?假设用EM来做,代码怎么实现? LDA模型的变形和优化有哪些?LDA不适用于解决哪类的问题?总之,不明确怎么用,參数怎么调优?
- @xiangnanhe:写的非常好,4.1.3节中的那两个图非常赞,非常直观的理解了LDA模型加了先验之后在学參数的时候要比PLSI更灵活;PLSI在学參数的过程中比較easy陷入local minimum然后overfitting。
- @asker2:不管是pLSA中,还是LDA中,主题分布和词分布本身是固定的存在,但都未知。
pLSA跟LDA的差别在于,去探索这两个未知參数的方法或思想不一样。
pLSA是求到一个能拟合文本最好的參数(分布),这个值就觉得是真实的參数。
但LDA觉得,事实上我们没法去全然求解出主题分布、词分布究竟是什么參数,我们仅仅能把它们当成随机变量。通过缩小其方差(变化度)来尽量让这个随机变量变得更“确切”。换言之,我们不再求主题分布、词分布的详细值,而是通过这些分布生成的观測值(即实际文本)来反推分布的參数的范围,即在什么范围比較可能,在什么范围不太可能。所以,事实上这就是一种贝叶斯分析的思想,尽管无法给出真实值详细是多少。但能够依照经验给一个相对合理的真实值服从的先验分布。然后从先验出发求解其后验分布。
- ..
6 參考文献与推荐阅读
- Blei, David M.; Ng, Andrew Y.; Jordan, Michael I. Latent Dirichlet allocation(LDA原始论文):。
- Blei. Probabilistic Topic Models:,一网友的翻译:。
- 一堆wikipedia,比方隐含狄利克雷分布LDA的wiki:,狄利克雷分布的wiki:。
- ;
- rickjin的LDA数学八卦(力荐,本文部分图片和公式来自于此文档)网页版:。PDF版:;
- Thomas Hofmann.Probabilistic Latent Semantic Indexing(pLSA原始论文):;
- Gregor Heinrich.Parameter estimation for text analysis(关于Gibbs 採样最精准细致的论述):;
- Probabilistic latent semantic analysis (pLSA):http://blog.tomtung.com/2011/10/plsa/。
- 《概率论与数理统计教程第二版 茆诗松等人著》。假设忘了相关统计分布。建议复习此书或第二部分;
- 《》。第二部分关于拉格朗日函数的讨论;
- 机器学习班第11次课上,邹博讲EM & GMM的PPT:;
- 机器学习班第12次课上。邹博讲主题模型LDA的PPT:;
- 主题模型之pLSA:。
- 主题模型之LDA:;
- 搜索背后的奥秘——浅谈语义主题计算:;
- LDA的EM推导:;
- Machine Learning读书会第8期上,沈博讲主题模型的PPT:;
- Latent Dirichlet Allocation (LDA)- David M.Blei:。
- 用GibbsLDA做Topic Modeling:;
- 主题模型在文本挖掘中的应用:;
- 二项分布和多项分布,beta分布的对照:;
- LDA简介:;
- LDA的相关论文、工具库:。
- 一个网友学习LDA的心得:。
- ;
- 主题模型LDA及其在微博推荐&广告算法中的应用:。
- LDA发明人之中的一个Blei 写的毕业论文:;
- LDA的一个C实现:。
- LDA的一些其它资料:。
7 后记
前5天就像在树林里中行走,要走的慷慨向非常明确,但在选取哪条小道上则颇费了一番周折,但当最后走出了树林。登上山顶,俯瞰整个森林时,奥,原来它就长这样,会有一种彻爽的感觉!
而后5 天。则慢慢開始接近LDA的本质:pLSA的贝叶斯版本号。