Langevin dynamic 和 Hamiltonian Monte Carlo
开这个坑慢慢写吧…
Langevin dynamic 和 Hamiltonian Monte Carlo
众所周知,sampling在Bayeisan中十分重要。比较高级的方法之一就是基于随机微分方程的抽样,例如这里的Langevin和HMC(Hamiltonian Monte Carlo)。
Langevin dynamic
下面是一个目标分布是标准正态分布的Langevin算法的小实验。分别是运行长度为100000、长度为1000000、更改噪声尺度 得到的结果:
- langevin的理论中,步长满足一定条件下,离散化导致的误差被加入的随机噪声掩盖,后期MH拒绝可能性yanhua会很低,几乎可忽略。
- 此类算法要求的计算量很不小。在分布容易模拟的情况下千万不要用。
- 增加噪声的尺度会直接影响最后的分布更加不集中。课件噪声在这个过程中起到很重要的作用。
Hamiltonian Monte Carlo
HMC领域一个重要的文章是Tianqi Chen大佬写的那篇Stochastic Gradient Hamiltonian Monte Carlo。
相比于引入摩擦这个概念,我觉得作者在离散化和SDE间的转换更有意思。固定了步长ϵ\epsilonϵ后,导致的误差本来是O(ϵ2)O(\epsilon^2)O(ϵ2),直接连续化到SDE对应的并不是一个布朗运动噪声(对应的东西应该并不存在),所以需要更换一种方法。作者将O(ϵ2)O(\epsilon^2)O(ϵ2)的离散方差解释为布朗运动N(0,ϵVdt)N(0, \epsilon Vdt)N(0,ϵVdt)的ϵ\epsilonϵ离散。最终和Langevin结合起来,因此可以扔掉MH step.
上述内容有一个有趣的问题:连续化的SDE里的噪音一直带有ϵVdt\epsilon VdtϵVdt的方差,ϵ\epsilonϵ是前面的离散步长。
作者在不考虑ϵ\epsilonϵ为离散步长的前提下,继续对SDE做分析,加入同样带有ϵ\epsilonϵ的摩擦力项。发现得到的SDE是满足目标分布平稳的,再对之做ϵt\epsilon_tϵt的离散。
逻辑有点儿复杂,之后再想想合理性怎么解释。
# target: Normal(0,1)library(ggplot2)# Langevin
L = 100000
e = 0.001x <- c(0)
for(i in 1:L)
{x[i+1] = x[i] + e/2*(-x[i]) + sqrt(e)*rnorm(1)
}X = x[as.integer(L/2):L]
ggplot()+geom_histogram(aes(x=X,colour="Langevin dynamic",..density..),binwidth = 0.2)+geom_line(aes(x=seq(-3,3,0.1),y=dnorm(seq(-3,3,0.1)),colour="True density"))# more stepsL = 1000000
e = 0.001x <- c(0)
for(i in 1:L)
{x[i+1] = x[i] + e/2*(-x[i]) + sqrt(e)*rnorm(1)
}X = x[as.integer(L/2):L]
ggplot()+geom_histogram(aes(x=X,colour="Langevin dynamic",..density..),binwidth = 0.2)+geom_line(aes(x=seq(-3,3,0.1),y=dnorm(seq(-3,3,0.1)),colour="True density"))# double noise. Wrong result. L = 1000000
e = 0.001x <- c(0)
for(i in 1:L)
{x[i+1] = x[i] + e/2*(-x[i]) + 2*sqrt(e)*rnorm(1)
}X = x[as.integer(L/2):L]
ggplot()+geom_histogram(aes(x=X,colour="Wrong Langevin dynamic",..density..),binwidth = 0.2)+geom_line(aes(x=seq(-3,3,0.1),y=dnorm(seq(-3,3,0.1)),colour="True density"))
Langevin dynamic 和 Hamiltonian Monte Carlo相关推荐
- Stochastic Gradient Hamiltonian Monte Carlo论文笔记
Abstract 哈密尔顿蒙特卡罗(HMC)抽样方法提供了一种机制,用于在Metropolis-Hastings框架中定义具有高接受概率的远程建议,从而比标准随机游走建议更有效地探索状态空间.近年 ...
- 论文笔记 Stochastic Gradient Hamiltonian Monte Carlo (SGHMC)
随机梯度哈密顿量蒙特卡罗 0.摘要 Hamiltonian Monte Carlo (HMC) 采样方法提供了一种机制,用于在 Metropolis-Hastings 框架中定义具有高接受概率的远距离 ...
- Hamiltonian Monte Carlo抽样算法的初步理解
Hamiltonian Monte Carlo抽样算法的初步理解 接受拒绝采样算法 MCMC回顾 Hamiltonian dynamics 拉格朗日方程 从牛顿方程出发推导拉格朗日方程 勒让德变换 哈 ...
- 如何自己去写一个鼠标驱动_为什么要用哈密顿采样器(Hamiltonian Monte Carlo),以及如何自己写一个...
背景介绍:(了解采样的可以跳过) 1)为什么需要采样: 简单的分布,比如高斯.exponential.gamma等等的样本都可以直接用numpy.random生成,但复杂的分布需要采样器生成.在贝叶斯 ...
- HMC(Hamiltonian Monte Carlo抽样算法详细介绍)
Hamiltonian Monte Carlo简介 Hamiltonian dynamics的物理含义 Simulating Hamiltonian dynamics the Leap Frog Me ...
- 哈密尔顿蒙特卡洛(Hamiltonian Monte Carlo)
哈密尔顿蒙特卡洛(Hamiltonian Monte Carlo) Metropolis-Hastings 采样方法的一个问题是它会展现出随机漫步式的行为,而随机漫步对参数空间的探索效率并不高--平均 ...
- 5 蒙特卡洛方法 (Monte Carlo Method)
[上一篇 4 动态编程(Dynamic Programming, DP)] [下一篇 6 Temporal-Difference (TD) Learning ] 与上一节动态编程(DP)方法不同的是, ...
- ADPRL - 近似动态规划和强化学习 - Note 10 - 蒙特卡洛法和时序差分学习及其实例 (Monte Carlo and Temporal Difference)
Note 10 蒙特卡洛法和时序差分学习 Monte Carlo and Temporal Difference 蒙特卡洛法和时序差分学习 Note 10 蒙特卡洛法和时序差分学习 Monte Car ...
- 强化学习(四) - 蒙特卡洛方法(Monte Carlo Methods)及实例
强化学习(四) - 蒙特卡洛方法(Monte Carlo Methods)及实例 4. 蒙特卡洛方法 4.1 蒙特卡洛预测 例4.1:Blackjack(21点) 4.2 动作价值的蒙特卡洛估计 4. ...
最新文章
- POJ2135 来回最短路(简单费用流)
- C/S和B/S两种架构区别与优缺点分析
- PaaS平台应用的12要素原则
- harmonyos 2.0怎么升级,HarmonyOS 2.0正式发布 分布式能力获得全面升级
- 超不清视频播放器-用Python将视频转成字符
- Allegro PCB 如何测量距离?比如走线之间的距离
- mysql 判断质数_java之判断输入的数是否为素数
- 【数据结构与算法】【算法思想】【MySQL数据库索引】B+树
- Microsoft.Web.RedisSessionStateProvider 运行异常问题
- MEF 编程指南(二):定义可组合部件和契约
- Vivado中常用的几种仿真浅论
- 【数据库系统】考虑题4所示的日志记录,假设开始时A、B、C的值都是0 (1) 如果系统故障发生在14之后,写出系统恢复后A、B、C的值
- 分页虚拟存储管理——页面置换算法例题
- 石川圖 / 鱼骨图 / 關鍵要因圖 / 因果圖
- 可由线性表示且表达式唯一_一个向量能由另一个向量组线性表示,且表示式唯一的等价条件是什么?...
- Android O 安卓启动时间优化分析
- 【网络编程】大端模式和小端模式
- 爬了1000张清纯妹子私房照,我流鼻血了...
- HYBBS2.3轻论坛M-TOUCH模板源码
- 古希腊数学家毕达哥拉斯数学题