PRML读书笔记 第十一章 采样方法(1)
PRML读书笔记 第十一章 采样方法(1)
- 基本采样算法
- 标准概率分布下的采样算法
- 标准概率分布下的拒绝采样方法
- 标准概率分布下的可调节拒绝采样方法
- 重要采样
- 马尔科夫蒙特卡洛
- Metropolis算法
- Metropolis-Hastings算法
- 吉布斯采样
- 心得体会
整本书的核心都是在知道样本以及假设先验概率分布的情况下,求后验概率分布问题,后验概率的主要用处则是用来计算期望,所以这里的话E[f]=∫f(z)p(z)dzE[f]=\int f(z)p(z)dzE[f]=∫f(z)p(z)dz(在离散型变量中,我们可以把积分换成求和来进行计算),基于这一核心目标,我们提出了采样方法的概念,即通过一组样本z(l)z^{(l)}z(l)来计算f^=1L∑l=1Lf(z(l))\hat{f}=\frac{1}{L}\sum_{l=1}^Lf(z^{(l)})f^=L1∑l=1Lf(z(l))来进行计算。此时f^\hat{f}f^具有正确的均值和p(z)p(z)p(z)下的方差,并且原则上,对于数量较少的样本可能会具有很高的精度,且其精度与z的维度无关。
常见的采样算法有基本采样算法,马尔科夫蒙特卡洛算法,吉布斯算法,切片采样算法,基于物理的哈密顿系统的动态系统采样算法等。本节主要概述其中的前四种算法,下一节将会概述后面的几种算法以及不同算法之间的对比差异。
基本采样算法
标准概率分布下的采样算法
这里主要说的是在标准概率分布下,如何将均匀分布(或某种分布)的随机数种子变为我们想要的分布的情况。
我们假设z是(0,1)(0,1)(0,1)上均匀分布的随机数函数。那么有其概率密度函数p(z)=1p(z)=1p(z)=1,假设我们所要得到的概率分布是p(y)p(y)p(y),我们现在所要做的是找一组yyy和zzz之间的变换。记做p(y)=p(z)∣dzdy∣p(y)=p(z)|\frac{dz}{dy}|p(y)=p(z)∣dydz∣,我们不妨设y与z之间的变换为z=h(y)=∫−∞yp(y^)dy^z=h(y)=\int_{-\infty}^yp(\hat{y})d\hat{y}z=h(y)=∫−∞yp(y^)dy^,y=h−1(z)y=h^{-1}(z)y=h−1(z),那么根据我们所需要的y的形式,反解出h(y)h(y)h(y)即可,例如对于p(y)=λexp(−λy)p(y)=\lambda exp(-\lambda y)p(y)=λexp(−λy),代入上式,即得到h(y)=1−exp(−λy)h(y)=1-exp(-\lambda y)h(y)=1−exp(−λy)
对于多元的问题,我们要将∣dzdy∣|\frac{dz}{dy}|∣dydz∣的情况换成一个Jacobian行列式。即p(y1,...,yM)=p(z1,...,zM)∣∂(z1,...,zn)∂(y1,...,yn)∣p(y_1,...,y_M)=p(z_1,...,z_M)|\frac{\partial{(z_1,...,z_n)}}{\partial{(y_1,...,y_n)}}|p(y1,...,yM)=p(z1,...,zM)∣∂(y1,...,yn)∂(z1,...,zn)∣
标准概率分布下的拒绝采样方法
拒绝采样的引入主要是针对p(z)p(z)p(z)的概率分布比较难以确定但是将其化成p(z)=1Zpp~(z)p(z)=\frac{1}{Z_p}\tilde{p}(z)p(z)=Zp1p~(z)当中p~(z)\tilde{p}(z)p~(z)比较好求的情况下,这个时候我们选择一个提议分布kq(x)kq(x)kq(x)来对其进行近似,采样当中,首先在样本当中选择一个z0z_0z0,再在kq(z0)kq(z_0)kq(z0)的范围内选择一个u0u_0u0此时
如果u0>p(z0)u_0>p(z_0)u0>p(z0),我们可以选择拒绝,反之则接受。其被接受的概率为p~(z)kq(z)\frac{\tilde{p}(z)}{kq(z)}kq(z)p~(z),一个样本被接受的总概率为p(接受)=∫{p~(z)kq(z)}q(z)dz=1k∫p~(z)dzp(接受)=\int \lbrace \frac{\tilde{p}(z)}{kq(z)}\rbrace q(z)dz=\frac{1}{k}\int \tilde{p}(z)dzp(接受)=∫{kq(z)p~(z)}q(z)dz=k1∫p~(z)dz
标准概率分布下的可调节拒绝采样方法
这种方法与拒绝采样方法相比,主要区别在于在提议分布q(z)q(z)q(z)很难确定的情况下,直接在p(z)p(z)p(z)基础上构建拒绝采样的方法,从思想上来说可以通过构造p(z)p(z)p(z)的近似线性函数等等来进行设计并调节其接受概率。
重要采样
重要采样的核心思想是直接通过计算E[f]⋍∑l=1Lp(z(l))f(z(l))E[f]\backsimeq \sum_{l=1}^Lp(z^{(l)})f(z^{(l)})E[f]⋍∑l=1Lp(z(l))f(z(l))来进行计算。这也是我们本章讨论的根本问题,但此式的缺点是可能随着维度增大而导致计算量变得巨大,对于大多数概率分布来说,其对权值有贡献的部分主要集中在一个很小的范围内。
所以我们这里依然要利用提议分布q(x)q(x)q(x)来进行处理。
E[f]=∫f(z)p(z)dz=∫f(z)p(z)q(z)q(z)dz⋍1L∑l=1Lp(z(l))q(z(l))f(z(l))E[f]=\int f(z)p(z)dz=\int f(z)\frac{p(z)}{q(z)}q(z) dz\backsimeq\frac{1}{L}\sum_{l=1}^L\frac{p(z^{(l)})}{q(z^{(l)})}f({z^{(l)}})E[f]=∫f(z)p(z)dz=∫f(z)q(z)p(z)q(z)dz⋍L1∑l=1Lq(z(l))p(z(l))f(z(l)),其中我们将rl=p(z(l))q(z(l))r_l=\frac{p(z^{(l)})}{q(z^{(l)})}rl=q(z(l))p(z(l))称为重要性系数。
有时候我们希望用归一化系数Zp,ZqZ_p,Z_qZp,Zq来衡量概率期望,E[f]=∫f(z)q(z)dz=ZqZp∫f(z)p~(z)q~(z)q(z)dz⋍ZqZp1L∑l=1Lrl~f(z(l))E[f]=\int f(z)q(z) dz\\=\frac{Z_q}{Z_p}\int f(z)\frac{\tilde{p}(z)}{\tilde{q}(z)}q(z)dz\\\backsimeq\frac{Z_q}{Z_p}\frac{1}{L}\sum_{l=1}^L\tilde{r_l}f(z^{(l)})E[f]=∫f(z)q(z)dz=ZpZq∫f(z)q~(z)p~(z)q(z)dz⋍ZpZqL1l=1∑Lrl~f(z(l))
马尔科夫蒙特卡洛
Metropolis算法
马尔科尔链蒙特卡罗算法起源于物理学。其假定提议分布是对称的,即q(zA∣zB)=q(zB∣zA)q(z_A|z_B)=q(z_B|z_A)q(zA∣zB)=q(zB∣zA),候选样本的接受概率为:A(z∗,z(τ))=min(1,p~(z∗)p~(z(τ)))A(z^*,z^{(\tau)})=min(1,\frac{\tilde{p}(z^*)}{\tilde{p}(z^{(\tau)})})A(z∗,z(τ))=min(1,p~(z(τ))p~(z∗))
我们选择一个u,如果A(z∗,z(τ))>uA(z^*,z^{(\tau)})>uA(z∗,z(τ))>u就接受这个样本,如果候选样本被接受,那么z(τ+1)=z∗z^{(\tau+1)}=z^*z(τ+1)=z∗,否则候选样本点z∗z^*z∗被丢弃,z(τ+1)z^{(\tau+1)}z(τ+1)被置为z(τ)z^{(\tau)}z(τ),然后从q(z∣z(τ+1))q(z|z^{(\tau+1)})q(z∣z(τ+1))中再次抽取一个候选样本。(注意前一个被拒绝的样本点并没有被简单的放弃,所以其可能会出现随机游走的行为——这会导致蒙特卡洛算法的效率降低。)
Metropolis-Hastings算法
本算法与Metropolis算法的主要不同之处在于其可以用于提议分布不是对称分布的情况。其选择的接受概率函数为:Ak(z∗,z(τ))=min(1,p~(z∗)qk(z(τ)∣z∗)p~(z(τ))qk(z∗∣z(τ)))A_k(z^*,z^{(\tau)})=min(1,\frac{\tilde{p}(z^*)q_k(z^{(\tau)|z^*)}}{\tilde{p}(z^{(\tau)})q_k(z^*|z^{(\tau)})})Ak(z∗,z(τ))=min(1,p~(z(τ))qk(z∗∣z(τ))p~(z∗)qk(z(τ)∣z∗))
这里我们可以证明p(z)p(z)p(z)在定义的此变换下是概率不变的,这可以根据马尔科夫链的细节平衡性质:p∗(z)T(z,z′)=p∗(z′)T(z′,z)p^*(z)T(z,z^{'})=p^*(z^{'})T(z^{'},z)p∗(z)T(z,z′)=p∗(z′)T(z′,z)
因为对于p(z)qk(z′∣z)Ak(z′∣z)p(z)q_k(z^{'}|z)A_k(z^{'}|z)p(z)qk(z′∣z)Ak(z′∣z)有
p(z)qk(z′∣z)Ak(z′,z)=min(p(z)qk(z′∣z),p(z′)qk(z∣z′))=min(p(z′)qk(z∣z′),p(z)qk(z′∣z))=p(z′)qk(z∣z′)Ak(z,z′)p(z)q_k(z^{'}|z)A_k(z^{'},z)=min(p(z)q_k(z^{'}|z),p(z^{'})q_k(z|z^{'}))\\=min(p(z^{'})q_k(z|z^{'}),p(z)q_k(z^{'}|z))\\ =p(z^{'})q_k(z|z^{'})A_k(z,z^{'})p(z)qk(z′∣z)Ak(z′,z)=min(p(z)qk(z′∣z),p(z′)qk(z∣z′))=min(p(z′)qk(z∣z′),p(z)qk(z′∣z))=p(z′)qk(z∣z′)Ak(z,z′)
即证明了其细节平衡性质。
吉布斯采样
吉布斯采样可以看作Metropolis-Hastings算法的一个简单应用情形。
吉布斯采样的步骤如下:
- 初始化:{zi:i=1,...,M}\lbrace z_i:i=1,...,M\rbrace{zi:i=1,...,M}
- 对于τ=1,...,T:\tau=1,...,T:τ=1,...,T:
-采样z1(τ+1)p(z1∣z2(τ),z2(τ),...,zM(τ))z_1^{(\tau+1)}~p(z_1|z_2^{(\tau)},z_2^{(\tau)},...,z_M^{(\tau)})z1(τ+1) p(z1∣z2(τ),z2(τ),...,zM(τ))
-采样z2(τ+1)p(z2∣z1(τ+1),z3(τ),...,zM(τ))z_2^{(\tau+1)}~p(z_2|z_1^{(\tau+1)},z_3^{(\tau)},...,z_M^{(\tau)})z2(τ+1) p(z2∣z1(τ+1),z3(τ),...,zM(τ))
-…
-采样zj(τ+1)p(zj∣z1(τ+1),...,zj−1(τ+1),zj+1(τ),...,zM(τ))z_j^{(\tau+1)}~p(z_j|z_1^{(\tau+1)},...,z_{j-1}^{(\tau+1)},z_{j+1}^{(\tau)},...,z_M^{(\tau)})zj(τ+1) p(zj∣z1(τ+1),...,zj−1(τ+1),zj+1(τ),...,zM(τ))
-…
-采样zM(τ+1)p(z1∣z1(τ+1),z2(τ+1),...,zM−1(τ+1))z_M^{(\tau+1)}~p(z_1|z_1^{(\tau+1)},z_2^{(\tau+1)},...,z_{M-1}^{(\tau+1)})zM(τ+1) p(z1∣z1(τ+1),z2(τ+1),...,zM−1(τ+1))
经过计算,我们可以发现吉布斯采样的接受因子永远是1,所以永远可以接受样本。
A(z∗,z)=p(z∗)qk(z∣z∗)p(z)qk(z∗∣z)=p(zk∗∣zk~∗)p(zk~∗)p(zk∣zk~∗)p(zk∣zk~)p(zk~)p(zk∗∣zk~)=1A(z^*,z)=\frac{p(z^*)q_k(z|z^*)}{p(z)q_k(z^*|z)}=\frac{p(z_k^*|z_{\tilde{k}}^*)p(z_{\tilde{k}}^*)p(z_k|z_{\tilde{k}}^*)}{p(z_k|z_{\tilde{k}})p(z_{\tilde{k}})p(z_k^*|z_{\tilde{k}})}=1A(z∗,z)=p(z)qk(z∗∣z)p(z∗)qk(z∣z∗)=p(zk∣zk~)p(zk~)p(zk∗∣zk~)p(zk∗∣zk~∗)p(zk~∗)p(zk∣zk~∗)=1
其中zk~z_{\tilde{k}}zk~代表剩余变量,qk(z∗∣z)=p(zk∗∣zk~)q_k(z^*|z)=p(z_k^*|z_{\tilde{k}})qk(z∗∣z)=p(zk∗∣zk~),p(z)=p(zk∣zk~)p(z)=p(z_k|z_{\tilde{k}})p(z)=p(zk∣zk~)
心得体会
采样方法是实际进行训练时候非常重要的方法,它的核心还是帮助我们能够更好地得到后验分布地概率期望。
对于第一部分基本概率分布下的采样方法还是比较熟悉的。(想起了计算智能课的“轮盘赌算法”,当时一直觉得老师为什么强调这样一个算法,现在知道了“轮盘赌算法”的重要性。)对于蒙特卡洛的采样方法感觉还不是很理解他的实际应用,而且觉得在实际当中会面对很多“随机游走”的问题,在本章结束之后要去找几个采样方法的真正应用,学习一下相关的知识。
PRML读书笔记 第十一章 采样方法(1)相关推荐
- 《统计学习方法》读书笔记——第十一章 条件随机场
写在前面 本系列博客是自己对于<统计学习方法>这本书的读书笔记,在读过每个章节以后根据自己的理解写下这一章的知识框架以及补充一些延伸知识点. 目录 写在前面 本章框架 概率无向图模型(马尔 ...
- [swift 进阶]读书笔记-第十一章:互用性 C11P1 实践:封装 CommonMark
第十一章:互用性 Interoperability 前言: swift 的最大优点就是与C 或者 OC 混编的时候稳的一匹 本章主要讲了swift和C之间的一些知识点. 11.1 实践:封装 Comm ...
- 《Microsoft Sql server 2008 Internals》读书笔记--第十一章DBCC Internals(11)
<Microsoft Sql server 2008 Internals>读书笔记订阅地址: http://www.cnblogs.com/downmoon/category/230397 ...
- [读书笔记]第十一章 项目风险管理(中)
第十一章 项目风险管理(中) 1.什么是实施定性风险分析 通过评估单个项目的风险发生的概率和影响,对风险进行优先级排序.为后续分析和行动提供基础. 2.什么是实施定量风险分析 对已识别的单个风险和不确 ...
- 《利用python进行数据分析》读书笔记--第十一章 金融和经济数据应用(一)
自2005年开始,python在金融行业中的应用越来越多,这主要得益于越来越成熟的函数库(NumPy和pandas)以及大量经验丰富的程序员.许多机构发现python不仅非常适合成为交互式的分析环境, ...
- php微服务架构设计模式,《微服务架构设计模式》读书笔记---第十一章:开发面向生产环境的微服务应用...
为了部署到生产环境中,需要考虑三个关键的质量属性:安全性,可配置性和可观测性. 开发安全的服务 需要实现安全性的四个方面: 身份验证. 访问授权.验证是否允许访问主体对指定数据完成请求的操作. 审计. ...
- APUE读书笔记-第十一章-线程
新创建的线程可以访问进程的地址空间,并且继承调用线程的浮点环境和信号屏蔽字,但是该线程的挂起信号集会被清除 新线程时调用pthread_self函数获取自己的线程ID,而不是从共享内存中读出,或者从线 ...
- 大数据之路、阿里巴巴大数据实践读书笔记 --- 第十一章、事实表设计
本章节与上一章节第十章一样,都是本书最难理解的部分,建议如果有不理解的部分,可以先标记,后面实战后再消化. 一.事实表基础 事实表特性 事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计,通过 ...
- 《Go语言圣经》学习笔记 第十一章 测试
<Go语言圣经>学习笔记 第十一章 测试 目录 go test 测试函数 测试覆盖率 基准测试 剖析 示例函数 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语 ...
- 《深入浅出DPDK》读书笔记(十一):DPDK虚拟化技术篇(I/O虚拟化、CPU虚拟化、内存虚拟化、VT-d、I/O透传)
Table of Contents DPDK虚拟化技术篇 X86平台上的I/O虚拟化 120.X86平台上的I/O虚拟化 121.X86平台虚拟化概述 122.CPU虚拟化 123.内存虚拟化 124 ...
最新文章
- android 轮播 中间变大,如何实现中间大两头小的轮播效果
- Linux01-基本操作与Shell
- mac你没有权限打开应用程序_如何管理Mac的隐私权限控制
- 工程中选择数据结构和算法的依据
- 玩转Python? 一文总结30种Python的窍门和技巧,不可错过哈!
- VMWARE 构建局域网 + VMWARE SQL Server 服务器搭建
- MFC线程自定义消息
- mysql基准测试总结 一
- java索引越界异常_索引越界异常java
- Vue 下载本地静态资源static文件夹
- 联想重装系统去掉保护_联想硬盘保护系统7.6卸载后PE还原系统步骤
- 生信分析是个什么玩意儿?
- 华为OD机试 - We Are A Team
- Kubuntu samba安装
- 二阶偏导相等的一个充分条件
- APP地推前要准备些什么?
- java word 文档合并_Java 合并Word文档
- linux文件操作命令入门笔记(tar,cp,mv,zip,scp)
- vscode的下载、安装
- 培训机构的程序员,出来工作就18k,真的能适应吗?