{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "单分量MH算法,简单来说就是对高维随机变量遍历其每一个维度,并对每个维度单独进行采样,这样就将一个复杂的采样问题分拆成了一个个更加简单的采样问题,聪明童鞋可能已经想到了,要怎么操作才能保证细致平衡方程成立勒,这就需要用到**满条件分布**咯,它将会为我们的单个维度采样打开大门,下面先说明一下" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 一.满条件分布\n", "MCMC的目标分布通常是多元的联合概率分布$p(x)=p(x_1,x_2,...,x_k)$,其中$x=(x_1,x_2,...,x_k)^T$为$k$维随机变量。如果条件概率分布$p(x_I\\mid x_{-I})$中所有$k$个变量全部出现,其中$x_I=\\{x_i,i\\in I\\},x_{-I}=\\{x_i,i\\notin I\\},I\\subset K=\\{1,2,...,k\\}$,那么称这种条件概率分布为满条件分布。 \n", "\n", "满条件分布有一个非常有用的性质,那就是对于随机变量的任意取值$x,x'$,和任意的$I\\subset K$,以下等式成立: \n", "\n", "$$\n", "\\frac{p(x'_I\\mid x'_{-I})}{p(x_I\\mid x_{-I})}=\\frac{p(x')}{p(x)}\n", "$$ \n", "\n", "惊不惊喜,意不意外,有了上面的等式那就意味着对$\\frac{p(x')}{p(x)}$的计算,只需落到对单个维度上的条件概率进行计算即可!这在方便联合概率之比的计算的同时也为单分量MH算法提供了理论支撑,下面先简单推导一下上面的等式为什么成立: \n", "\n", "$$\n", "p(x_I\\mid x_{-I})=\\frac{p(x)}{p(x_{-I})}=\\frac{p(x)}{\\int_{x_I}p(x)dx_I}\\propto p(x)\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 二.单分量MH算法\n", "在写具体算法之前,先对相应的符号表达做个解释: \n", "\n", "(1)设在第$i$次迭代结束时分量$x_j$的取值为$x_j^{(i)}$,其中$j=1,2,...,k,i=0,1,2,...$; \n", "\n", "(2)$x_{-j}^{(i)}$表示在第$i$轮,更新到第$j-1$维时,除去第$j$维后的所有值,即前$j-1$维已经更新为第$i$轮的值,而$j+1$维直至最后维都还是$i-1$轮的值,即: \n", "\n", "$$\n", "x_{-j}^{(i)}=(x_1^{i},...x_{j-1}^i,x_{j+1}^{(i-1)},...x_k^{(i-1)})^T\n", "$$ \n", "\n", "好了,可以描述算法流程了\n", "\n", "#### 单分量MH算法流程\n", "输入:目标概率分布的密度函数$p(x)$,正整数$m,n,m(1)初始化样本$x^{(0)}=(x_1^{(0)},x_2^{(0)},...,x_k^{(0)})$ \n", "\n", ">(2)对$i=1,2,...,m,m+1,...n$: \n", "\n", ">>对$j=1,2,...,k$: \n", "\n", ">>>(2.1)根据建议分布$q(x_j^{(i-1)}\\rightarrow x_j^{'(i)}\\mid x_{-j}^{(i)})$抽样第$j$维的候选值$x_j^{'(i)}$ \n", "\n", ">>>(2.2)计算第$j$维的接收率: \n", "$$\n", "\\alpha(x_j^{(i-1)}\\rightarrow x_j^{'(i)}\\mid x_{-j}^{(i)})=min\\{1,\\frac{p(x_j^{'(i)}\\mid x_{-j}^{(i)})q(x_j^{'(i)}\\rightarrow x_j^{(i-1)}\\mid x_{-j}^{(i)})}{p(x_j^{(i-1)}\\mid x_{-j}^{(i)})q(x_j^{(i-1)}\\rightarrow x_j^{'(i)}\\mid x_{-j}^{(i)})}\\}\n", "$$ \n", "\n", ">>>(2.3)从$(0,1)$均匀分布中随机采样$u$,如果$u<\\alpha(x_j^{(i-1)}\\rightarrow x_j^{'(i)}\\mid x_{-j}^{(i)})$,则令$x_j^{(i)}=x_j^{'(i)}$,否则$x_j^{(i)}=x_j^{(i-1)}$ \n", "\n", ">(3)返回样本集$\\{x_{m+1},x_{m+2},...,x_n\\}$ \n", "\n", "完事儿了,要证明单分量MH算法满足细致平衡方程也很简单,下面简单说明一下: \n", "\n", "(1)首先条件概率之比$\\frac{p(x_j^{'(i)}\\mid x_{-j}^{(i)})}{p(x_j^{(i-1)}\\mid x_{-j}^{(i)})}$根据满条件分布中的等式可以替换为联合概率之比; \n", "\n", "(2)其次,任意建议分布$q(x_j^{(i-1)}\\rightarrow x_j^{'(i)}\\mid x_{-j}^{(i)})$均不会影响到细致平衡方程(见前一个note的证明); \n", "\n", "综合这两条我们可以推导出(下面的$\\sim$表示分布相同): \n", "\n", "$$\n", "p(x_1^{(i-1)},x_2^{(i-1)},...,x_k^{(i-1)})\\\\\n", "\\sim p(x_1^{(i)},x_2^{(i-1)},...,x_k^{(i-1)})\\\\\n", "\\cdots\\\\\n", "\\sim p(x_1^{(i)},x_2^{(i)},...x_j^{(i)},x_{j+1}^{(i-1)},...,x_k^{(i-1)})\\\\\n", "\\cdots\\\\\n", "\\sim p(x_1^{(i)},x_2^{(i)},...,x_k^{(i)})\\\\\n", "$$ \n", "\n", "所以:$p(x_1^{(i-1)},x_2^{(i-1)},...,x_k^{(i-1)})\\sim p(x_1^{(i)},x_2^{(i)},...,x_k^{(i)}),i=1,2,...$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 三.案例\n", "由于单分量MH是用于高维空间的采样,所以这里我造一个二元高斯分布$N(u,\\Sigma)$,其对应的均值、协方差如下: \n", "\n", "$$\n", "u=[0,0]^T\\\\\n", "\\Sigma=\\begin{bmatrix}\n", "1 &\\rho \\\\ \n", "\\rho & 1\n", "\\end{bmatrix}\n", "$$ \n", "\n", "那么,它对应的条件概率分布为一元高斯分布,如下: \n", "\n", "$$\n", "p(x_1\\mid x_2)=N(\\rho x_2,(1-\\rho^2))\\\\\n", "p(x_2\\mid x_1)=N(\\rho x_1,(1-\\rho^2))\n", "$$ \n", "\n", "我们不妨取$\\rho=0.5$" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "os.chdir('../')\n", "from ml_models import utils\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "#定义均值,协方差\n", "u=np.asarray([0,0])\n", "sigma=np.asarray([[1,0.5],\n", " [0.5,1]])" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\contour.py:960: UserWarning: The following kwargs were not used by contour: 'linewidth'\n", " s)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#看看目标分布的效果\n", "X=np.random.multivariate_normal(mean=u, cov=sigma, size=200)\n", "utils.plot_contourf(X,lambda x:utils.gaussian_nd(x,u,sigma),8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "建议分布使用以当前维度的取值为均值,方差1为一元高斯分布,这样它们在该维的建议分布取值对称: \n", "\n", "$$\n", "q(x_j^{'(i)}\\rightarrow x_j^{(i-1)}\\mid x_{-j}^{(i)})=q(x_j^{(i-1)}\\rightarrow x_j^{'(i)} \\mid x_{-j}^{(i)})\n", "$$ \n", "\n", "对于计算接受概率就更方便了: \n", "\n", "$$\n", "\\alpha(x_j^{(i-1)}\\rightarrow x_j^{'(i)}\\mid x_{-j}^{(i)})=min\\{1,\\frac{p(x_j^{'(i)}\\mid x_{-j}^{(i)})}{p(x_j^{(i-1)}\\mid x_{-j}^{(i)})}\\}\n", "$$" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import copy\n", "#采样的样本量\n", "nums=1000\n", "count=0\n", "points=[]\n", "#采样x0\n", "point=[np.random.randn(),np.random.randn()]\n", "points.append(point)\n", "while count" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "utils.plot_contourf(np.asarray(points[-400:]),lambda x:utils.gaussian_nd(x,u,sigma),8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 四.小结\n", "\n", "效果看起来还不错,然后我们继续想一种情况,如果目标分布$p(x)$的采样困难是由于随机变量维度太高造成的,而它在单个维度(满条件概率分布)上采样是相对比较容易的,那么我们可以用单维度上的满条件概率分布替换建议分布来采样,即: \n", "\n", "$$\n", "q(x_j^{(i-1)}\\rightarrow x_j^{'(i)} \\mid x_{-j}^{(i)})=p(x_j^{'(i)} \\mid x_{-j}^{(i)})\n", "$$ \n", "\n", "这种情况下又会发生什么神奇的事情呢?请看下一节Gibbs采样" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }