MCMC,GIBBS SAMPLING简单摘要
本文后面很多内容都是参考博客:http://www.cnblogs.com/xbinworld/p/4266146.html。本文主要用作学习交流备忘用。
1)简述:
随机模拟也可以叫做蒙特卡洛模拟,其中一个很重要的问题就是指定一个概率分布p(x),然后在计算机中生成它的样本。
2)MC核心思想:
当我们无法精确精算和或者积分时,可以把和或者积分视作某种分布下的期望,然后通过估计对应的平均值来近似这个期望。

3)产生的问题与改进
在上述式子中,我们依赖于基本分布p(x),而且该分部可以让我们轻易的采样。但是实际中这个条件并不都是成立的。当我们无法从p中采样时,一个方案是重要采样,另一种是使用一个趋近于目标分部估计的序列即MCMC(马尔科夫蒙塔卡洛方法)
4)重要采样的方法
令:p(x)f(x)=
。在这里我们从q中进行采样,然后估计
的均值。
问题:对于上述式子,对于任意的q分布都是可行的,如果从方差最小的角度选择最优q分布,虽然能够最优q分布可以得到,但是从中采样是不可行的。但是其他的仍然能够降低方差的q还是可行的。
另外一个好的q分布很难取得。因为如果一个q使得
很大,那么这个估计的方差也会很大。因为我们经常会取一些简单的分布作为q。但是当x是高维数据的时候,q分布的简单性很难与p或者pf相匹配。当q>>pf时候,重要采样采到了很多无用的样本(权值之和很小,或趋近于0)。当q<<pf时候,样本很少被采集到,其对应的权值会非常大。
尽管存在很多风险,重要采样在机器学习和深度学习中仍有重要的作用: 重要采样被应用于加速训练具有大规模词汇的神经网络语言模型的过程中或者其他有着大量输出结点的神经网络中。此外,还可以看到重要采样应用于估计配分函数(一个概率分布的归一化常数)的过程中以及在深度有向图模型比如变分自编码器中估计似然函数的对数。采用随机梯度下降训练模型参数的时候重要采样可以用来改进对代价函数梯度的估计,尤其是针对于分类器模型的训练中一小部分错误分类样本产生的代价函数。在这种情况下更加频繁地采集这些困难的样本可以降低梯度估计的误差。
5)马尔科夫链和马尔科夫稳态
马氏链定理:如果一个非周期马氏链具有状态转移概率矩阵P,且它的任何两个状态是联通的,那么
存在,且与i无关(i表示初始状态),记
=π(j)。即沿着状态转移矩阵进行转移,无论初始状态为什么,最终都会收敛到一个稳定分布π=[π(1),π(2)….]。
所以一个理想的情况是:找到转移矩阵为p的马氏链,使得该马氏链的平稳分布恰好是p(x),那么我们从任一个初始状态x0出发,得到一个转移序列x1,x2,….如果其在xi处收敛,则x(i+1)…..就是我们要取的样本。
细致平稳条件:




此时取:
则有:

6)MCMC-Gibbs Sampling

Gibbs-Sampling算法:



参考文献:
[1]http://www.cnblogs.com/xbinworld/p/4266146.html
[2]
http://blog.csdn.net/xianlingmao/article/details/7768833
[3] http://www.cnblogs.com/daniel-D/p/3388724.html
[4] http://cos.name/2013/01/lda-math-mcmc-and-gibbs-sampling/
[5] An Introduction to MCMC for Machine Learning,2003
[6] Introduction to Monte Carlo Methods
[7]深度学习
MCMC,GIBBS SAMPLING简单摘要的更多相关文章
- MCMC&Gibbs sampling
Note of Markov Chain Monte Carlo and Gibbs Sampling : http://pan.baidu.com/s/1jHpWY1o 序:A major lim ...
- 随机采样方法整理与讲解(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 ...
- PRML读书会第十一章 Sampling Methods(MCMC, Markov Chain Monte Carlo,细致平稳条件,Metropolis-Hastings,Gibbs Sampling,Slice Sampling,Hamiltonian MCMC)
主讲人 网络上的尼采 (新浪微博: @Nietzsche_复杂网络机器学习) 网络上的尼采(813394698) 9:05:00 今天的主要内容:Markov Chain Monte Carlo,M ...
- 【转载】MCMC和Gibbs Sampling算法
转载随笔,原贴地址:MCMC和Gibbs Sampling算法 本文是整理网上的几篇博客和论文所得出来的,所有的原文连接都在文末. 在科学研究中,如何生成服从某个概率分布的样本是一个重要的问题.如果样 ...
- 随机模拟MCMC和Gibbs Sampling
随机模拟 统计模拟中有一个重要的问题就是给定一个概率分布 p(x),我们如何在计算机中生成它的样本.一般而言均匀分布 Uniform(0,1)的样本是相对容易生成的. 通过线性同余发生器可以生成伪随机 ...
- LDA-math-MCMC 和 Gibbs Sampling
http://cos.name/2013/01/lda-math-mcmc-and-gibbs-sampling/ 3.1 随机模拟 随机模拟(或者统计模拟)方法有一个很酷的别名是蒙特卡罗方法(Mon ...
- 随机采样和随机模拟:吉布斯采样Gibbs Sampling
http://blog.csdn.net/pipisorry/article/details/51373090 吉布斯采样算法详解 为什么要用吉布斯采样 通俗解释一下什么是sampling. samp ...
随机推荐
- 面向矩阵的numpy入门笔记
我先声明我学numpy的目的:在python中使用矩阵(我需要在机器学习中使用矩阵),所以我的目的很明确,矩阵: 矩阵在numpy中叫ndarray(The N-dimensional array), ...
- MySQL 导入外部数据时报错:1153: Got a packet bigger than 'max_allowed_packet' 解决方案
MySQL 导入外部数据时报错:1153: Got a packet bigger than 'max_allowed_packet' 解决方案 zoerywzhou@163.com http://w ...
- Intellij IDEA 安装和配置jrebel进行项目的热部署
Jrebel 先介绍一下jrebel,jrebel是可以热部署项目的一个工具,更改代码自动部署并不需要重启项目(在spring中的controller中,增加.修改方法都是可以进行热部署而不需要重启的 ...
- 【java设计模式】【行为模式Behavioral Pattern】模板方法模式Template Method Pattern
package com.tn.pattern; public class Client { public static void main(String[] args) { AbstractClass ...
- 开源API测试工具 Hitchhiker v0.7更新 - Schedule的对比diff
Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持脚本定制请求,可以轻松部署到本地,和你的team成员一起协作测试Ap ...
- & 与 kill -3
mysqld_safe --defaults-file=/app/3307/my.cnf 2>&1 1>/dev/null & 将mysqld服务进程放入后台后, 因为忘记 ...
- Java ArrayIndexOutOfBoundsException: Exception Hierarchy
- 由于DG Broker的配置导致RAC某实例无法mount
今天碰到一个我自己实验室发生的故障,起初看起来很简单,但实际上还很有趣,而且不细心的话还容易被忽视掉.相信在生产环境也会有客户会实际遇到. 环境:Oracle 11.2.0.4 RAC (2 node ...
- 通过js添加的元素点击事件无法触发
var blk_have ='<div class="sw-off"></div>'; $('#blk').prepend(blk_have); $(doc ...
- 浅谈JavaScript的面向对象程序设计(一)
面向对象的语言有一个标志,他们都有类的概念,通过类可以创建多个具有相同属性和方法的对象.但是JavaScript中没有类的概念,因此JavaScript与其他的面向对象语言还是有一定区别的.JavaS ...