{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "MC采样比较经典的是接受-拒绝采样和重要采样,下面直接切入正题.... \n", "\n", "### 一.接受-拒绝采样\n", "\n", "接受-拒绝采样是这样回事,假如某$p(x)$是我们需要采样的分布,然后我们采一个点$x^*$,如果$p(x^*)$比较大,那么它被留下的可能就比较大,如果$p(x^*)$比较小,那么它被留下的可能也比较小,这样经过采样得到一系列的点,其中每个点是否保留的概率与该点的$p(x)$正比的话,那么采样点的经验分布就近似于$p(x)$的分布了,然后这里就产生了两个小问题: \n", "\n", "(1)如何采样? \n", "\n", "(2)$p(x^*)$都是相对大小,如何量化决定去留? \n", "\n", "为了解决上面的问题,我们可以引入一个容易采样的分布$q(x)$,让它作为$p(x)$的参考,接下来的做法是: \n", "\n", ">(1)首先,让$q(x)$的概率分布去盖住$p(x)$,即对于任意的$x$都有$q(x)>p(x)$,但是这是不可能的,因为$p(x),q(x)$同为概率分布,必然有$\\int_xp(x)=\\int_xq(x)=1$,所以如果某个地方有$q(x)>p(x)$,那么必然在其他的地方有$q(x)1$使其满足对任意$x$都有$cq(x)>p(x)$,如下图所示,这样我们就解决了上面的第一个问题:如何采样?我们可以按照$q(x)$分布去采样,假如就得到了图中样本点$x^*$,那么接下来就是确定样本去留的问题了\n", "![avatar](./source/12_接受拒绝采样demo.png) \n", "\n", ">(2)$x^*$的去留,可以按照它对应的$\\frac{p(x^*)}{cq(x^*)}$来决定,具体可以这样操作,从$U(0,1)$中均匀采样一个$u$,如果$u\\leq \\frac{p(x^*)}{cq(x^*)}$则保留,否则去掉;\n", "\n", "\n", "\n", "所以,按照上面的(1)(2)步,样本$x^*$被采样的概率如下,其中,$q(x^*)$表示第一步被采样的概率,$\\frac{p(x^*)}{cq(x^*)}$表示第二步被保留的概率,而它们的乘积正比于我们的目标分布概率$p(x^*)$: \n", "\n", "$$\n", "q(x^*)\\cdot\\frac{p(x^*)}{cq(x^*)}=\\frac{p(x^*)}{c}\\propto p(x^*) \n", "$$ \n", "\n", "#### 效率分析\n", "\n", "接受-拒绝采样的实操其实比较麻烦,因为$q(x)$很难找,如果找的不合适,可能会导致接受率很低,如下图,绿色线是$p(x)$,红色线是$cq(x)$,虽然它能盖住$p(x)$,但左侧采样的接受率会很低,导致要采很多次可能才会有一个样本会被接受\n", "![avatar](./source/12_接受拒绝采样率低demo.png) \n", "\n", "#### 补充\n", "当然,也有些特殊情况,比如对于$logp(x)$为凹函数的分布,可以通过一些算法作高效的采样,比如将某点$x^*$的$q(x^*)$设置为$p(x)$在点$x^*$处的切线, [参考>>>](https://www.bilibili.com/video/BV1Qx411W7mf?p=15)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 二.重要采样\n", "重要采样可以看作对接受-拒绝采样的简化,它的思想是对所有采样得到的样本都接受,但是要对它赋予一个权重,简单来说就这么回事: \n", "\n", "(1)选择一个容易抽样的分布$q(x)$,从中抽样$x^*$; \n", "\n", "(2)设置该样本对应的权重为$\\frac{p(x^*)}{q(x^*)}$,称为**重要权重**,over... \n", "\n", "而且,显然抽样概率与目标概率一样: \n", "\n", "\n", "$$\n", "q(x^*)\\frac{p(x^*)}{q(x^*)}=p(x^*)\n", "$$ \n", "\n", "\n", "#### 求期望\n", "\n", "这样理解起来可能有些抽象,我们看看它在求期望中如何应用来直观理解一下,其实说来也很简单,套路和上一节求积分的例子很像,就是往一个已知分布的期望函数求解中再塞一个分布进去: \n", "\n", "$$\n", "E_{x\\sim p(x)}[f(x)]=\\int_xp(x)f(x)dx\\\\\n", "=\\int_xf(x)\\frac{p(x)}{q(x)}q(x)dx\\\\\n", "=\\int_x[f(x)\\frac{p(x)}{q(x)}]q(x)dx\\\\\n", "=E_{x\\sim q(x)}[f(x)\\frac{p(x)}{q(x)}]\n", "$$ \n", "\n", "#### 效率分析\n", "重要采样的难点同样在于寻找一个合适$q(x)$,如下图,绿色的线是我们的目标分布$p(x)$,$q(x)$是我们采样分布,如果采样点不够的话很有可能产生较大的偏差,比如下图中采样点很有可能会分布在左侧,所以意味着我们同样需要采很多样本才有可能对目标分布做一个不错的拟合\n", "![avatar](./source/12_重要采样效率分析demo.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 三.案例\n", "为了添加一个案例演示,我憋了一个看起来很复杂的概率密度函数(我也不知道自己为什么这么优秀~~~ ),如下: \n", "\n", "$$\n", "p(x)=\\frac{1}{1179}[(x-2)^2+(x-5)^3+100cos(x)+106],0]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def func(x):\n", " return ((x-2)*(x-2)+(x-5)*(x-5)*(x-5)+100*np.cos(x)+106)/1179\n", "x=np.linspace(0,10,100)\n", "plt.plot(x,func(x))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "接下来,用接收拒绝采样来采样一系列样本看看效果,显然,我们可以取: \n", "\n", "$$\n", "q(x)=0.1,0" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#看看效果\n", "plt.plot(x,func(x))\n", "plt.hist(points,normed=True,bins=100)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 四.分析\n", "上面的两种方法的难点主要在于难以找到合适的$q(x)$,如果$q(x)$不合适,就要采样很多的点,从而导致效率低下,那如果能找到一个方法让我们采样样本不用丢弃或者调整权重就能自然的逼近我们的目标分布就好了,这样的方法是存在的!!!,那就是马尔科夫蒙特卡洛法(**MCMC**),大家先倒回去看看[《12_05_PGM_马尔科夫链_初探及代码实现》](https://nbviewer.jupyter.org/github/zhulei227/ML_Notes/blob/master/notebooks/12_05_PGM_%E9%A9%AC%E5%B0%94%E7%A7%91%E5%A4%AB%E9%93%BE_%E5%88%9D%E6%8E%A2%E5%8F%8A%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0.ipynb)这一节看看有没有什么想法,哈哈哈哈~~~" ] }, { "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 }