Metropolis-Hastings算法
(学习这部分内容大约需要1.5小时)
摘要
马尔科夫链蒙特卡洛(Markov chain Monte Carlo, MCMC)是一种近似采样算法, 它通过定义稳态分布为 \(p\) 的马尔科夫链, 在目标分布 \(p\) 中进行采样. Metropolis-Hastings 是找到这样一条马尔科夫链的非常一般的方法: 选择一个提议分布(proposal distribution), 并通过随机接受或拒绝该提议来纠正偏差. 虽然其数学公式是非常一般化的, 但选择好的提议分布却是一门艺术.
预备知识
学习 Metropolis-Hastings 算法需要以下预备知识
- 马尔科夫链蒙特卡洛(Markov chain Monte Carlo, MCMC): M-H 算法是 MCMC 算法的一个特例.
- 多元高斯分布: 高斯分布是M-H提议分布的典型例子.
学习目标
- 知道细致平衡条件(detailed balance conditions)说的是啥
- 知道 Metropolis-Hastings 算法的定义
- 证明 M-H 算法满足细致平衡条件
- 如果不仔细选择提议分布, 请注意可能的故障模式: 缓慢的 mixing 和低接受概率.
核心资源
(阅读/观看以下其中一个)
免费
- Information Theory, Inference, and Learning Algorithms
简介: 一本机器学习和信息论研究生教材
位置: Section 29.4, "The Metropolis-Hastings method," pages 365-370
网站
作者: David MacKay - Coursera: Probabilistic Graphical Models (2013)
简介: 一门概率图模型在线课程
位置: Lecture "Metropolis Hastings algorithm"
网站
作者: Daphne Koller
备注:- 点击"Preview"观看视频
- Computational Cognition Cheat Sheets (2013)
简介: 认知科学家写的一组笔记
位置: Bayesian Inference: Metropolis-Hastings Sampling
网站
付费
Pattern Recognition and Machine Learning(PRML)
简介: 一本研究生机器学习教材, 聚焦于贝叶斯方法
位置: Section 11.2, pages 537-542
网站
作者: Christopher M. BishopMachine Learning: a Probabilistic Perspective(MLAPP)
简介: 一本非常全面的研究生机器学习教材
位置: Section 24.3-24.3.6, pages 848-855网站
作者: Kevin P. Murphy
增补资源
免费
Bayesian Reasoning and Machine Learning
简介: 一门研究生机器学习课程
位置: Section 27.4, "Markov chain Monte Carlo," pages 550-553作者: David Barber
付费
Probabilistic Graphical Models: Principles and Techniques
简介: 一本非常全面的概率AI研究生教材
位置: Section 12.3.4, pages 515-518网站
作者: Daphne Koller,Nir Friedman
相关知识
Gibbs 采样 是一种常用的特殊 M-H 算法
其他 M-H 算法包括:
- Hamiltonian Monte Carlo (HMC): 利用梯度信息从连续模型中采样
- split-merge 算子: 尝试拆分和合并簇.
- reversible jump MCMC: 试图在不同维度的空间之间移动
在某些条件下, 我们可以确定最佳的 M-H 接受率.
Metropolis-Hastings算法的更多相关文章
- Metropolis Hasting算法
Metropolis Hasting Algorithm: MH算法也是一种基于模拟的MCMC技术,一个非常重要的应用是从给定的概率分布中抽样.主要原理是构造了一个精妙的Markov链,使得该链的稳态 ...
- 蒙特卡洛马尔科夫链(MCMC)
蒙特卡洛马尔科夫链(MCMC) 标签: 机器学习重要性采样MCMC蒙特卡洛 2016-12-30 20:34 3299人阅读 评论(0) 收藏 举报 分类: 数据挖掘与机器学习(41) 版权声明: ...
- MCMC: The Metropolis Sampler
本文主要译自 MCMC: The Metropolis Sampler 正如之前的文章讨论的,我们可以用一个马尔可夫链来对目标分布 \(p(x)\) 进行采样,通常情况下对于很多分布 \(p(x)\) ...
- [转] - MC、MC、MCMC简述
贝叶斯集锦(3):从MC.MC到MCMC 2013-07-31 23:03:39 #####一份草稿 贝叶斯计算基础 一.从MC.MC到MCMC 斯坦福统计学教授Persi Diaconis是一位传奇 ...
- MC, MCMC, Gibbs采样 原理&实现(in R)
本文用讲一下指定分布的随机抽样方法:MC(Monte Carlo), MC(Markov Chain), MCMC(Markov Chain Monte Carlo)的基本原理,并用R语言实现了几个例 ...
- MC, MCMC, Gibbs採样 原理&实现(in R)
本文用讲一下指定分布的随机抽样方法:MC(Monte Carlo), MC(Markov Chain), MCMC(Markov Chain Monte Carlo)的基本原理,并用R语言实现了几个样 ...
- LDA背景资料
[https://zhuanlan.zhihu.com/p/30226687] LDA模型的前世今生 在文本挖掘中,有一项重要的工作就是分析和挖掘出文本中隐含的结构信息,而不依赖任何提前标注的信息.L ...
- MCMC: The Metropolis-Hastings Sampler
本文主要译自:MCMC:The Metropolis-Hastings Sampler 上一篇文章中,我们讨论了Metropolis 采样算法是如何利用马尔可夫链从一个复杂的,或未归一化的目标概率分布 ...
- MCMC采样理论的一点知识
看了好多相关的知识,大致了解了一下马尔可夫链-蒙特卡罗采样理论,有必要记来下来. 蒙特卡罗积分:(来自:http://blog.csdn.net/itplus/article/details/1916 ...
随机推荐
- Extjs4.2 TreeView TreeStore 移除节点不触发delete(remove node don't trigger delete method)
当我们操作treeview的时候,新增节点,如果成功则新增node,如果失败的话我们不想node还显示出来,可以通过监听sync的failure事件,失败时候移除node,但是第一次肯定达到了预期效果 ...
- sqoop 从sqlserver2008 导入数据到hadoop
今天终于开始上手导入数据到hadoop了,哈哈,过程蛮崎岖的,和官方文档的还不太一样. OK,let's go!试验对象是我第一个名为ST_Statistics的一张表,我要把我表里的数据导入到hdf ...
- JavaScript prototype背后的工作原理
首先从一个函数说起 function fn1(name, age) { this.name = name; this.age = age; this.say = function() { alert( ...
- 利用R里的options函数进行光标和数字位数设置
用R写代码时,打字水平不高,有时候不知道乱按了一些键(现在我还不知道哪个键),光标就变成了加粗的竖直线,又改不回去.这种情况下我们可以用options函数进行光标设置,例如:options(promp ...
- 记 Install VNC On RaspberryOS During 创新实训 自然语言交流系统
树莓派初始化设置并安装VNC SSH上去之后第一件事就是更新debian: sudo apt-get update, 升级完成后重启一下; 在SSH终端输入sudo raspi-config, 这里需 ...
- 自然语言交流系统 phxnet团队 创新实训 个人博客 (七)
使用Lucene 3.0.0的结构遍历TokenStream的内容. 以前版本的Lucene是用TokenStream.next()来遍历TokenStream的内容, 目前的版本稍微修改了一下, 使 ...
- python opencv 学习笔记
图片缩放 image=cv2.imread('test.jpg') res=cv2.resize(image,(32,32),interpolation=cv2.INTER_CUBIC) cv2. ...
- 第三百四十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫数据保存
第三百四十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫数据保存 注意:数据保存的操作都是在pipelines.py文件里操作的 将数据保存为json文件 spider是一个信号检测 ...
- 第三百二十四节,web爬虫,scrapy模块介绍与使用
第三百二十四节,web爬虫,scrapy模块介绍与使用 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了 ...
- 函数后面有个 const
错误场景:类中的重载函数 编译报错: 函数后面加了 const 就好了. 非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误), 表示成员函数隐含传入的this指针为 cons ...