美文网首页程序员人工智能
MCMC-2|机器学习推导系列(十六)

MCMC-2|机器学习推导系列(十六)

作者: 酷酷的群 | 来源:发表于2020-10-06 17:08 被阅读0次

    一、概述

    1. 概述

    在对一个概率分布进行随机抽样,或者是求函数关于该概率分布的数学期望时可以使用马尔可夫链蒙特卡罗法(MCMC)。相比与拒绝采样法和重要性采样法,MCMC更适用于随机变量是多元的、概率密度函数是非标准形式的、随机变量各分量不独立等情况。

    对于多元随机变量x,满足x\in \mathcal{X},其概率密度函数为p(x)f(x)为定义在x\in \mathcal{X}的函数,目标是获得概率分布p(x)的样本集合以及求函数f(x)的数学期望E_{p(x)}[f(x)]

    应用MCMC解决这个问题。基本想法是:在随机变量x的状态空间S上定义一个满足遍历定理的马尔可夫链X,使其平稳分布就是抽样的目标分布p(x)。然后在这个马尔可夫链上随机游走,每个时刻得到一个样本。

    根据遍历定理,当时间趋于无穷时,样本的分布趋于平稳分布,样本的函数均值趋近函数的数学期望。所以,当时间足够长时(时刻大于某个正整数m),在之后的时间(时间小于等于某个正整数nn> m)里随机游走得到的样本集合\left \{x_{m+1},x_{m+2},\cdots ,x_{n}\right \}就是目标概率分布的抽样结果,得到的函数均值(遍历均值)就是要计算的数学期望值:

    \hat{E}f=\frac{1}{n-m} \sum_{i=m+1}^{n} f(x_{i})

    到时刻m为止的时间段称为燃烧期

    2. 需要注意的几个知识点

    • 由于这个马尔可夫链满足遍历定理,随机游走的初始点并不影响得到的结果,也就是说从不同的起始点出发,都会收敛到同一平稳分布。

    • MCMC的收敛性的判断往往是经验性的,比如,在马尔可夫链上进行随机游走,检验遍历均值是否收敛。具体的方法有:
      ①每隔一段时间取一次样本,得到多个样本以后,计算遍历均值,当计算的均值稳定后,认为马尔可夫链已经收敛。
      ②在马尔可夫链上并行进行多个随机游走,比较各个随机游走的遍历均值是否接近一致。

    • MCMC中得到的样本序列,相邻的样本点是相关的,而不是独立的。因此,在需要独立样本时,可以在该样本序列中再次进行随机抽样,比如每隔一段时间取一次样本,将这样得到的子样本集合作为独立样本集合。

    • 一般来说,MCMC比拒绝采样法更容易实现,因为只需要定义马尔可夫链,而不需要定义建议分布。一般来说MCMC比拒绝采样效率更高,因为没有大量被拒绝的样本,虽然燃烧期的成本也要抛弃。

    3. 马尔可夫链蒙特卡罗法的基本步骤

    ①首先,在随机变量x的状态空间上构造一个满足遍历定义的马尔可夫链,使其平稳分布为目标分布p(x);
    ②从状态空间的某一点x_0出发,用构造的马尔可夫链进行随机游走,产生样本序列x_0,x_1,\cdots ,x_t,\cdots;
    ③应用马尔可夫链的遍历定理,确定正整数mnm<n),得到样本集合\left \{x_{m+1},x_{m+2},\cdots ,x_{n}\right \},求得f(x)的均值(遍历均值):

    \hat{E}f=\frac{1}{n-m} \sum_{i=m+1}^{n} f(x_{i})

    这里有几个重要问题:

    ①如何定义马尔可夫链,保证MCMC的条件成立;
    ②如何确定收敛步数m,保证样本抽样的无偏性;
    ③如何确定迭代步数n,保证遍历均值计算的精度。

    二、Metropilis-Hastings算法(MH算法)

    1. 基本原理

    假设要抽样的概率分布为p(x)。MH算法采用转移核为p(x,x^{'})的马尔可夫链:

    p(x,x^{'})=q(x,x^{'})\alpha (x,x^{'})

    其中q(x,x^{'})称为建议分布(proposal distribution)\alpha (x,x^{'})称为接受分布(acceptance distribution)

    q(x,x^{'})是另一个马尔可夫链的转移核,并且q(x,x^{'})是不可约的,即其概率值恒不为0,同时也是一个容易抽样的分布。接受分布\alpha (x,x^{'})是:

    \alpha (x,x^{'})=min \left \{1,\frac{p(x^{'})q(x^{'},x)}{p(x)q(x,x^{'})}\right \}

    这时,转移核p(x,x^{'})可以写成:

    p(x,x^{'})=\left\{\begin{matrix} q(x,x^{'}),\; \; \; \; \; \; \; \; \; \; p(x^{'})q(x^{'},x)\geq p(x)q(x,x^{'})\\ q(x^{'},x)\frac{p(x^{'})}{p(x)},\; \; \; p(x^{'})q(x^{'},x)< p(x)q(x,x^{'}) \end{matrix}\right.

    转移核为p(x,x^{'})的马尔可夫链上的随机游走以以下方式进行。如果在时刻t-1处于状态x,即x_{t-1}=x,则先按建议分布q(x,x^{'})抽样产生一个候选状态x^{'},然后按照接受分布\alpha (x,x^{'})抽样决定是否接受状态x^{'}。以概率\alpha (x,x^{'})接受x^{'},决定时刻t转移到状态x^{'},而以概率1-\alpha (x,x^{'})拒绝x^{'},决定时刻t仍停留在状态x。具体地,从区间(0,1)上的均匀分布中抽取一个随机数u,决定时刻t的状态:

    x_{t}=\left\{\begin{matrix} x^{'},\; \; u\leq \alpha (x,x^{'})\\ x,\; \; u> \alpha (x,x^{'}) \end{matrix}\right.

    可以证明,转移核为p(x,x^{'})的马尔可夫链是可逆马尔可夫链(满足遍历定理),其平稳分布就是p(x),即要抽样的目标分布。也就是说这是MCMC的一个具体实现。

    2. 定理

    由转移核p(x,x^{'})=q(x,x^{'})\alpha (x,x^{'})构成的马尔可夫链是可逆的,即
    p(x)p(x,x^{'})=p(x^{'})p(x^{'},x)
    并且p(x)是该马尔可夫链的平稳分布。

    证明如下:

    x=x^{'},则上式显然成立。
    x\neq x^{'},则:
    p(x)p(x,x^{'})=p(x)q(x,x^{'})min \left \{1,\frac{p(x^{'})q(x^{'},x)}{p(x)q(x,x^{'})}\right \}\\ =min\left \{p(x)q(x,x^{'}),p(x^{'})q(x^{'},x)\right \}\\ =p(x^{'})q(x^{'},x)min \left \{\frac{p(x)q(x,x^{'})}{p(x^{'})q(x^{'},x)},1\right \}\\ =p(x^{'})p(x^{'},x)
    p(x)p(x,x^{'})=p(x^{'})p(x^{'},x)知:
    \int p(x)p(x,x^{'})\mathrm{d}x\\ =\int p(x^{'})p(x^{'},x)\mathrm{d}x\\ =p(x^{'})\int p(x^{'},x)\mathrm{d}x\\ =p(x^{'})
    所以p(x)是该马尔可夫链的平稳分布。

    3. 建议分布

    建议分布q(x,x^{'})有多种可能的形式,这里介绍两种常用形式。

    • 第一种形式

    假设建议分布是对称的,即对任意的xx^{'}有:

    q(x,x^{'})=q(x^{'},x)

    这样的建议分布称为Metropolis选择,也是MH算法最初采用的建议分布。这时,接受分布\alpha (x,x^{'})简化为:

    \alpha (x,x^{'})=min \left \{1,\frac{p(x^{'})}{p(x)}\right \}

    Metropolis特例:

    q(x,x^{'})=p(x^{'}|x),定义为多元正态分布,其均值是x,其协方差矩阵是常数矩阵(因为协方差矩阵是常数矩阵,所以q(x,x^{'})对称)。
    q(x,x^{'})=q(|x=x^{'}|),这时算法称为随机游走Metropolis算法。例如:
    q(x,x^{'})\propto exp\left \{-\frac{(x^{'}-x)^{2}}{2}\right \}

    Metropolis选择的特点是当x^{'}x接近时,q(x,x^{'})的概率值高,否则q(x,x^{'})的概率值低。状态转移在附近点的可能性更大。

    • 第二种形式

    第二种形式称为独立抽样。假设q(x,x^{'})与当前状态x无关,即q(x,x^{'})=q(x^{'})。建议分布的计算按照q(x^{'})独立抽样进行。此时,接受分布可以写成:

    \alpha (x,x^{'})=min \left \{1,\frac{w(x^{'})}{w(x)}\right \}

    其中w(x^{'})=\frac{p(x^{'})}{q(x^{'})},w(x)=\frac{p(x)}{q(x)}

    独立抽样实现简单,但可能收敛速度慢,通常选择接近目标状态分布p(x)的分布作为建议分布q(x)

    4. 满条件分布

    MCMC的目标分布通常是多元联合概率分布p(x)=p(x_{1},x_{2},\cdots ,x_{k}),其中x=(x_{1},x_{2},\cdots ,x_{k})^Tk维随机变量。如果条件概率分布p(x_{I}|x_{-I})中所有k个变量全部出现,其中x_{I}=\left \{x_{i},i\in I\right \},x_{-I}=\left \{x_{i},i\notin I\right \},I\subset K=\left \{1,2,\cdots ,k\right \},那么称这种条件概率分布为满条件分布(full conditional distribution)

    满条件分布有以下性质:对任意的x,x^{'}\in \mathcal{X}和任意的I\subset K有:

    p(x_{I}|x_{-I})=\frac{p(x)}{\int p(x)\mathrm{d}x_{I}}\propto p(x)

    而且,对任意的x,x^{'}\in \mathcal{X}和任意的I\subset K有:

    \frac{p(x_{I}^{'}|x_{-I}^{'})}{p(x_{I}|x_{-I})}=\frac{p(x^{'})}{p(x)}

    MH算法中可以利用上述性质,简化运算,提高效率。具体地,通过满条件分布概率的比\frac{p(x_{I}^{'}|x_{-I}^{'})}{p(x_{I}|x_{-I})}计算联合概率的比\frac{p(x^{'})}{p(x)},而前者更容易计算。

    5. 基本步骤

    ①任意选择一个初始值x_0
    ②对i=1,2,\cdots ,n循环执行:
      (a)设状态x_{i-1}=x,按照建议分布q(x,x^{'})随机抽取一个候选状态x^{'}
      (b)计算接收概率:

    \alpha (x,x^{'})=min \left \{1,\frac{p(x^{'})q(x^{'},x)}{p(x)q(x,x^{'})}\right \}

      (c)从区间(0,1)中按均匀分布随机抽取一个数u。若u\leq \alpha (x,x^{'}),则状态x_i=x^{'},否则,状态x_i=x

    ③得到样本集合\left \{x_{m+1},x_{m+2},\cdots ,x_{n}\right \},计算函数样本均值f_{mn}

    f_{mn}=\frac{1}{n-m} \sum_{i=m+1}^{n} f(x_{i})

    6. 单分量MH算法

    在MH算法中,通常需要对多元变量分布进行抽样,有时对多元变量的抽样是困难的。可以对多元变量的每一变量的条件分布依次分别进行抽样,从而实现对整个多元变量的一次抽样,这就是单分量MH(single-component Metropolis-Hastings)算法。

    假设马尔可夫链的状态有k维随机变量表示:

    x=(x_{1},x_{2},\cdots ,x_{k})^{T}

    为了生成容量为n的样本集合\left \{x^{(1)},x^{(2)},\cdots ,x^{(n)}\right \},单分量MH算法由下面的k步迭代实现MH算法的一次迭代。

    设在第i-1次迭代结束时分量x_j的取值为x_{j}^{(i-1)},在第i次迭代的第j步,对分量x_j根据MH算法更新,得到其新的取值x_{j}^{(i)}。首先,由建议分布q(x_{j}^{(i-1)},x_{j}|x_{-j}^{(i)})抽样产生分量x_j的候选值x_{j}^{'(i)},这里x_{-j}^{(i)}表示在第i次迭代的第j-1步后的x^{i}除去x_{j}^{i-1}的所有值,即:

    x_{-j}^{(i)}=(x_{1}^{{\color{Red}{(i)}}},\cdots ,x_{j-1}^{{\color{Red}{(i)}}},x_{j+1}^{(i-1)},\cdots ,x_{k}^{(i-1)})^{T}

    其中分量1,2,\cdots ,j-1已经更新。然后,按照接受概率:

    \alpha (x_{j}^{(i-1)},x_{j}^{'(i)}|x_{-j}^{(i)})=min\left \{1,\frac{p(x_{j}^{'(i)}|x_{-j}^{(i)})q(x_{j}^{'(i)},x_{j}^{(i-1)}|x_{-j}^{(i)})}{p(x_{j}^{(i-1)}|x_{-j}^{(i)})q(x_{j}^{(i-1)},x_{j}^{'(i)}|x_{-j}^{(i)})}\right \}

    抽样决定是否接受候选值x_{j}^{'(i)}。如果x_{j}^{'(i)}被接受,则令x_{j}^{(i)}=x_{j}^{'(i)};否则x_{j}^{(i)}=x_{j}^{(i-1)}。其余分量在第j步不改变。马尔可夫链的转移概率为:

    p(x_{j}^{(i-1)},x_{j}^{'(i)}|x_{-j}^{(i)})=\alpha (x_{j}^{(i-1)},x_{j}^{'(i)}|x_{-j}^{(i)})q(x_{j}^{(i-1)},x_{j}^{'(i)}|x_{-j}^{(i)})

    三、吉布斯抽样

    吉布斯抽样可以认为是MH算法的特殊情况,但是更容易实现,因此被广泛使用。

    1. 基本原理

    吉布斯抽样(Gabbs sampling)用于多元变量联合分布的抽样和估计。其基本做法是,从联合概率分布定义满条件概率分布,依次对满条件概率分布进行抽样,得到样本的序列。可以证明这样的抽样过程是在一个马尔可夫链上的随机游走,每一个样本对应着马尔可夫链的状态,平稳分布就是目标的联合分布。整体成为一个MCMC,燃烧期之后的样本就是联合分布的随机样本。

    假设多元变量的联合概率分布为p(x)=p(x_{1},x_{2},\cdots ,x_{k})。吉布斯抽样从一个初始样本x^{(0)}=(x_{1}^{(0)},x_{2}^{(0)},\cdots ,x_{k}^{(0)})^{T}出发,不断进行迭代,每一次迭代得到联合概率分布的一个样本x^{(i)}=(x_{1}^{(i)},x_{2}^{(i)},\cdots ,x_{k}^{(i)})^{T}。最终得到样本序列\left \{x^{(0)},x^{(1)},\cdots ,x^{(n)}\right \}

    在每次迭代中,依次对k个随机变量中的一个变量进行随机抽样。如果在第i次迭代中,对第j个变量进行随机抽样,那么抽样的分布就是满条件概率分布p(x_{j},x_{-j}^{(i)})

    设在第i-1步得到样本(x_{1}^{(i-1)},x_{2}^{(i-1)},\cdots ,x_{k}^{(i-1)})^{T},在第i步,首先对第一个变量按照以下满条件概率分布随机抽样:

    p(x_{1}|x_{2}^{(i-1)},\cdots ,x_{k}^{(i-1)})

    得到x_{1}^{(i)},之后依次对第j个变量按照以下满条件概率分布随机抽样:

    p(x_{j}|x_{1}^{{\color{Red}{(i)}}},\cdots ,x_{j-1}^{{\color{Red}{(i)}}},x_{j+1}^{(i-1)},\cdots ,x_{k}^{(i-1)}),\; \; j=2,\cdots ,k-1

    得到x_{j}^{(i)},最后对第k个变量按照以下满条件概率分布随机抽样:

    p(x_{k}|x_{1}^{(i)},\cdots ,x_{k-1}^{(i)})

    得到x_{k}^{(i)},于是得到样本x^{(i)}=(x_{1}^{(i)},x_{2}^{(i)},\cdots ,x_{k}^{(i)})^{T}

    2. 吉布斯抽样与单分量MH算法的关系

    吉布斯抽样是单分量MH算法的特殊情况。定义建议分布是当前变量x_jj=1,2,\cdots ,k的满条件概率分布:

    q(x,x^{'})=p(x_{j}^{'}|x_{-j})

    这时,接受概率\alpha = 1

    \alpha (x,x^{'})=min \left \{1,\frac{p(x^{'})q(x^{'},x)}{p(x)q(x,x^{'})}\right \}\\ =min \left \{1,\frac{{\color{Orange}{p(x_{-j}^{'})}}{\color{Blue}{p(x_{j}^{'}|x_{-j}^{'})}}{\color{Orchid}{p(x_{j}|x_{-j}^{'})}}}{{\color{Orange}{p(x_{-j})}}{\color{Orchid}{p(x_{j}|x_{-j})}}{\color{Blue}{p(x_{j}^{'}|x_{-j})}}}\right \}\\ =1

    这里用到了p(x_{-j})=p(x_{-j}^{'})p(\cdot |x_{-j})=p(\cdot |x_{-j}^{'})

    转移核就是满条件概率分布:

    p(x,x^{'})=p(x_{j}^{'}|x_{-j})

    也就是说按照单分量的满条件概率分布p(x_{j}^{'}|x_{-j})进行随机抽样,就能实现单分量MH算法。吉布斯抽样对每次抽样的结果都接受,没有拒绝,这一点和一般的MH算法不同。

    这里,假设满条件概率分布p(x_{j}^{'}|x_{-j})不为0,即马尔可夫链是不可约的。

    3. 基本步骤

    ①初始化。给出初始样本x^{(0)}=(x_{1}^{(0)},x_{2}^{(0)},\cdots ,x_{k}^{(0)})^{T}
    ②对i=1,2,\cdots ,n循环执行:
      (1)由满条件分布p(x_{1}|x_{2}^{(i-1)},\cdots ,x_{k}^{(i-1)})抽取x_{1}^{(i)}
       \vdots
      (j)由满条件分布p(x_{j}|x_{1}^{{\color{Red}{(i)}}},\cdots ,x_{j-1}^{{\color{Red}{(i)}}},x_{j+1}^{(i-1)},\cdots ,x_{k}^{(i-1)})抽取x_{j}^{(i)}
       \vdots
      (k)由满条件分布p(x_{k}|x_{1}^{(i)},\cdots ,x_{k-1}^{(i)})抽取x_{k}^{(i)}
    得到第i次迭代值x^{(i)}=(x_{1}^{(i)},x_{2}^{(i)},\cdots ,x_{k}^{(i)})^{T}
    ③得到样本集合\left \{x^{(m+1)},x^{(m+2)},\cdots ,x^{(n)}\right \},计算函数样本均值f_{mn}

    f_{mn}=\frac{1}{n-m} \sum_{i=m+1}^{n} f(x^{(i)})

    4. 对比单分量MH算法

    单分量MH算法与吉布斯抽样的不同之处在于,在前者算法中,抽样会在样本点之间移动,但其间可能在某一些样本点上停留(由于采样被拒绝);而在后者算法中,抽样点会在样本点之间持续移动。

    吉布斯抽样适合于满条件概率分布容易抽样的情况,而单分量MH算法适合于满条件概率分布不容易抽样的情况,这是使用容易抽样的条件分布作建议分布。

    参考资料

    ref:李航《统计学习方法》

    相关文章

      网友评论

        本文标题:MCMC-2|机器学习推导系列(十六)

        本文链接:https://www.haomeiwen.com/subject/gwxhuktx.html