作者:Thomas Wayne
链接:http://www.zhihu.com/question/26751755/answer/80931791
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最近问的人有点多,打算写一系列“简单易懂地理解XXX系列”。
今天来讲一下dirichlet distribution和dirichlet process怎么回事。力求让初学者看懂,而且我比较追求motivation,追求数学严谨性和简洁性的大神请移步不要看了。不喜欢看各种细节的也可以直接跳着看文中的结论。

实际上这是学习nonparametric bayesian里常见的困惑,有些同学碰到paper或者PPT读着读着发现怎么就弄出一个dirichlet distribution了?这里面有什么intuition吗?
读三遍:要想简单地理解,还得要先从简单的例子讲起。

要想易懂地理解dirichlet distribution,首先先得知道它的特殊版本beta distribution干了什么。而要理解beta distribution有什么用,还得了解Bernoulli process。

首先先看Bernoulli process。要理解什么是Bernoulli process,首先先看什么Bernoulli trial。Bernoulli trial简单地说就是一个只有两个结果的简单trial,比如抛硬币
那我们就用抛一个(不均匀)硬币来说好了,X = 1就是头,X = 0就是字,我们设定q是抛出字的概率。
那什么是bernoulli process?就是从Bernoulli population里随机抽样,或者说就是重复的独立Bernoulli trials,再或者说就是狂抛这枚硬币n次记结果吧(汗=_=)。好吧,我们就一直抛吧,我们记下X=0的次数k.

现在问题来了。
Q:我们如何知道这枚硬币抛出字的概率?我们知道,如果可以一直抛下去,最后k/n一定会趋近于q;可是现实中有很多场合不允许我们总抛硬币,比如我只允许你抛4次。你该怎么回答这个问题?显然你在只抛4次的情况下,k/n基本不靠谱;那你只能"猜一下q大致分布在[0,1]中间的哪些值里会比较合理",但绝不可能得到一个准确的结果比如q就是等于k/n。

举个例子,比如:4次抛掷出现“头头字字”,你肯定觉得q在0.5附近比较合理,q在0.2和0.8附近的硬币抛出这个结果应该有点不太可能,q = 0.05和0.95那是有点扯淡了。
你如果把这些值画出来,你会发现q在[0,1]区间内呈现的就是一个中间最高,两边低的情况。从感性上说,这样应当是比较符合常理的。

那我们如果有个什么工具能描述一下这个q可能的分布就好了,比如用一个概率密度函数来描述一下? 这当然可以,可是我们还需要注意另一个问题,那就是随着n增长观测变多,你每次的概率密度函数该怎么计算?该怎么利用以前的结果更新(这个在形式上和计算上都很重要)?

到这里,其实很自然地会想到把bayes theorem引进来,因为Bayes能随着不断的观测而更新概率;而且每次只需要前一次的prior等等…在这先不多说bayes有什么好,接下来用更形式化语言来讲其实说得更清楚。

我们现在用更正规的语言重新整理一下思路。现在有个硬币得到random sample X = (x1,x2,...xn),我们需要基于这n次观察的结果来估算一下q在[0,1]中取哪个值比较靠谱,由于我们不能再用单一一个确定的值描述q,所以我们用一个分布函数来描述:有关q的概率密度函数(说得再简单点,即是q在[0,1]“分布律”)。当然,这应当写成一个条件密度:f(q|X),因为我们总是观测到X的情况下,来猜的q。

现在我们来看看Bayes theorem,看看它能带来什么不同:

在这里P(q)就是关于q的先验概率(所谓先验,就是在得到观察X之前,我们设定的关于q的概率密度函数)。P(q|x)是观测到x之后得到的关于q的后验概率。注意,到这里公式里出现的都是"概率",并没有在[0,1]上的概率密度函数出现。为了让贝叶斯定理和密度函数结合到一块。我们可以从方程两边由P(q)得到f(q),而由P(q|x)得到f(q|x)。
又注意到P(x)可以认定为是个常量(Q:why?),可以在分析这类问题时不用管。那么,这里就有个简单的结论——关于q的后验概率密度f(q|x)就和“关于q的先验概率密度乘以一个条件概率"成比例,即:

带着以上这个结论,我们再来看这个抛硬币问题:
连续抛n次,即为一个bernoulli process,则在q确定时,n次抛掷结果确定时,又观察得到k次字的概率可以描述为:
那么f(q|x)就和先验概率密度乘以以上的条件概率是成比例的:

虽然我们不知道,也求不出那个P(x),但我们知道它是固定的,我们这时其实已经得到了一个求f(q|x)的公式(只要在n次观测下确定了,f(q)确定了,那么f(q|x)也确定了)。

现在在来看f(q)。显然,在我们对硬币一无所知的时候,我们应当认为硬币抛出字的概率q有可能在[0,1]上任意处取值。f(q)在这里取个均匀分布的密度函数是比较合适的,即f(q) = 1 (for q in [0,1]) 。
有些同学可能发现了,这里面那个乘上[0,1]的均匀分布不就是一个Beta distribution么
对,它就是一个Beta distribution。Beta distribution由两个参数alpha、beta确定;在这里对应的alpha等于k+1,beta等于n+1-k。而均匀分布的先验密度函数,就是那个f(q)也可以被beta distribution描述,这时alpha等于1,beta也等于1。

更有意思的是,当我们每多抛一次硬币,出现字时,我们只需要alpha = alpha + 1;出现头只需要beta = beta + 1。这样就能得到需要估计的概率密度f(q|x)…

其实之所以计算会变得这么简单,是因为被beta distribution描述的prior经过bayes formula前后还是一个beta distribution;这种不改变函数本身所属family的特性,叫共轭(conjugate)

ok。讲到这你应该明白,对于有两个结果的重复Bernoulli trial,我们用beta prior/distribution就能解决。那么加入我们有n个结果呢?比如抛的是骰子?
这时候上面的Bernoulli trial就要变成有一次trial有k个可能的结果; Bernoulli distribution就变成multinomial distribution。而beta distribution所表述的先验分布,也要改写成一个多结果版本的先验分布。那就是dirichlet distribution。
均匀的先验分布Beta(1,1)也要变成k个结果的Dir(alpha/K)。dirichlet prior也有共轭的性质,所以也是非常好计算的。
简而言之,就是由2种外推到k种,而看待它们的视角并没有什么不同。
他们有着非常非常非常相似的形式。

结论1:dirichlet distribution就是由2种结果bernoulli trial导出的beta distribution外推到k种的generalization

关于狄利克雷分布的理解相关推荐

  1. 狄利克雷分布公式_关于狄利克雷分布的理解

    近期问的人有点多,打算写一系列"简单易懂地理解XXX系列". 今天来讲一下dirichlet distribution和dirichlet process怎么回事.力求让刚開始学习 ...

  2. 【Basis】狄利克雷分布

    初次看狄利克雷分布,比较懵,主要是它有很多先行知识,所以我先介绍狄利克雷分布用到的多项式分布.gamma 函数.beta分布,然后再介绍狄利克雷分布.参考文献见文章末. 目录 一.多项式分布 mult ...

  3. 如何通俗理解 beta分布、汤普森采样和狄利克雷分布

    如果想理解汤普森采样算法,就必须先熟悉了解贝塔分布. 一次伯努利实验(比如扔硬币,二元变量)叫做伯努利分布(Bernoulli distribution).多次伯努利实验叫做二项式分布(Binomia ...

  4. 超详细理解Gamma分布,Beta分布,多项式分布,Dirichlet狄利克雷分布

    项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 欢迎大家star,留言,一起学习进步 1.Gamma函数 首先我们可以看一下 ...

  5. 我对隐含狄利克雷分布(Latent Dirichlet Allocation,LDA)的理解

    LDA应用场景 可以做文本内容提取,比如提取"穆斯林的葬礼"的主题,可能会提取出爱情主题,社会悲剧主题,比如提取"大圣归来影评"的主题,可能提取出怀旧主题,制作 ...

  6. Dirichlet Distribution狄利克雷分布 / Latent Dirichlet Allocation (LDA)隐藏狄利克雷概念的理解

    目录: Dirichlet Distribution 狄利克雷分布 Bayesian Generative Models 贝叶斯生成模型 Mixture Models and the EM algor ...

  7. 有人问你如何掌握隐含狄利克雷分布(LDA),把这篇文章甩给他

    作者 | 玉龍 一.简介 隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA)是由 David M. Blei.Andrew Y. Ng.Michael I. Jor ...

  8. 狄利克雷分布公式_深入机器学习系列11-隐式狄利克雷分布

    转载请注明出处,该文章的官方来源: LDA | Teaching ML 前言 LDA是一种概率主题模型:隐式狄利克雷分布(Latent Dirichlet Allocation,简称LDA).LDA是 ...

  9. 狄利克雷分布公式_Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)...

    Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程) Dirichlet Distribution(狄利克雷分布)与Dirichlet Pr ...

最新文章

  1. 【Git】Git 分支管理 ( 删除远程分支 | 查看远程分支 git branch -a | 删除远程分支 git push origin --delete feature1 )
  2. 粤桂协作消费对接活动 农业大健康·李喜贵:功能性农业合作研究
  3. pdf在html网页中打开是乱码,pdf.js浏览中文pdf乱码的问题解决
  4. Java嵌入式数据库H2学习总结(一)——H2数据库入门
  5. c语言第八章函数程序设计,C语言程序设计-第八章 函数.ppt
  6. 一步一步學習partition之range分區如何創建
  7. 字节跳动面试官:千峰java培训多少钱
  8. Mac配置环境变量(Java,Android,Gradle,Maven,Hosts)
  9. CSDN账号注销的问题:手机号注册的CSDN号是可以注销的
  10. 基于JavaWeb的小区车辆信息管理系统
  11. 织梦dede仿站模板标签大全(最全)附带仿站工具
  12. 时分秒毫秒 正则表达式
  13. Kali自带密码字典rockyou.txt解压
  14. 1.2编程基础之变量定义、赋值及转换
  15. 使用frp配置内网访问(穿透)教程(超详细,简单)
  16. word文档中插入公式的技巧--利用表格
  17. mysql笔试题一:查询where having 以及统计函数的使用
  18. java 1603,win10系统安装软件提示功能传送错误1603的处理方法
  19. DRV8833真值表
  20. nginx交叉编译流程

热门文章

  1. python怎么批量下载年报_如何使用python批量下载统计年鉴中的excel网页?
  2. 太原市社会保险新数据中心建设及系统搬迁项目
  3. 计算机设置用户名密码,电脑账户密码如何设置/修改?
  4. 从抄书到开源之巅:章亦春的程序人生
  5. Xyz贴图ZWrap操作
  6. Matlab中创建一个矩阵的3种常用方法
  7. XYQ加密算法——动态可逆加密算法。
  8. SSS1630规格书|SSS1630中文设计方案|USB音频解码方案
  9. python计算差商_Python实现牛顿插值法(差商表)
  10. STM32F411核心板固件库开发(四) ADC配置