【机器学习分支】重要性采样(Importance sampling)学习笔记

news2024/12/24 20:43:07

重要性采样(importance sampling)是一种用于估计概率密度函数期望值的常用蒙特卡罗积分方法。其基本思想是利用一个已知的概率密度函数来生成样本,从而近似计算另一个概率密度函数的期望值。

想从复杂概率分布中采样的一个主要原因是能够使用式(11.1)计算期望。重要采样(importance sampling)的方法提供了直接近似期望的框架,但是它本身并没有提供从概率分布 p ( z ) p(z) p(z)中采样的方法,也就是我们无法从式(11.1)直接过渡到(11.2)
E [ f ] = ∫ f ( z ) p ( z ) d z (11.1) \mathbb{E}[f] = \int f(z)p(z)dz \tag{11.1} E[f]=f(z)p(z)dz(11.1) f ^ = 1 L ∑ l = 1 L f ( z ( l ) ) (11.2) \hat{f} = \frac{1}{L}\sum\limits_{l=1}^L f(z^{(l)}) \tag{11.2} f^=L1l=1Lf(z(l))(11.2)公式(11.2)给出的期望的有限和近似依赖于能够从概率分布 p ( z ) p(z) p(z)中采样。然而,假设直接从 p ( z ) p(z) p(z)中采样无法完成,但是对于任意给定的 z z z值,我们可以很容易地计算 p ( z ) p(z) p(z)。一种简单的计算期望的方法是将 z z z空间离散化为均匀的格点,将被积函数使用求和的方式计算,形式为
E [ f ] ≃ ∑ l = 1 L p ( z ( l ) ) f ( z ( l ) ) \mathbb{E}[f] \simeq \sum\limits_{l=1}^Lp(z^{(l)})f(z^{(l)}) E[f]l=1Lp(z(l))f(z(l))这种方法的一个明显的问题是求和式中的项的数量随着 z z z的维度指数增长。此外,正如我们已经注意到的那样,我们感兴趣的概率分布通常将它们的大部分质量限制在 z z z空间的一个很小的区域,因此均匀地采样非常低效,因为在高维的问题中,只有非常小的一部分样本会对求和式产生巨大的贡献。我们希望从 p ( z ) p(z) p(z)的值较大的区域中采样,或理想情况下,从 p ( z ) f ( z ) p(z)f(z) p(z)f(z)的值较大的区域中采样。

与拒绝采样的情形相同,重要采样基于的是对提议分布 q ( z ) q(z) q(z)的使用,我们很容易从提议分布中采样,如下图所示:

重要采样解决的是计算函数 f ( z ) f(z) f(z)关于分布 p ( z ) p(z) p(z)的期望的问题,其中,从 p ( z ) p(z) p(z)中直接采样比较困难。相反,样本 z ( l ) {z^{(l)}} z(l)从一个简单的概率分布 q ( z ) q(z) q(z)中抽取,求和式中的对应项的权值为 p ( z ( l ) ) / q ( z ( l ) ) p(z^{(l)})/q(z^{(l)}) p(z(l))/q(z(l)),这样就可以还原到从 p ( z ) p(z) p(z)中取样。

上述过程中的式子,我们可以通过 q ( z ) q(z) q(z)中的样本 { z ( l ) } \{z^{(l)}\} {z(l)}的有限和的形式来表示期望
E = ∫ f ( z ) p ( z ) d z   = ∫ f ( z ) p ( z ) q ( z ) q ( z ) d z   ≃ 1 L ∑ l = 1 L p ( z ( l ) ) q ( z ( l ) ) f ( z ( l ) ) \mathbb{E} = \int f(z)p(z)dz \ = \int f(z)\frac{p(z)}{q(z)}q(z)dz \ \simeq \frac{1}{L}\sum\limits_{l=1}^L\frac{p(z^{(l)})}{q(z^{(l)})}f(z^{(l)}) E=f(z)p(z)dz =f(z)q(z)p(z)q(z)dz L1l=1Lq(z(l))p(z(l))f(z(l))其中 r l = p ( z ( l ) ) / q ( z ( l ) ) r_l = p(z^{(l)}) / q(z^{(l)}) rl=p(z(l))/q(z(l))被称为重要性权重(importance weights),修正了由于从错误的概率分布 q ( z ) q(z) q(z)中采样引入的偏差。

对于上述过程,举个栗子:

我们的待计算函数为 h ( x ) = e − 2 ∣ x − 5 ∣ h(x)=e^{-2|x-5|} h(x)=e2∣x5∣,待采样分布为 p ( x ) = 1 10 , x ∼ u ( 0 , 10 ) p(x)=\dfrac{1}{10} ,x \sim\mathcal{u}(0,10) p(x)=101,xu(0,10),从 h ( x ) h(x) h(x)的图像中明显可以看出,在中间部分的 h ( x ) p ( x ) h(x)p(x) h(x)p(x)对期望贡献较大,而两边几乎可以忽略不计,所以此时使用均匀分布采样并不合理。

image-20230428164718557

基于此,我们引入了新的采样分布函数 q ( x ) = 1 2 π e − ( x − 5 ) 2 2 q(x)=\dfrac{1}{\sqrt{2\pi}}e^{-\frac{(x-5)^2}{2}} q(x)=2π 1e2(x5)2

在这里插入图片描述
这使得在 h ( x ) h(x) h(x)较大的位置取值更多,需要的采样点更少。

而更常见的情形是,概率分布 p p p的计算结果没有标准化,也就是 p ( z ) = p ~ ( z ) / Z p p(z) = \tilde{p}(z) / Z_p p(z)=p~(z)/Zp中我们只知道 p ~ ( z ) \tilde{p}(z) p~(z),其中 p ~ ( z ) \tilde{p}(z) p~(z)可以很容易地由 z z z计算出来(可能没有函数表达式),而 Z p Z_p Zp未知( p ~ ( z ) \tilde{p}(z) p~(z)无法积分算)。类似的,我们可能希望使用重要采样分布 q ( z ) = q ~ ( z ) / Z q q(z) = \tilde{q}(z) / Z_q q(z)=q~(z)/Zq中的 q ~ ( z ) \tilde{q}(z) q~(z),它具有相同的性质。于是我们得到:
E [ f ] = ∫ f ( z ) p ( z ) d z   = Z q Z p ∫ f ( z ) p ~ ( z ) q ~ ( z ) q ( z ) d z   ≃ Z q Z p 1 L ∑ l = 1 L r ~ l f ( z ( l ) ) \mathbb{E}[f] = \int f(z)p(z)dz \ = \frac{Z_q}{Z_p}\int f(z)\frac{\tilde{p}(z)}{\tilde{q}(z)}q(z)dz \ \simeq \frac{Z_q}{Z_p}\frac{1}{L}\sum\limits_{l=1}^L\tilde{r}_lf(z^{(l)}) E[f]=f(z)p(z)dz =ZpZqf(z)q~(z)p~(z)q(z)dz ZpZqL1l=1Lr~lf(z(l))
其中 r ~ l = p ~ ( z ( l ) ) / q ~ ( z ( l ) ) \tilde{r}_l = \tilde{p}(z^{(l)}) / \tilde{q}(z^{(l)}) r~l=p~(z(l))/q~(z(l))

我们还可以使用同样的样本集合来计算比值 Z p / Z q Z_p / Z_q Zp/Zq,结果为:
Z p Z q = 1 Z q ∫ p ~ ( z ) d z = ∫ p ~ ( z ) q ~ ( z ) q ( z ) d z   ≃ 1 L ∑ l = 1 L r ~ l \frac{Z_p}{Z_q} = \frac{1}{Z_q}\int\tilde{p}(z)dz = \int\frac{\tilde{p}(z)}{\tilde{q}(z)}q(z)dz \ \simeq \frac{1}{L}\sum\limits_{l=1}^L\tilde{r}_l ZqZp=Zq1p~(z)dz=q~(z)p~(z)q(z)dz L1l=1Lr~l

第一个等式中 Z p Z_p Zp ∫ p ~ ( z ) d z \int\tilde{p}(z)dz p~(z)dz等价计算了出来,第二个等式中 Z q Z_q Zq q ( z ) = q ~ ( z ) / Z q q(z) = \tilde{q}(z) / Z_q q(z)=q~(z)/Zq替代

因此:
E [ f ] ≃ ∑ l = 1 L w l f ( z ( l ) ) \mathbb{E}[f] \simeq \sum\limits_{l=1}^Lw_lf(z^{(l)}) E[f]l=1Lwlf(z(l))其中: w l = r ~ l ∑ m r ~ m = p ~ ( z ( l ) ) / q ( z ( l ) ) ∑ m p ~ ( z ( l ) ) / q ( z ( l ) ) w_l = \frac{\tilde{r}_l}{\sum_m\tilde{r}_m} = \frac{\tilde{p}(z^{(l)})/q(z^{(l)})}{\sum_m\tilde{p}(z^{(l)})/q(z^{(l)})} wl=mr~mr~l=mp~(z(l))/q(z(l))p~(z(l))/q(z(l))
这也就是我们最终要找样本点计算的式子
最终,我们达到了“利用一个已知的概率密度函数 q ( z ) q(z) q(z)来生成样本,从而近似计算另一个概率密度函数的期望值 E [ f ] = ∫ f ( z ) p ( z ) d z \mathbb{E}[f] = \int f(z)p(z)dz E[f]=f(z)p(z)dz”这一目的。

参考:

  1. 【PRML】【模式识别和机器学习】【从零开始的公式推导】11.1.4重要性采样 11.1.5采样-重要性-重采样 11.1.6采样与EM算法
  2. Importance Sampling - VISUALLY EXPLAINED with EXAMPLES!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/472811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp 抖音授权登录、发布、分享 Ba-Aweme

简介(下载地址) Ba-Aweme 是一个集成抖音的uniapp插件,支持抖音授权登录,发布图片、视频,分享到联系人群组,直接拍摄等。自带选择图片和选择视频方法。 注意: 使用前,先到抖音开放…

LabVIEW CompactRIO 开发指南 3 选择CompactRIO编程模式

第二章 选择CompactRIO编程模式 第一章中介绍的CompactRIO架构为我们提供了通过LabVIEW FPGA定制FPGA硬件或使用NI CompactRIO扫描模式来实现I/O的选项。如果计算机上有LabVIEW Real-Time和LabVIEW FPGA,那么当向LabVIEW项目添加CompactRIO目标时,将提…

BM48-数据流中的中位数

题目 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流&…

【软考网络管理员】2023年软考网管初级常见知识考点(3)- 网络体系结构

【写在前面】也是趁着五一假期前再写几篇分享类的文章给大家,希望看到我文章能给软考网络管理员备考的您带来一些帮助,5月27号也是全国计算机软件考试统一时间,也就不用去各个地方找资料和代码了。紧接着我就把我整理的一些资料分享给大家哈&…

【Python】selenium工具

目录 1. 安装 2. 测试 3. 无头浏览器 4. 元素定位 5. 页面滑动 6. 按键、填写登录表单 7. 页面切换 Selenium是Web的自动化测试工具,为网站自动化测试而开发,Selenium可以直接运行在浏览器上,它支持所有主流的浏览器,可以接…

【Linux - Shell常用命令】- 判断文件是否存在、去掉文件后缀

目录 一、判断文件是否存在1.1 判断目录是否存在1.2 判断文件是否存在1.3 其他文件类型判断 二、字符串截取(去掉文件后缀)2.1 获取文件后缀2.2 获取文件前缀 一、判断文件是否存在 1.1 判断目录是否存在 将下面代码保存为dirExist.sh ,运行…

隐私权限是什么

导读: 隐私权在现代社会对于人们而言是重要的人格权,而随着互联网技术的发展,实践中侵犯隐私权的行为很常见。那么隐私权限是什么?侵犯隐私权的行为有哪些?侵犯他人隐私权要负什么法律责任?接下来将由找法…

Linux-修改虚拟机为静态IP 和 主机名

一、设置虚拟机的IP为静态的 一般情况下,NAT网络连接模式下,DHCP动态分配IP地址的,但这样在每次访问连接Linux虚拟机时,都要先去查询ip地址,很麻烦,干脆就将虚拟机IP地址写死,也就是设置为静态…

数据结构初阶 —— 树(二叉树)

目录 一,二叉树 特殊二叉树 二叉树的性质 二叉树的存储结构 二,二叉树链式结构 二叉树的遍历(四种) 二叉树接口 试题 一,二叉树 由一个根节点,加上两颗左二叉树和右二叉树组成,可以为空…

python cms建站教程:Wagtail建站(一、安装与基本使用)

最近有个建站的项目,因为python比较熟,为了快速建站想着用cms,但发现网上关于python cms的教程很少,于是自己试着写一个。建站工具采用Wagtail,是一款基于Django框架的cms,自己照着文档摸索了一番&#xff…

线性调频Z变换 CZT

文章目录 【1. 原理】【2. z k z_k zk​ 所在的路径】【3. CZT的实现步骤】【4. CZT的特点 】【5. CZT的应用】5.1 通过 CZT 变换求 DFT5.2 对信号的频谱进行细化分析5.3 求解Z变换X(z)的零、极点5.4 使用CZT进行Keystone变换 【6.相关文献】 线性调频Z变换(chirp …

FL Studio中文版V21的主要功能与下载教程

FL Studio21最新版是流行的数字音频工作站(DAW)其最新版本FL Studio 21,主要功能和下载教程如下: FL Studio21中文版功能介绍: 1. 全新界面:采用简洁现代的设计风格,工具栏和菜单进行重组,更加直观。提供智能提示与工作流指导,易于学习和操作。 2. 多显示器支持:可以在不同屏…

野火STM32电机系列(六)Cubemx配置ADC规则和注入通道

前文已经配置了GPIO、编码器 本节讲解CubeMXADC规则和注入通道 本文adc注入通道采用定时器触发,因此在上文定时器配置的基础上进行 常规信号(温度等)使用带DMA的常规通道连续采样 注入采样由定时器触发,采集电机三相电流&…

科大版中国版ChatGPT来啦!抢先体验

随着文心一言、通义千问等国内顶尖级ChatGPT大模型相继问世,具有语言理解和生成能力的人工智能正在引领行业创新发展。作为人工智能公司中的佼佼者,科大讯飞也开始加入到这场竞争中来。 4月20日,科大讯飞宣布即将于5月6日正式发布其最新的“…

【QT5:CAN卡通信的上位机-代码练习-收发数据+布局+引用外部库+基础样例(1)】

【QT5:CAN卡通信的上位机-代码练习-收发数据布局引用外部库基础样例1】 1、概述2、实验环境3、自我总结和提升4、事先声明5、效果展示6、代码编写过程(1)操作步骤部分1、新建工程2、加入外部库,并且加入qt工程中3、ui页面布局4、代码练习5、运…

荔枝派Zero(全志V3S)基于QT实现在LCD显示图片

文章目录 前言一、配置 buildroot 及编译二、写 QT 代码三、编译可执行文件四、拷贝到 SD 卡五、上板子测试六、资源自取 前言 有这样一个需求,通过配置 QT,在 linux 下实现显示我所想要显示的图片,实现的方式是我可以在命令行将图片的路径作…

人工智能之配置环境教程二:在Anaconda中创建虚拟环境安装GPU版本的Pytorch及torchvision并在VsCode中使用虚拟环境

人工智能之配置环境教程二:在Anaconda中创建虚拟环境安装GPU版本的Pytorch及torchvision并在VsCode中使用虚拟环境 作者介绍一. 查看自己电脑的CUDA版本1.1 方式一1.2 方式二 二. 下载安装CUDA三. 查看环境变量四. 创建虚拟环境4.1 使用指令创建虚拟环境4.2 查看Anc…

【刷题之路Ⅱ】LeetCode 24. 两两交换链表中的节点

【刷题之路Ⅱ】LeetCode 24. 两两交换链表中的节点 一、题目描述解题1、方法1——递归1.1、思路分析1.2、代码实现 2、方法2——迭代2.1、思路分析2.2、代码实现 3、方法3——交替的尾插3.1、思路分析3.2、代码实现 一、题目描述 原题连接: 24. 两两交换链表中的节…

人群计数经典方法Density Map Estimation,密度图估计

(3)Density Map Estimation(主流) 这是crowd counting的主流方法 传统方法不好在哪里?object detection-based method和regression-based method无法从图像中提取更抽象的有助于完成人群计数任务的语义特征 概况&…

asp.net个人信息管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net个人信息管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言 开发 asp.net个人信息管理系统VS开发s…