Latent dirichlet allocation note -- Prepare
转自莘莘学子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)移到右边得到:
这就是贝叶斯公式,其中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,也就是那个人没有作弊,走运而已。用图表表示如下:
我们所猜测的值,如果设为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)则表示了该概率组合出现的概率,也就是概率的概率。
以下是公式:
下图来自WIKI[2],图像化了当K=3时的dirichlet分布。
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),则我们的目标是使使下式尽可能的大:
(1)
现在考虑隐含变量Z:
于是(1)式改写成:
(2)
下面是The Expectation Maximization Algorithm A short tutorial[3]关于(2)式的推导:
因此:
(3)
现在令:
(4)
前面已经提高过,我们的目的是找到θ,使得L(θ)最大。而从(3),(4)中我们可以看到l(θ|θn)就是L(θ)的下界,所以我们的目标就成了找到一个下界逼近L(θ):
E-STEP:
计算条件数学期望
M-STEP:
最大化这个数学期望,得出此时的θ。
1.4 Variational Inference[5]
Variational Inference是用来估计后验分布的方法。该方法无法直接计算后验分布的情况。在Variational Message Passing and its Applications[5]的1.8节有该方法的非常详细的推理,我这里只大致介绍该方法的思想。
当我们遇到无法计算后验分布的情况,会希望使用一个函数来近似它,设为Q:
我们自然希望P,Q的差最小。这里的差用 Kullback-Leibler (KL) divergence表示:
经过下式的变换:
可以从上面看到,右边的logP(D)不依赖于Q,所以我们的工作相当于使右式加号左边的表达式最小。另该项为L(Q):
经过推导(具体见论文[5])可得下式:
右边第一项为似然函数,第二项L(Q)相当于一个下界。要使KL尽量下,就要使右边两项尽可能的接近。所以L(Q)相当于logP(D|H)的下界。我们现在要做的,就是用L(Q)下届逼近logP(D|H)。还要记住我们是要用Q(H)来近似后验分布,因此我们需要找一个可解的Q。最简单的方法是认为Q的n个参数都是独立的,于是:
根据这个前提,就可以迭代来求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)可以表示为如下图
箭头表示条件概率,圆圈表意一个随机变量。这样我们就可以很容易的画出一个条件概率对于的贝叶斯网络。
对于更复杂的概率模型,比如
由于有N个条件概率,当N很大时,在图中画出每一个随机变量显然不现实,这是就要把随机变量画到方框里:
这就表示重复N个tn.
在一个概率模型中,有些是我们观察到的随机变量,而有些是需要我们估计的随机变量,这两种变量有必要在图中区分开:
如上图,被填充的圆圈表明该随机变量被观察到并已经设为了被观察到的值。
了解上面三个定理就能轻松的读懂LDA原始paper中的贝叶斯网络图了。
Latent dirichlet allocation note -- Prepare相关推荐
- Latent dirichlet allocation note
2 Latent Dirichlet Allocation Introduction LDA是给文本建模的一种方法,它属于生成模型.生成模型是指该模型可以随机生成可观测的数据,LDA可以随机生成一篇由 ...
- Introduction to Latent Dirichlet Allocation
Introduction to Latent Dirichlet Allocation 一,LDA最基本的思想:Bayes Chain LDA要做的事情就是将document投射到topic空间中 即 ...
- 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(三)
潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(三) 目录 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(三) 主题演 ...
- 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(二)
潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(二) 目录 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(二) LDA ...
- 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(一)
潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(一) 目录 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(一) LDA ...
- 潜在狄利克雷分配(Latent Dirichlet Allocation,LDA)
文章目录 1. 狄利克雷分布 2. 潜在狄利克雷分配模型 3. 学习推理 4. sklearn.decomposition.LatentDirichletAllocation 潜在狄利克雷分配(lat ...
- “西游记之大圣归来”短评主题分析-Latent Dirichlet Allocation
功能 输出影评主题: 输出每份评论在各个主题上的权重分布. 工具 python2 spark2.0.2 引言 在机器学习中,LDA是两个常用模型的简称:线性判别分析(Linear Discrimina ...
- 隐含狄利克雷分布(Latent Dirichlet Allocation)
隐含狄利克雷分布(Latent Dirichlet Allocation, 注意机器学习还有一个LDA,即线性判别分析(线性判别分析https://blog.csdn.net/qq_3529078 ...
- 简单易学的机器学习算法——Latent Dirichlet Allocation(理论篇)
引言 LDA(Latent Dirichlet Allocation)称为潜在狄利克雷分布,是文本语义分析中比较重要的一个模型,同时,LDA模型中使用到了贝叶斯思维的一些知识,这些知识是统计机器学习的 ...
最新文章
- 什么叫计算机网络阻塞,计算机网络体系结构的阻塞控制是什么呢?
- 通过System.Management获取操作系统信息
- xamarin和mysql_Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作
- java多个mapreduce_java – 在hadoop中运行多个MapReduce作业
- 引用js实现checkbox批量选中
- 在ASP.NET 3.5中使用新的ListView控件(3)
- .NET Core中Quartz.NET的依赖注入
- 【No.4 Ionic】修改 cordova 插件
- 试验笔记 - Eclipse的.class反编译插件
- 使用API网关构建微服务
- Intellij IDEA免费版方法(1)
- 你本是一个肉体,是什么驱使你前行【3】
- 皇家骑士团 100问
- qml+QQuickPaintedItem数学公式编辑器的实现
- 【调剂】广东海洋大学与湛江湾实验室2020年联合培养硕士研究生招生章程
- 当店办理层颁发声暗称偶然冲犯西邦己的豪情
- NB6612电机驱动与C8T6连接配置双电机
- 小米盒子运行linux,小米盒子刷机成砖的解救措施攻略详解
- android studio 小白使用记
- 【物联网03】 CentOS7编译EMQ源码
热门文章
- 【数据挖掘知识点五】层次聚类方法的理解
- 最长公共子序列Java代码实现
- Hadoop平台日志结构
- ubuntu部署eclipse兼容性问题
- VB Mid函数作用
- 有关子数组最大累加和的算法小结
- chrome 播放视频提示 adobe flash player已过期或者adobe flash player 没有安装
- linux杀java线程,如何在Linux下找出大量占用CPU的java线程
- javascript等待异步线程完成_JavaScript 中的异步原理
- AOP开发——在不修改源代码的前提下,对类里面的方法进行增强 : 前置 后置 环绕 异常||如何得到目标方法的参数和返回值