随机采样和随机模拟:吉布斯采样Gibbs Sampling实现高斯分布参数推断
http://blog.csdn.net/pipisorry/article/details/51539739
吉布斯采样的实现问题
本文主要说明如何通过吉布斯采样来采样截断多维高斯分布的参数(已知一堆截断高斯分布的数据,推断其参数( μ , Σ ))。
关于吉布斯采样的介绍文章都停止在吉布斯采样的详细描述上,如随机采样和随机模拟:吉布斯采样Gibbs Sampling(why)但并没有说明吉布斯采样到底如何实现的(how)?
也就是具体怎么实现从下面这个公式采样?
下面介绍如何为多维正态分布构建一个吉布斯采样器,来采样截断多维高斯分布的参数。
模型的表示
思路:要求吉布斯采样的两个维度mu和sigma的条件概率,就要先求出在数据x下mu和sigma的联合概率密度(似然函数),而这个就先要知道在mu和sigma下x的概率密度(就是高斯分布呀)以及mu和sigma的先验概率分布。
y为均值为μ协方差矩阵为 Σ的( N × 1)正态随机向量,其概率密度函数pdf为:
[概率论:高斯分布]
假设x是y的截断truncated版本,有同样的参数location and scale parameters μ and Σ , 只是截断到区域 R = { ( a i < x i < b i ), i = 1,2,... N } ,(a 可以为 −∞ or b 可以为 +∞ )。
x的pdf为:
I R ( x )是指示器函数:当x在区域R中时值为1,否则为0;
P ( μ , Σ ) ]− 1是正则化常数(由于截断),为
让 x = ( x 1 , x 2 ,..., x T ) 表示截断多维高斯分布pdf f ( x | μ , Σ ) 的随机采样
则随机采样x的pdf(μ 和 Σ的似然函数)为
高斯分布的先验和数据产生后验分布
( μ , Σ )的先验分布
设为noninformative diffuse prior(扩散先验密度),As a prior pdf for ( μ , Σ ) , we will use the conventional noninformative diffuse prior (see, for example, Zellner 1971, p.225)
故( μ , Σ )的后验分布
Combining this prior with the likelihood function yields the posterior pdf for ( μ , Σ )
得到后验分布后,我们可以从这些后验pdfs中采样,并利用这些采样值估计边缘后验分布和矩(moments)。
然而其中的和式没法消去,后面将介绍如何利用隐含变量消去它。
单变量高斯分布The Univariate Case
单变量高斯分布中,正则化因子式3变为:
where Φ (.) is the standard normal cumulative distribution function (cdf).
(μ , σ 2)的后验pdf (式6)为
然而从上式没法得到f ( σ 2 | x ) and f ( μ | x ):It is not possible to analytically integrate out μ or σ 2 from this pdf to obtain the marginal posterior pdfs f ( σ 2 | x ) and f ( μ | x ) . Also, because the conditional posterior pdfs f ( σ 2 | μ , x ) and f ( μ | σ 2 , x ) are not recognisable, it is not possible to set up a Gibbs’ sampling algorithm that draws from these conditional pdfs.
所以我们添加对应x的隐含变量y:令y = ( y 1 , y 2 ,..., y T ) ′ , 可看作非截断正态分布N ( μ , σ 2 )的采样,并且和截断观测值x有直接的(确定性的deterministic)对应。
考虑采样观测值y t from N ( μ , σ 2 )和x t from N ( μ , σ 2 ) × I ( a , b ) ( x t )的逆累积分布函数(inverse cdf)方法:
给定均匀分布抽样Ufrom (0,1),y t and x t的抽样分别为:
。。。一堆推导(略)
得到x和y之间的确定deterministic关系
根据贝叶斯理论,我们可以重写μ , σ 2 and y的联合后验分布(joint posterior pdf)为
由于f ( x | y , μ , σ 2 ) = 1 when (12) holds, and is zero otherwise. The remaining terms on the right side of (13) involve y not x.则
where y is the sample mean of the y t and the relationship between y and x is given by (12).
式14中,吉布斯采样需要的条件后验pdfs分别为:
式16:Inverse-gamma distribution, i_gamma(alpha, beta)采样数据实际上就是gamma分布(alpha, beta^-1)采样数据取倒数。
IG的概率密度函数pdf为
综上,
吉布斯采样截断高斯分布参数算法
从后验pdf中生成( μ , σ 2 )的步骤为
Note: 这一步对于非截断正态分布参数的推断当然是不需要的,这时12式就是y = x.(ab都取相应无穷大时)。
Note:
第3步就是
第4步就是
同步图计算并行化处理
lz的不一定正确。。。
一维高斯参数推断
高斯分布参数均值mu和方差sigma作为吉布斯采样的两个坐标维度
吉布斯采样作为同步图节点,节点间是全连接的
将高斯分布数据划分为节点数目个文件提供给对应节点采样新维度
使用已有方法产生截断高斯分布的数据点,将数据分成M份,分布在M个worker节点中。
超步0
随机初始值作为mu和sigma的局部值,利用数据更新mu和sigma,传递mu和sigma的局部值给其它节点。(局部模型)
超步1+
每个节点收到其它节点发来的( μ , σ 2 )信息,重新计算( μ , σ 2 ),记录到文件中,并作为新一次迭代的初始值。(全局模型,替换局部模型)
所有节点重新运行吉布斯采样截断高斯分布参数算法,得到部分训练数据的参数采样结果( μ , σ 2 )。
将新采样的mu和sigma的局部值传递给其它节点。
或者可以每隔几个Gibbs sampling迭代结束超步进行同步,并准备进入下一个超步。而不是一次迭代就进入下一下超步。
判断程序是否终止
累加量acc,最大迭代步数。
[Distributed Inference for Latent Dirichlet Allocation]
最后lz有一个问题,吉布斯采样能用在连续的n维高斯分布采样中吗?如果可以如何实现,马尔可夫毯?
from: http://blog.csdn.net/pipisorry/article/details/51539739
ref: W. Griffiths. A Gibbs Sampler for the Parameters of a TruncatedMultivariate Normal Distribution.
随机采样和随机模拟:吉布斯采样Gibbs Sampling实现高斯分布参数推断的更多相关文章
- 随机模拟MCMC和Gibbs Sampling
随机模拟 统计模拟中有一个重要的问题就是给定一个概率分布 p(x),我们如何在计算机中生成它的样本.一般而言均匀分布 Uniform(0,1)的样本是相对容易生成的. 通过线性同余发生器可以生成伪随机 ...
- 随机采样和随机模拟:吉布斯采样Gibbs Sampling实现文档分类
http://blog.csdn.net/pipisorry/article/details/51525308 吉布斯采样的实现问题 本文主要说明如何通过吉布斯采样进行文档分类(聚类),当然更复杂的实 ...
- 随机采样和随机模拟:吉布斯采样Gibbs Sampling
http://blog.csdn.net/pipisorry/article/details/51373090 吉布斯采样算法详解 为什么要用吉布斯采样 通俗解释一下什么是sampling. samp ...
- [学习笔记] Gibbs Sampling
Gibbs Sampling Intro Gibbs Sampling 方法是我最近在看概率图模型相关的论文的时候遇见的,采样方法大致为:迭代抽样,最开始从随机样本中抽样,然后将此样本作为条件项,按条 ...
- 随机采样方法整理与讲解(MCMC、Gibbs Sampling等)
本文是对参考资料中多篇关于sampling的内容进行总结+搬运,方便以后自己翻阅.其实参考资料中的资料写的比我好,大家可以看一下!好东西多分享!PRML的第11章也是sampling,有时间后面写到P ...
- 机器学习方法(八):随机采样方法整理(MCMC、Gibbs Sampling等)
转载请注明出处:Bin的专栏,http://blog.csdn.net/xbinworld 本文是对参考资料中多篇关于sampling的内容进行总结+搬运,方便以后自己翻阅.其实参考资料中的资料写的比 ...
- 随机采样方法整理与讲解(Acceptance-Rejection、MCMC、Gibbs Sampling等)
本文是对参考资料中多篇关于sampling的内容进行总结+搬运,方便以后自己翻阅.其实参考资料中的资料写的比我好,大家可以看一下!好东西多分享!PRML的第11章也是sampling,有时间后面写到P ...
- Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 原理and实现
Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 1. 应用场景 1 2. 随机抽取数据原理 1 3. 常用的实现方法:::数据库随机函数 1 4. Mssq ...
- 5随机到7随机的C++实现
一.5随机到7随机 //给定条件 int Rand1To5(){ + ; } //实现代码,使用插空法和筛的过程 int Rand1To7(){ ; do{ tmp = (Rand1To5() - ) ...
随机推荐
- Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined)
运气好,分到的房里我最先开始Hack C题,Hack了12个,听说F题沙雕莫队但我不会,最后剩不到15分钟想出E题做法打了一波结果挂了,最后虽然上分了但总有点不甘心. 最后A掉ABCD Hack+12 ...
- poj3270 && poj 1026(置换问题)
| 1 2 3 4 5 6 | | 3 6 5 1 4 2 | 在一个置换下,x1->x2,x2->x3,...,xn->x1, 每一个置换都可以唯一的分解为若干个不交的循环 如上面 ...
- [bzoj5015][Snoi2017]礼物
来自FallDream的博客,未经允许,请勿转载,谢谢. 热情好客的请森林中的朋友们吃饭,他的朋友被编号为 1-N,每个到来的朋友都会带给他一些礼物:.其中,第一个朋友会带给他 1 个,之后,每一个朋 ...
- 浅谈java中内置的观察者模式与动态代理的实现
一.关于观察者模式 1.将观察者与被观察者分离开来,当被观察者发生变化时,将通知所有观察者,观察者会根据这些变化做出对应的处理. 2.jdk里已经提供对应的Observer接口(观察者接口)与Obse ...
- js黑魔法
清空一个数组 一直以来,清空一个数组都是var i = [1,2,3]; i = [];,习惯成自然,被自己坑了. 举个例子 var i = [1,2,3]; var obj = {val: i}; ...
- drool-6.5的自学demo
先丢代码地址 https://gitee.com/a247292980/drools 再丢pom.xml <project xmlns="http://maven.apache.org ...
- log4j的终极封装
通用型(再也不用每个类new一个logger了) public class Log { private static Map<String,Logger> loggerMap = new ...
- java中JSON转换
1.JSON介绍 JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串字符串 只不过元素会使用特定的符 ...
- Java实现23种设计模式
一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接 ...
- java中的构造,封装
今天给大家讲一下面向对象中的构造,封装: 构造:构造方法有以下几个特点:1.方法名和类名一致.2.无返回类型.接下来的几种构造样式,直接上代码吧: //这是一个宠物类 有一个属性:名字(name) p ...