zoukankan      html  css  js  c++  java
  • 【ML-17-2】MCMC--马尔可夫蒙特卡罗方法(MH和Gibbs)

    目录

    1. MCMC概述
    2. 马尔科夫链
    3. MCMC采样和M-H采样
    4. 其它说明

    一、MCMC概述

    从名字我们可以看出,MCMC由两个MC组成,即蒙特卡罗方法(Monte Carlo Simulation,简称MC)和马尔科夫链(Markov Chain ,也简称MC)。

    需要的背景:P(Z|X)概率推断inference分两种(精确推断和近似推断),精确推断很难求解时,需要使用近似求解(也分精确性(VI)和随机性的),其中随机性的则是本文介绍的MCMC。

    案例如受限玻尔兹曼机(RBM)中需要应用,所以先学习下其原理。本文先讲解蒙特卡洛方法。

    二、马尔科夫链

    2.1 马尔可夫性质

    设{X(t), t ∈ T}是一个随机过程,E为其状态空间,若对于任意的t1<t2< ...<tn<t,任意的x1,x2,...,xn,x∈E,随机变量X(t)在已知变量X(t1)=x1,...,X(tn)=xn之下的条件分布函数只与X(tn)=xn有关,而与X(t1)=x1,...,X(tn-1)=xn-1无关,即条件分布函数满足下列等式,此性质称为马尔可夫性;如果随机过程满足马尔可夫性,则该过程称为马尔可夫过程。

    2.2 马尔可夫链

    • 马尔可夫链是指具有马尔可夫性质的随机过程。在过程中,在给定当前信息的情况下,过去的信息状态对于预测将来状态是无关的
    • 马尔可夫链在马尔可夫链的每一步,系统根据概率分布,可以从一个状态变成另外一个状态,也可以保持当前状态不变。状态的改变叫做转移,状态改变的相关概率叫做转移概率
    • 马尔可夫链中的三元素是:状态空间S、转移概率矩阵P、初始概率分布π。

    2.3 马尔可夫链案例

    设将天气状态分为晴、阴、雨三种状态,假定某天的天气状态只和上一天的天气状态有关,状态使用1(晴)、2(阴)、3(雨)表示,转移概率矩阵P如下:

    第n+1天天气状态为 j 的概率为:

    因此,矩阵P即为条件概率转移矩阵。

    矩阵P的第i行元素表示,在上一个状态为i的时候的分布概率,即每行元的和必须为1

    最终状态和转移矩阵相关,和初始值无关。

    此时,我们给定一个初始状态,然后经过该状态转移矩阵的转换,最终会收敛到一个稳定的状态,具体如马尔科夫链定理所示

    由于马尔科夫链能收敛到平稳分布, 于是有了一个想法:如果我们能构造一个转移矩阵为P的马氏链,使得该马氏链的平稳分布恰好是p(x), 那么我们从任何一个初始状态x0出发沿着马氏链转移, 得到一个转移序列 x0, x1, x2,xn, xn+1, 如果马氏链在第n步已经收敛了,于是我们就得到了 π(x) 的样本xn, xn+1(也就是从第n步收敛时开始,之后的x都服从同一个平稳分布,我们可以将这个分布设定为我们的目标采样分布)。

    从上面可以看出马尔科夫链的平稳分布收敛主要依赖于状态转移矩阵,所以关键是如何构建状态转移矩阵,使得最终的平稳分布是我们所要的分布。想做到这一点主要依赖于细致平稳定理

     所以通过细致平稳条件(detailed balance condition)能推导出平稳分布。

    三、MCMC采样和M-H采样

    在MCMC采样中先随机一个状态转移矩阵Q,然而该矩阵不一定能满足细致平稳定理,一次会做一些改进,具体过程如下

    MCMC采样算法的具体流程如下

    然而关于MCMC采样有收敛太慢的问题,所以在MCMC的基础上进行改进,引出M-H采样算法

    α是接受率,M-H算法的具体流程如下

    M-H算法在高维时同样适用

    一般来说M-H采样算法较MCMC算法应用更广泛,然而在大数据时代,M-H算法面临着两个问题:

    1)在高维时的计算量很大,由于接受率较低,存在拒绝转移的问题,算法效率很低,也会加大计算量

    2)由于特征维度大,很多时候我们甚至很难求出目标的各特征维度联合分布,但是可以方便求出各个特征之间的条件概率分布(因此就思考是否能只知道条件概率分布的情况下进行采样)。

    四、Gibbs采样

    Gibbs其实是特殊的MH采样,它的α恒等于1。下面从特殊到一般进行推演,首先看二维的情形:

       

    因此可以得出在二维的情况下Gibbs采样算法的流程如下

    而在多维的情况下,比如一个n维的概率分布π(x1, x2, ...xn),我们可以通过在n个坐标轴上轮换采样,来得到新的样本。对于轮换到的任意一个坐标轴xi上的转移,马尔科夫链的状态转移概率为P(xi|x1, x2, ..., xi−1, xi+1, ..., xn),即固定n−1个坐标轴,在某一个坐标轴上移动。而在多维的情况下Gibbs采样算法的流程如下

    由于Gibbs采样在高维特征时的优势,目前我们通常意义上的MCMC采样都是用的Gibbs采样。当然Gibbs采样是从M-H采样的基础上的进化而来的,同时Gibbs采样要求数据至少有两个维度,一维概率分布的采样是没法用Gibbs采样的,这时M-H采样仍然成立。

    有了Gibbs采样来获取概率分布的样本集,再用蒙特卡罗方法来用样本集模拟求和,他们一起就奠定了MCMC算法在大数据时代高维数据模拟求和时的作用。

    四、其它说明

    采样的动机:

    • 采样本身就是常见的任务;
    • 求和和求积分需要;

    什么是好的样本:

    • 样本是趋向于高概率区域
    • 样本之间相互独立(之间没有什么相关性,就是要求尽量分散,具有代表性)

    简单采样方法:拒绝采样和重要性采样

    MCMC:M-H和Gibbs采样。

    MCMC的问题:

    1. 理论上只保证收敛性,但无法知道何时收敛;
    2. Mixing time(也就是达到稳定分布前的时间)过长--这是由于P(x)复杂,且维度较高
    3. 样本之间有一定的相似性(因为MCMC是假设独立)
  • 相关阅读:
    最优匹配问题
    树的最大独立集
    koa2学习(一)
    vue源码阅读(一)
    一直以为错的一个问题,记录一下
    关于 vuex 的使用忠告
    《javascript设计模式与开发实践》--- (单一职责原则)
    心累
    node 学习(二)
    node 学习(一)
  • 原文地址:https://www.cnblogs.com/yifanrensheng/p/12797396.html
Copyright © 2011-2022 走看看