Latent dirichlet allocation note -- Prepare

转载 2012年03月21日 10:29:02

转自莘莘学子blog : http://ljm426.blog.163.com/blog/static/120003220098110425415/

By: Zhou, Blog: http://foreveralbum.yo2.cn

1 基础知识

1.1 贝叶斯统计

假设有两个箱子,每个箱子装了8个球,A箱子3个红球5个白球,B箱子6个红球2个白球。如果问从A箱子摸出一个红球的概率,那么答案是3/8,如果问从B箱子摸出一个白球的概率,那么为2/8。这样的正向推理很简单。但是如果问摸出一个红球,它是从A箱子中摸出的概率是多少,这又如何求呢?贝叶斯方法正是用来求这种”逆”概率。

P(X,Y)表示X,Y的联合概率,有如下公式P(X,Y)=P(Y|X)P(X),由于P(X,Y)=P(Y,X),于是我们得到P(Y|X)P(X)=P(X|Y)P(Y),将左边P(X)移到右边得到:

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

这就是贝叶斯公式,其中P(Y|X)称为后验分布,P(X)称为先验分布,P(X|Y)称为似然函数。贝叶斯问题的详细描述可以参考Pattern Recognition and Machine Learning[1].该书第一章对贝叶斯方法做了详细的解释。

下面讨论一个概率问题,一对夫妇有两个孩子,已知其中一个是男孩,问另一个也是男孩的概率?

令A=另一个也是男孩 B=已知其中一个是男孩

由贝叶斯:P(A|B) = P(B|A)P(A)/P(B)

其中 P(B|A) = 1 ,因为另一个也是男孩,表示两个都是男孩。

P(A) = 0.25 即如果有两个孩子,两个都是男孩的概率0.25

P(B) = 0.75 即如果有两个孩子,那么其中一个是男孩的概率为0.75

因此P(A|B) = 1*0.25/0.75=1/3

1.2 Dirichlet distribution

假设我们在和一个不老实的人玩掷骰子游戏。按常理我们觉得骰子每一面出现的几率都是1/6,但是掷骰子的人连续掷出6,这让我们觉得骰子被做了手脚,而这个骰子出现6的几率更高。而我们又不确定这个骰子出现6的概率到底是多少,所以我们猜测有50%的概率是:6出现的概率2/7,其它各面1/7;有25%的概率是:6出现的概率3/8,其它各面1/8;还有25%的概率是:每个面出现的概率都为1/6,也就是那个人没有作弊,走运而已。用图表表示如下:

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

我们所猜测的值,如果设为X的话,则表示X的最自然的分布便是Dirichlet distribution。设随机变量X服从Dirichlet分布,简写为Dir(α),即X~Dir(α)。Α是一个向量,表示的是某个事件出现的次数。比如对于上例,骰子的可能输出为{1,2,3,4,5,6},假设我们分别观察到了5次1~5,10次6,那么α = {5,5,5,5,5,10}。X则表示上例中的各种概率组合,比如{1/7,1/7,1/7, 1/7,1/7,2/7};{1/8, 1/8, 1/8, 1/8, 1/8, 3/8};{1/6, 1/6, 1/6, 1/6, 1/6, 1/6},那么P(X)则表示了该概率组合出现的概率,也就是概率的概率。

以下是公式:

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

下图来自WIKI[2],图像化了当K=3时的dirichlet分布。

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

Dirichlet分布的重要性质:

Dirichlet分布是多项分布的共轭分布,也就是说,先验分布为Dirichlet分布,似然函数为多项分布,那么后验分布仍为Dirichlet分布。

在LDA中,Dirichlet分布是为了描述文档—主题层面的概率分布,一个文档由多个主题组成,而Dirichlet分布描述了主题集合的分布。具体将在后面讨论。

之所以选择Dirichlet分布是因为其共轭特性大大减小了计算量。

1.3 Expectation-Maximization (EM) Algorithm[3][4]

EM算法是用来计算极大似然估计。EM有两个主要应用环境,第一个是观测到的数据不完整或其它原因导致数据丢失,第二个是似然函数无法直接计算但可以用隐含变量表示。LDA中的参数估计属于后者。

概括的说,EM算法首先随机给每个参数赋值,然后迭代的执行两个步骤,分别叫做E-STEP和M-STEP。在E-STEP,EM算法计算出期望的似然函数,由于这时已经为所有参数赋值,所以似然函数是可以计算的。在M-STEP,EM算法重新估计参数值,按照最大化似然函数的标准。这样多次迭代直到收敛为止。

本文大致讨论下EM的推理,更具体的分析参考Further Reading中EM相关资料。

假设某次迭代中我们估计的参数是θ(n),而我们的目的是希望找到θ(n+1)使得P(X|θ(n+1))尽可能的大于P(X|θ(n))。将lnP(X|θ)表示成L(θ|X),则我们的目标是使使下式尽可能的大:

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel(1)

现在考虑隐含变量Z:

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

于是(1)式改写成:

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel(2)

下面是The Expectation Maximization Algorithm A short tutorial[3]关于(2)式的推导:

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

因此:

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel(3)

现在令:

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel(4)

前面已经提高过,我们的目的是找到θ,使得L(θ)最大。而从(3),(4)中我们可以看到l(θ|θn)就是L(θ)的下界,所以我们的目标就成了找到一个下界逼近L(θ):

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

E-STEP:

计算条件数学期望Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

M-STEP:

最大化这个数学期望,得出此时的θ。

1.4 Variational Inference[5]

Variational Inference是用来估计后验分布的方法。该方法无法直接计算后验分布的情况。在Variational Message Passing and its Applications[5]的1.8节有该方法的非常详细的推理,我这里只大致介绍该方法的思想。

当我们遇到无法计算后验分布的情况,会希望使用一个函数来近似它,设为Q:

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

我们自然希望P,Q的差最小。这里的差用 Kullback-Leibler (KL) divergence表示:

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

经过下式的变换:

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

可以从上面看到,右边的logP(D)不依赖于Q,所以我们的工作相当于使右式加号左边的表达式最小。另该项为L(Q):

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

经过推导(具体见论文[5])可得下式:

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

右边第一项为似然函数,第二项L(Q)相当于一个下界。要使KL尽量下,就要使右边两项尽可能的接近。所以L(Q)相当于logP(D|H)的下界。我们现在要做的,就是用L(Q)下届逼近logP(D|H)。还要记住我们是要用Q(H)来近似后验分布,因此我们需要找一个可解的Q。最简单的方法是认为Q的n个参数都是独立的,于是:

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

根据这个前提,就可以迭代来求L(Q),直到收敛。具体过程参见Variational Message Passing and its Applications

1.5 Bayesian Network

在LDA原始paper[6]中有幅贝叶斯网络图,想看懂这幅图只需要一点贝叶斯网络的基础知识就可以了,所以这里把需要理解的地方列出来,贝叶斯网络的深入讨论可以参考Pattern Recognition and Machine Learning[1]一书第8章。

先举一个例子:联合概率P(a,b,c)=P(c|a,b)P(b|a)P(a)可以表示为如下图

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

箭头表示条件概率,圆圈表意一个随机变量。这样我们就可以很容易的画出一个条件概率对于的贝叶斯网络。

对于更复杂的概率模型,比如

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

由于有N个条件概率,当N很大时,在图中画出每一个随机变量显然不现实,这是就要把随机变量画到方框里:

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

这就表示重复N个tn.

在一个概率模型中,有些是我们观察到的随机变量,而有些是需要我们估计的随机变量,这两种变量有必要在图中区分开:

Latent dirichlet allocation note -- Prepare - 伊之魅 - jumay angel

如上图,被填充的圆圈表明该随机变量被观察到并已经设为了被观察到的值。

了解上面三个定理就能轻松的读懂LDA原始paper中的贝叶斯网络图了。

Latent dirichlet allocation note

2 Latent Dirichlet Allocation Introduction LDA是给文本建模的一种方法,它属于生成模型。生成模型是指该模型可以随机生成可观测的数据,LDA可以随机...

Latent Dirichlet Allocation,在C++实现

  • 2009年05月29日 17:50
  • 208KB
  • 下载

LDA(Latent Dirichlet Allocation)主题模型

  • 2016年03月12日 15:51
  • 24.74MB
  • 下载

文本处理、图像标注中的一篇重要论文Latent Dirichlet Allocation

http://bbs.byr.cn/#!article/PR_AI/2530?p=5 LatentDirichlet Allocation David.M.Blei Andrew.Y.Ng  M...

Latent Dirichlet allocation code

  • 2010年05月05日 12:52
  • 24KB
  • 下载

Latent Dirichlet Allocation MATLAB packege

  • 2011年10月29日 16:25
  • 24KB
  • 下载

关于Latent Dirichlet Allocation及Hierarchical LDA模型的必读文章和相关代码

LDA和HLDA: (1)D. M. Blei, et al., "Latent Dirichlet allocation," Journal of Machine Learning Researc...

Latent Dirichlet Allocation算法论文

  • 2010年09月18日 13:25
  • 375KB
  • 下载

latent Dirichlet allocation (LDA)

转自:http://www.shamoxia.com/html/y2010/1384.html Latent Dirichlet Allocation(LDA) [pdf]模型是近年来提出的一种具有文...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Latent dirichlet allocation note -- Prepare
举报原因:
原因补充:

(最多只允许输入30个字)