通俗理解LDA主题模型
Posted yhao浩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通俗理解LDA主题模型相关的知识,希望对你有一定的参考价值。
声明:本文转载自July的CSDN博客,仅作为知识记录所用,原文链接:http://blog.csdn.net/v_july_v/article/details/41209515
0 前言
印象中,最开始听说“LDA”这个名词,是缘于rickjin在2013年3月写的一个LDA科普系列,叫LDA数学八卦,我当时一直想看来着,记得还打印过一次,但不知是因为这篇文档的前序铺垫太长(现在才意识到这些“铺垫”都是深刻理解LDA 的基础,但如果没有人帮助初学者提纲挈领、把握主次、理清思路,则很容易陷入LDA的细枝末节之中),还是因为其中的数学推导细节太多,导致一直没有完整看完过。
2013年12月,在我组织的Machine Learning读书会第8期上,@夏粉_百度 讲机器学习中排序学习的理论和算法研究,@沈醉2011 则讲主题模型的理解。又一次碰到了主题模型,当时貌似只记得沈博讲了一个汪峰写歌词的例子,依然没有理解LDA到底是怎样一个东西(但理解了LDA之后,再看沈博主题模型的PPT会很赞)。
直到昨日下午,机器学习班 第12次课上,Z讲师讲完LDA之后,才真正明白LDA原来是那么一个东东!上完课后,趁热打铁,再次看LDA数学八卦,发现以前看不下去的文档再看时竟然一路都比较顺畅,一口气看完大部。看完大部后,思路清晰了,知道理解LDA,可以分为下述5个步骤:
- 一个函数:gamma函数
- 四个分布:二项分布、多项分布、beta分布、Dirichlet分布
- 一个概念和一个理念:共轭先验和贝叶斯框架
- 两个模型:pLSA、LDA(在本文第4 部分阐述)
- 一个采样:Gibbs采样
本文便按照上述5个步骤来阐述,希望读者看完本文后,能对LDA有个尽量清晰完整的了解。同时,本文基于Z讲师讲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就是要干这事:根据给定的一篇文档,推测其主题分布。 然,就是这么一个看似普通的LDA,一度吓退了不少想深入探究其内部原理的初学者。难在哪呢,难就难在LDA内部涉及到的数学知识点太多了。 在LDA模型中,一篇文档生成的方式如下:
- 从狄利克雷分布中取样生成文档 i 的主题分布
- 从主题的多项式分布中取样生成文档i第 j 个词的主题
- 从狄利克雷分布中取样生成主题对应的词语分布
- 从词语的多项式分布中采样最终生成词语
其中,类似Beta分布是二项式分布的共轭先验概率分布,而狄利克雷分布(Dirichlet分布)是多项式分布的共轭先验概率分布。
此外,LDA的图模型结构如下图所示(类似贝叶斯网络结构):
恩,不错,短短6句话整体概括了整个LDA的主体思想!但也就是上面短短6句话,却接连不断或重复出现了二项分布、多项式分布、beta分布、狄利克雷分布(Dirichlet分布)、共轭先验概率分布、取样,那么请问,这些都是啥呢?
这里先简单解释下二项分布、多项分布、beta分布、Dirichlet 分布这4个分布。
- 二项分布(Binomial distribution)。
对于k = 0, 1, 2, ..., n,其中的 是二项式系数(这就是二项分布的名称的由来),又记为 。回想起高中所学的那丁点概率知识了么:想必你当年一定死记过这个二项式系数 就是 。
- 多项分布,是二项分布扩展到多维的情况。
多项分布的概率密度函数为:
- Beta分布,二项分布的共轭先验分布。
其中 :
, 。注: 便是所谓的gamma函数,下文会具体阐述。
- 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 随机变量
- 把这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 个数。如下图所示:
从而问题转换为下述事件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小,个比大;
- 那么,请问的分布是什么。
熟悉贝叶斯方法(不熟悉的没事,参见 此文第一部分)的朋友心里估计又犯“嘀咕”了,这不就是贝叶斯式的思考过程么?
- 为了猜测,在获得一定的观测数据前,我们对的认知是:,此称为的先验分布;
- 然后为了获得这个结果“ 中有个比p小,个比大”,针对是做了次贝努利实验,所以服从二项分布;
- 在给定了来自数据提供的的知识后,的后验分布变为。
- 先验分布 + 样本信息 后验分布
其中 对应的是二项分布 的计数。 更一般的,对于非负实数 和 ,我们有如下关系
针对于这种观测到的数据符合二项分布,参数的先验分布和后验分布都是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。
- ,
- 排序后对应的顺序统计量,
- 问的联合分布是什么?
从而有:
继而得到于是我们得到的联合分布为:
观察上述式子的最终结果,可以看出上面这个分布其实就是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非变量,只是为了表达方便),现在要猜测以上是关于通俗理解LDA主题模型的主要内容,如果未能解决你的问题,请参考以下文章