马尔科夫链和马尔科夫链蒙特卡洛方法

前言

译自:《Training Restricted Boltzmann Machines: An Introduction 》

马尔科夫链在RBM的训练中占据重要地位,因为它提供了从复杂的概率分布(比如马尔科夫随机场MRF的吉布斯分布)中提取样本。这一部分主要就是对马尔科夫链做个基本的理论介绍,将要着重强调的是,将吉布斯采样作为一种马尔科夫链蒙特卡洛方法去训练马尔科夫随机场以及训练RBM。

马尔科夫链

一个马尔科夫链是离散时间的随机过程,系统的下一个状态仅仅依赖当前的所处状态,与在它之前发生的事情无关。形式上,一个马尔科夫链是一组随机变量X={X(k)|kN0},取值是一个有限集Ω,而且对于k0以及j,i,i0,,ik1Ω都有

p(k)ij=Pr(X(k+1)=j|X(k)=i,X(k1)=ik1,,X(0)=i0)=Pr(X(k+1)=j|X(k)=i)

上式中表达出的‘无记忆’随机过程经常也被称为 马尔科夫特性 ,如果对于所有 k0的时间点, p(k)ij都有相同的 pij(转移概率不会随着时间而改变),这个链达到了稳态(homogeneous),矩阵 P=(pij)i,jΩ称为稳态马尔科夫链的转移矩阵。

如果初始分布μ(0)(即X(0)的概率分布)是由概率向量μ(0)=(μ(0)(i))iΩ给出的,其中μ(0)(i)=Pr(X(0)=i),那么X(k)的分布μ(k)是由μ(k)T=μ(0)TPk给出的。

对于πT=πTP中的π,则称为稳态分布,如果马尔科夫链在k时刻达到稳态分布μ(k)=π,那么所有的后续状态都是相同分布,也就是说对于所有的nN都有μ(k+n)=π。关于马尔科夫链的分布π为稳态分布的一个充分不必要条件是,对于转移概率pij,i,jΩi,jΩ都有

π(i)pij=π(j)pji

这就称为细致平稳条件(detailed balanced condition)

对于马尔科夫链,存在唯一的一个稳态分布。这就是在有限状态空间Ω中,马尔科夫链不可约的案例。不可约的意思就是任何一个状态都能通过其它状态的有限次转移得到,公式表示就是,i,jΩk>0都有Pr(X(k)=j|X(0)=i)>0

如果链上所有的状态都是无规律发生的,就称为非周期性。公式表示就是,对于iΩ,集合kN0|Pr(X(k)=i|X(0)=i)>0的所有元素的最大公约数是1。在有限状态空间中的,不可约,非周期性的马尔科夫链能够保证收敛到一个稳态分布。假设有限状态空间中有两个分布αβ,变量距离可以被定义为

dV(α,β)=12|αβ|=12xΩ|α(x)β(x)|

为了方便标记,我们让行和列的概率向量作为上式的函数自变量,这样我们就有如下定理

假设π是有限状态空间中的,不可约非周期的马尔科夫链的稳态分布,转移概率矩阵为P,对于任意的初始分布μ都有

>limkdV(μTPk,πT)=0>

马尔科夫链蒙特卡洛方法,利用收敛定律,通过建立一个收敛到期望分布的马尔科夫链,然后从概率分布中生成样本。假设你想从具有有限状态空间的分布q中进行采样,随后就应该建立一个不可约、非周期的马尔科夫链,而且它的稳态分布π=q。这是一个非平凡问题(non-trivial task)。如果k足够大,那么从马尔科夫链中重构X(k)的状态x(k),就会逼近与π中的一个样本,也是q中的。吉布斯采样就是这样一种马尔科夫链蒙特卡洛MCMC方法。

吉布斯采样

吉布斯采样是一种简单的MCMC方法,从多元随机变量的联合概率分布中产生样本。最基本的想法就是,依据条件分布更新每一个变量,而条件分布的条件就是给定除此变量以外的其它变量的状态,如此构造一个马尔科夫链。随后我们将描述,如何从一个马尔科夫随机场MRF的吉布斯分布中,利用吉布斯采样生成(近似)样本。

我们假设一个马尔科夫随机场为X=(X1,,XN),即一个无向图模型G=(V,E),其中V={1,,N}是为了做更清楚的标记。随机变量Xi,iV在有限集Λ中取值,并且π(x)=1Zeε(x)X的联合概率分布。此外,如果我们假设马尔科夫随机场随着时间改变状态,就可以将X={X(k)|kN0}当做从Ω=ΛN中取值的马尔科夫链。那么X(k)=(X(k)1,,X(k)N)就描述了一个马尔科夫随机场在时刻k0的状态。在接下来的两个后继时间节点中,链上新状态的产生都需要经过以下步骤

  1. 从概率q(i)中随机挑选一个变量Xi,iV,这里的概率q(i)是由V中的严格为正的概率分布q给出的。

  2. X(i)的新状态就是给定其它所有变量(Xv)vVi的状态(xv)vi,然后基于其条件概率分布采样得到的。依据条件随机场的局部马尔卡夫特性有π(xi|(xv)vVi)=π(xi|(xw)wi)。马尔科夫随机场的两个状态x,y,xy的转移概率pxy

    pxy={q(i)π(yi|(xv)vVi),0,if iVso that vVwith vi:xv=yv)else

    马尔科夫随机场x的状态保持一致的概率,即pxx=iVq(i)π(xi|(xv)vVi)

吉布斯链的收敛:为了证明由这些转移概率定义的马尔科夫链(因而被称作吉布斯连),收敛到马尔科夫随机场的联合分布π,我们需要证明π是吉布斯链的稳态分布,而且这个链是不可约非周期的。

从细致平稳条件中,很容易发现π是稳态分布:如果xy在多个随机变量数值上有差异,就遵循一个事实pxy=Pyx=0。假设xy仅仅在一个确定的变量Xi上的状态不同,比如当ji的时候yj=xjyixi ,那么

π(x)pxy=π(x)q(i)π(yi|(xv)vVi)=π(xi,(xv)vVi)q(i)π(yi,(xv)vVi)π((xv)vVi)=π(yi,(xv)vVi)q(i)π(xi,(xv)vVi)π((xv)vVi)=π(y)q(i)π(xi|(xv)vVi)=π(y)pyx

这样就满足了细致平稳条件,而且 π就是平稳分布。

因为π是严格为正的,因而是单一变量的条件概率分布。这就意味着,每个单一变量Xi在一个单一的转移步骤中,可以取每一个状态xiΛ,而且整个马尔科夫随机场中的每个状态都能经过有限步骤转移到ΛN的任何其它状态。因此马尔科夫链就是不可约的。此外,对于所有的xΛN,因为它还服从正的条件分布pxx>0,,所以这个马尔科夫链也是非周期的。不可约和非周期性就保证了链能够收敛到稳态分布π

实际中,单个随机变量不是基于分布q随机选择更新的,而是有一个固定的预定义顺序。对应的算法经常依赖于周期吉布斯采样器periodic Gibbs sampler。如果P是吉布斯链的转移矩阵,周期吉布斯采样器到马尔科夫随机场的稳态分布的收敛率,其界限可以使用下列不等式定义:

|μPkπ|12|μπ|(1eNΔ)k

其中 Δ=suplVδl,而且 δl=sup{|ε(x)ε(y)|;xi=yi iV with il},其中 μ是任意的起始分布, 12|μπ|是变量距离。这里有一个符号叫做 sup,表示数理统计中的 格里文科(Gelivenko)定理

吉布斯采样和梅特罗波利斯哈斯廷斯算法 吉布斯采样属于梅特罗波利斯哈斯廷斯采样算法的一个更广泛的类别。这一类中所有的MCMC算法都利用两个步骤生成马尔科夫链的转移:

  1. 随机挑选一个候选状态,称为提议分布proposal distribution
  2. 候选状态根据一个接受概率acceptance probability,转移到马尔科夫链上的一个新状态,保证细致平稳条件

吉布斯采样的提议分布经常是翻转单个随机变量的当前状态,建议状态的接受概率就是一个条件概率,其条件就是给定的其它随机变量状态。

从易辛模型Ising Model中采样时,采样的提议分布(翻转状态)结合了接受概率 min(1,π(x)π(x)),其中x代表当前状态,x代表马尔科夫链上的新状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二值RBM与实值RBM理论及代码解读

1. 前言 虽然推导过二值形式的RBM,但是对于可见层为实值的输入还是半知半解的。最近写个深度学习相关综述,看了一些关于RBM的文献,这里做一下对比总结。但是不倾向于对实值RBM的推导,而是相关代码的实现。 2. RBM回顾 RBM是具有…

【caffe-Windows】添加工程-以classification为例

前言 兴趣所向,研究一下如何在caffe工程之外建立一个属于自己的工程,这里以分类为例,将classification.cpp提取出来,然后调用相应的三方库和libcaffe.lib进行编译。这里比较建议有一丢丢C功底的同志参考学习,主要涉及…

MKL学习——数学运算库安装调试

前言 最近要用C折腾一些东西,涉及到矩阵运算,看了一下网上推荐的数学库,貌似MKL还是蛮不错滴,放到VS2013里面试试 国际惯例,来波地址 blas, cblas, openblas, atlas, lapack, mkl性能对比 Compiling and Linking I…

MKL学习——功能简介

基本术语 BLAS : Basic Linear Algebra Subprograms 基本线性代数子程序 BLACS : Basic Linear Algebra Communication Subprograms 基本线性代数通信子程序 LAPACK : Linear Algebra PACKage 线性代数包 ScaLAPACK : Scalable LAPACK PBLAS : Parallel Basic Linear Alg…

MKL学习——向量操作

前言 推荐两个比较好的教程: BLAS (Basic Linear Algebra Subprograms) LAPACK for Windows 命名规范 BLAS基本线性代数子程序的函数命令都有一定规范&#xff0c;便于记忆 <character> <name> <mod> () character 定义的是数据类型 s实数域&#…

【caffe-Windows】识别率批量输出——matlab实现

前言 今天看到群里有人问”用matlab输出测试集的精度“&#xff0c;瞎试了一下&#xff0c;好像还成功了。主要还是依据前面所有在matlab中操作caffe的博客。 这里说一下&#xff1a;classification.m是适用单张图片的精度&#xff0c;类似于classification.exe的功能&#x…

MKL学习——矩阵向量操作

前言 前面介绍的BLAS Level 1是向量-向量的操作&#xff0c;而这里的BLAS Level 2主要还是对矩阵-向量之间的操作。命名规则与前面的一样&#xff0c;主要记住定义的是数据类型 s实数域&#xff0c;单精度c复数域&#xff0c;单精度d实数域&#xff0c;双精度z复数域&#xf…

MKL学习——矩阵矩阵操作

前言 前面介绍了BLAS Level 1中向量-向量操作&#xff0c;以及BLAS Level 2中矩阵-向量的操作&#xff0c;就剩下这一篇的BLAS Level 3中的矩阵-矩阵的操作了。对稀疏矩阵的操作以后等要用再看看。对基本的矩阵和向量运算的函数有所了解以后&#xff0c;就进行常用参数分析&am…

MKL学习——线性代数概念相关

前言 回顾一下BLAS Level 1 2 3中的运算都有什么类型 BLAS Level 1 在BLAS Level 1中&#xff0c;进行的是向量-向量的操作。其中相关概念有 向量类型: 实数域&#xff0c;复数域&#xff0c;共轭运算操作: 元素求和&#xff0c;向量相加&#xff0c;向量拷贝&#xff0c;点乘…

MKL学习——基本操作C++实现

前言 前面介绍了各种向量-向量&#xff0c;矩阵-向量&#xff0c;矩阵-矩阵的函数简介。根据自身目前状况&#xff0c;主要使用实数域的操作&#xff0c;也就是说关注单精度float类型的s和双精度double类型的d。还有就是用的基本都是全矩阵&#xff0c;没有经过压缩&#xff0…

相机矩阵(Camera Matrix)

前言 最近翻阅关于从2D视频或者图片中重构3D姿态的文章及其源码&#xff0c;发现都有关于摄像机参数的求解&#xff0c;查找了相关资料&#xff0c;做一下笔记。 国际惯例&#xff0c;来一波参考网址 透视变换、透镜畸变及校正模型、相机校正(Camera Calibration)、Matlab相…

损失函数梯度对比-均方差和交叉熵

前言 我们都知道在机器学习中&#xff0c;希望算法或者网络收敛更快&#xff0c;有些是对数据预处理&#xff0c;尤其是Batch Normalization&#xff0c;有些是采用不同的激活函数&#xff0c;尤其是Relu激活函数取得了巨大的成功&#xff0c;还有一种加速收敛方法是更换损失函…

如何选择深度学习优化器

前言 转载地址&#xff1a;如何选择深度学习优化器 作者&#xff1a;不会停的蜗牛 CSDN AI专栏作家 在很多机器学习和深度学习的应用中&#xff0c;我们发现用的最多的优化器是 Adam&#xff0c;为什么呢&#xff1f; 下面是 TensorFlow 中的优化器&#xff0c; https://w…

【caffe-Windows】以mnist为例的hdf5单标签处理——matlab实现

前言 主要是想尝试看一下多标签的caffe是如何进行输入输出的&#xff0c;但是目前还未找到基于原始caffe做多标签输入的代码&#xff0c;大部分都是基于源码做了一部分修改实现多标签分类&#xff0c;caffe官网倒是有一个多标签的Python程序&#xff0c;这个我慢慢研究研究&am…

【caffe-Windows】基于Python多标签方法——VOC2012数据集

前言 按照上一篇博客所遗留的话题&#xff1a;多标签分类&#xff0c;进行初步探索&#xff0c;此篇博客针对caffe官网的多分类进行配置&#xff0c;只不过是Python接口的&#xff0c;不过官网在开头说明可以使用HDF5或者LMDB进行操作&#xff0c;只不过Python更加方便罢了 国…

【theano-windows】学习笔记一——theano中的变量

前言 因为目前需要搭建一些关于RBM或者其他之类的模型&#xff0c;感觉不太会折腾caffe&#xff0c;然而我发现了几个有趣网址&#xff0c;使用theano实现了各种各样的模型&#xff0c;所以&#xff0c;尝试学一下theano。主要以官方教程为主&#xff0c;所以博客会以译文的方…

【theano-windows】学习笔记二——theano中的函数和共享参数

前言 上一篇博客中学到了theano中的变量类型&#xff0c;也就是dscalar、dvector之类的, 然后还有一个theano.function和eval函数, 将我们所定义的操作转换成theano可执行的函数&#xff0c;类似于def, 还有就是简单的线性代数运算操作。 在神经网络(NN)中, 我们声明了权重、…

【theano-windows】学习笔记三——theano中的导数

前言 就一个NN而言&#xff0c;包含梯度、偏置、参数更新&#xff0c;而前面第一篇博客学习了theano中符号变量的定义, 第二篇博客学习了变量的随机初始化, 变量之间的互相操作(类似于sigmoid(w∗xb)), 但是参数更新还应涉及到损失函数的偏导计算&#xff0c;这一章节就是看看…

【theano-windows】学习笔记四——theano中的条件语句

前言 按照官网教程&#xff0c;学习条件语句Switch和ifelse的使用 参考地址: conditions 性能对比 ifElse是将布尔变量和两个变量当做输入 Switch是将张量和两个变量当做输入. 因为Switch是元素级操作&#xff0c;所以比ifElse更具一般性 Switch需要对所有输出变量进行评…

【theano-windows】学习笔记五——theano中张量部分函数

前言 至此感觉应该可以写出一个logistic回归程序了&#xff0c;但是为了达到对theano中张量的更灵活的使用, 还是先看一下thenao.tensor对变量都提供了哪些操作&#xff0c;最全的文档戳这里或者这里, 这里就稍微摘取一点自我感觉以后可能用得多的函数 基本张量函数 创建张量…