本文后面很多内容都是参考博客: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简单摘要的更多相关文章

  1. MCMC&Gibbs sampling

    Note of Markov Chain Monte Carlo and Gibbs Sampling :  http://pan.baidu.com/s/1jHpWY1o 序:A major lim ...

  2. 随机采样方法整理与讲解(MCMC、Gibbs Sampling等)

    本文是对参考资料中多篇关于sampling的内容进行总结+搬运,方便以后自己翻阅.其实参考资料中的资料写的比我好,大家可以看一下!好东西多分享!PRML的第11章也是sampling,有时间后面写到P ...

  3. 机器学习方法(八):随机采样方法整理(MCMC、Gibbs Sampling等)

    转载请注明出处:Bin的专栏,http://blog.csdn.net/xbinworld 本文是对参考资料中多篇关于sampling的内容进行总结+搬运,方便以后自己翻阅.其实参考资料中的资料写的比 ...

  4. 随机采样方法整理与讲解(Acceptance-Rejection、MCMC、Gibbs Sampling等)

    本文是对参考资料中多篇关于sampling的内容进行总结+搬运,方便以后自己翻阅.其实参考资料中的资料写的比我好,大家可以看一下!好东西多分享!PRML的第11章也是sampling,有时间后面写到P ...

  5. 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 ...

  6. 【转载】MCMC和Gibbs Sampling算法

    转载随笔,原贴地址:MCMC和Gibbs Sampling算法 本文是整理网上的几篇博客和论文所得出来的,所有的原文连接都在文末. 在科学研究中,如何生成服从某个概率分布的样本是一个重要的问题.如果样 ...

  7. 随机模拟MCMC和Gibbs Sampling

    随机模拟 统计模拟中有一个重要的问题就是给定一个概率分布 p(x),我们如何在计算机中生成它的样本.一般而言均匀分布 Uniform(0,1)的样本是相对容易生成的. 通过线性同余发生器可以生成伪随机 ...

  8. LDA-math-MCMC 和 Gibbs Sampling

    http://cos.name/2013/01/lda-math-mcmc-and-gibbs-sampling/ 3.1 随机模拟 随机模拟(或者统计模拟)方法有一个很酷的别名是蒙特卡罗方法(Mon ...

  9. 随机采样和随机模拟:吉布斯采样Gibbs Sampling

    http://blog.csdn.net/pipisorry/article/details/51373090 吉布斯采样算法详解 为什么要用吉布斯采样 通俗解释一下什么是sampling. samp ...

随机推荐

  1. java两种动态代理方式的理解

    要理解动态代理,不妨先来看看一个静态代理的例子. 一.静态代理 以一个电商项目的例子来说明问题,比如我定义了一个订单的接口IOrder,其中有一个方法时delivery,代码如下. package c ...

  2. immutable.js 更新数组(mergeDeepWith)

    使用情境: 技术栈为:react + redux + antd (reducer中处理数据使用了immutable.js). 问题:如下图,做一个搜索功能,form表单每改变一次,都会调用一个upda ...

  3. android 分享一个处理BaseAdapter,getView()多次加载的方法

    一:BaseAdapter介绍 BaseAdapter是listview,gridview等列表,使用的数据适配器,它的主要用途是将一组数据传到ListView.Spinner.Gallery及Gri ...

  4. linux系统下安装单台Redis

    注意:搭建redis前一定要安装gcc redis安装方式一 1.安装gcc命令:yum install -y gcc #安装gcc [root@localhost src]# yum install ...

  5. .Net6种成员的可访问性

    CLR术语 C#术语 描述 Private private 成员只能由定义类型或任何嵌套类型访问 Family protected 成员只能由定义类型,任何嵌套类型或者不管在任何程序集中声明的派生类型 ...

  6. 从源码角度简单看StringBuilder和StringBuffer的异同

    概述 StringBuilder和StringBuffer是两个容易混淆的概念,本文从源码入手,简单看二者的异同. 容易知道的是,这两者有一个是线程安全的,而且线程安全的那个效率低. java doc ...

  7. 《编程人生:15位软件先驱访谈录》【PDF】下载

    <编程人生:15位软件先驱访谈录>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382231 内容简介 本书适合所有程序员,也适合 ...

  8. docker容器自动退出的问题

    如果用了一段时间的docker就会发现,我们的容器经常用了一段时间就自动退出了,docker ps已经找不到了,在docker ps -a里面了,然后我们docker start containerI ...

  9. JDBC结果集rs.next()注意事项

    写在前面: 用JDBC从数据库中查询数据要用到结果集ResultSet,其中我们在获取结果的时候经常用到rs.next()方法来判断是否查询到了数据. 但是要特别注意,next()方法用一次,游标就往 ...

  10. list对象数组,xpath复杂定位校验,POST入参为number数组,POST入参为JSON对象数组

    list对象数组: POST入参为number数组: {    "typeIds":[1,2,3]} POST入参为JSON对象数组,举例: [{    "itemId& ...