【概率方法】重要性采样

news2025/1/31 23:55:48

从一个极简分布出发

假设我们有一个关于随机变量 X X X 的函数 f ( X ) f(X) f(X),满足如下分布

p ( X ) p(X) p(X)0.90.1
f ( X ) f(X) f(X)0.10.9

如果我们要对 f ( X ) f(X) f(X) 的期望 E p [ f ( X ) ] \mathbb{E}_p[f(X)] Ep[f(X)] 进行估计,并且我们有一些从 p p p 中采样的样本,那么朴素的想法是,直接关于 p p p 采样,把采样到的值加起来求平均
E p [ f ( X ) ] = 1 n ∑ i f i ( X ) \mathbb{E}_p[f(X)] = \frac{1}{n} \sum_{i} f_i(X) Ep[f(X)]=n1ifi(X)
但是问题在于,如果采样的样本个数比较少,很可能采样的全都是 0.1,那么和理论值 0.9*0.1+0.1*0.9=0.18 就相差很大。也就是这样的估计方法方差过大。

这个问题的本质原因在于 f ( X ) f(X) f(X) p ( X ) p(X) p(X)形状的不匹配: f ( X ) f(X) f(X)贡献比较大的值的位置, p ( X ) p(X) p(X)采样的概率很小,一旦采样个数过少, f ( X ) f(X) f(X)不足以产生足够的对 E p [ f ( X ) ] \mathbb{E}_p[f(X)] Ep[f(X)]的贡献,因此产生很大的方差

有什么解决办法呢?


重要性采样

如果我们可以换另一个已知的简单的采样分布 q ( X ) q(X) q(X)使得它和 ∣ p ( X ) f ( X ) ∣ |p(X)f(X)| p(X)f(X)匹配,那么方差就能够变小。(这也是此方法命名为重要性采样的原因)

我们可以给积分里面上下乘以一个 q(X),就可以变换成关于 q q q 求另一个表达式的期望

E p [ f ( X ) ] = ∫ X p ( X ) f ( X ) d X = ∫ X q ( X ) p ( X ) q ( X ) f ( X ) d X = E q [ p ( X ) q ( X ) f ( X ) ] \mathbb{E}_p[f(X)] = \int_X p(X)f(X) dX=\int_X q(X) \frac{p(X)}{q(X)}f(X) dX= \mathbb{E}_q[\frac{p(X)}{q(X)}f(X)] Ep[f(X)]=Xp(X)f(X)dX=Xq(X)q(X)p(X)f(X)dX=Eq[q(X)p(X)f(X)]

由于 p , q , f p,q,f p,q,f 的值我们都是可以计算的,假设 q q q 也可以正常采样,那么这个期望是可以求的。


真的有用?

我们不妨取 q ( X ) q(X) q(X) ∣ p ( X ) f ( X ) ∣ |p(X)f(X)| p(X)f(X) 完美匹配,即 q ( X ) = 0.5 ,    X = x i ,   ∀ i q(X) = 0.5, \ \ X=x_i,\ \forall i q(X)=0.5,  X=xi, i
然后我们关于 q q q 采样,求 p ( X ) q ( X ) f ( X ) \frac{p(X)}{q(X)}f(X) q(X)p(X)f(X) 的期望

q ( X ) q(X) q(X)0.50.5
p ( X ) q ( X ) f ( X ) \frac{p(X)}{q(X)}f(X) q(X)p(X)f(X)0.180.18

好了,你随便从 q q q 采,能和理论值不一样算我输
在这里插入图片描述
无论怎么取,我们估计的期望 E ^ q [ p ( X ) q ( X ) f ( X ) ] = 0.18 ∗ 0.5 + 0.18 ∗ 0.5 = 0.18 \mathbb{\hat{E}}_q[\frac{p(X)}{q(X)}f(X)] =0.18 * 0.5 + 0.18 * 0.5 = 0.18 E^q[q(X)p(X)f(X)]=0.180.5+0.180.5=0.18 和理论值完美符合。


重要性采样真的是有用的。不过这只是一个极端的例子,实际上要取这样的一个 q q q 也并不是很容易,还是要到具体领域问题里面具体分析。

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

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

相关文章

极速学习SSM之SpringMVC笔记

文章目录 一、SpringMVC简介1、什么是MVC2、什么是SpringMVC3、SpringMVC的特点 二、HelloWorld1、开发环境2、创建maven工程a>添加web模块b>打包方式:warc>引入依赖 3、配置web.xmla>默认配置方式b>扩展配置方式 4、创建请求控制器5、创建springMVC…

ansible中的角色

1.理解roles在企业中的定位及写法 查看创建目录结构 ansible - galaxy list 指定新的位置 vim ansible.cfg roles_path ~/.ansible/roles 建立项目 cd roles/ ansible-galaxy init vsftpd tree vsftpd/ 编辑任务执行(顺序)文件 vim vsftpd/tas…

selenium库的使用

来都来了给我点个赞收藏一下再走呗🌹🌹🌹🌹🌹 目录 一、下载需要用到的python库selenium 二、selenium的基本使用 1.在python代码引入库 2.打开浏览器 3.元素定位 1)通过id定位 2)通过标…

Go开发运维:Go服务发布到K8S集群

目录 一、实验 1.Go服务发布到k8s集群 二、问题 1.如何从Harbor拉取镜像 一、实验 1.Go服务发布到k8s集群 (1)linux机器安装go(基于CentOS 7系统) yum install go -y (2)查看版本 go version (3)创…

UE引擎 LandscapeGrass 实现机制分析(UE5.2)

前言 随着电脑和手机硬件性能越来越高,游戏越来越追求大世界,而大世界非常核心的一环是植被,目前UE5引擎提供给植被生成的主流两种方式为 手刷植被和LandscapeGrass(WeightMap程序化植被)。当然UE5.3推出新一代PCGFramework 节点程序化生成框…

办公word-从不是第一页添加页码

总结 实际需要注意的是,分隔符、分节符和分页符并不是一个含义 分隔符包含其他两个;分页符:是增加一页;分节符:指将文档分为几部分。 从不是第一页插入页码1步骤 1,插入默认页码 自己可以测试时通过**…

一文掌握Ascend C孪生调试

1 What,什么是孪生调试 Ascend C提供孪生调试方法,即CPU域模拟NPU域的行为,相同的算子代码可以在CPU域调试精度,NPU域调试性能。孪生调试的整体方案如下:开发者通过调用Ascend C类库编写Ascend C算子kernel侧源码&am…

784. 字母大小写全排列

字母大小写全排列 描述 : 给定一个字符串 s ,通过将字符串 s 中的每个字母转变大小写,我们可以获得一个新的字符串。 返回 所有可能得到的字符串集合 。以 任意顺序 返回输出。 题目 : LeetCode 784.字母大小写全排列 : 784. 字母大小写全排列 分析…

JavaScript常用技巧专题二

文章目录 一、前言二、生成随机字符串三、转义HTML特殊字符四、单词首字母大写五、将字符串转换为小驼峰六、删除数组中的重复值七、移除数组中的假值八、获取两个数字之间的随机数九、将数字截断到固定的小数点十、日期10.1、计算两个日期之间天数10.2、从日期中获取是一年中的…

fd信息查看

一、/proc/pid/fdinfo和/proc/pid/fd的含义 二、实例 ref: linux下的/proc/pid/fdinfo和/proc/pid/fd_proc/417/fdinfo/0-CSDN博客 linux select read阻塞_图解Linux的IO模型和相关技术-CSDN博客

实现加盐加密方法以及java nio中基于MappedByteBuffer操作大文件

自己实现 传统MD5可通过彩虹表暴力破解, 加盐加密算法是一种常用的密码保护方法,它将一个随机字符串(盐)添加到原始密码中,然后再进行加密处理。 1. 每次调用方法产生一个唯一盐值(UUID )密码…

生产问题: 利用线程Thread预加载数据缓存,其它类全局变量获取缓存偶发加载不到

生产问题: 利用线程Thread预加载数据缓存偶发加载不到 先上代码 public class ThreadTest {//本地缓存Map<String, Object> map new HashMap<String, Object>();class ThreadA implements Runnable{Overridepublic void run() {System.out.println("Thread…

【崩坏:星穹铁道】卡芙卡狂喜!1.5版本新遗器值不值得刷?

《崩坏&#xff1a;星穹铁道》在1.5版本上线了4套新的遗器套装&#xff0c;照例还是两套外圈遗器两套内圈遗器&#xff0c;分别可以通过幽冥之径侵蚀隧洞副本和模拟宇宙第八世界刷取。 那么本期闲游盒小盒子就简单解析一下这4套新遗器&#xff0c;它们的属性适合哪些角色&#…

2021版吴恩达深度学习课程Deeplearning.ai 05序列模型 12.5

学习内容 05.序列模型 1.1 为什么用序列模型 1.序列模型常见的应用 1.2 注释 notation 1.*T_x(i)表示训练样本x(i)的序列长度&#xff0c;T_y(i)表示target(i)的序列长度2.训练集表示单词的方式*构建字典的方式*在训练集中查找出现频率最高的单词*网络搜集常用字典3.如果遇…

微服务——服务保护Sentinel

雪崩问题 在单体项目里面&#xff0c;如果某一个模块出问题会导致整个项目都有问题。 在微服务项目里面&#xff0c;单独一个服务出问题理论上是不会影响别的服务的。 但是如果有别的业务需要调用这一个模块的话还是会有问题。 问题产生原因和解决思路 最初那只是一个小小…

GEE影像升尺度(10m->250m)

GEE影像升尺度&#xff08;10m->250m&#xff09; 代码 var ext /* color: #d63000 *//* shown: false *//* displayProperties: [{"type": "rectangle"}] */ee.Geometry.Polygon([[[108.74625980473367, 28.562445155322063],[108.74625980473367, …

云计算在计算机领域的应用与发展

云计算在计算机领域的应用与发展 一、引言 随着科技的不断发展&#xff0c;计算机领域已经成为当今社会最为活跃和创新的领域之一。云计算作为一种新兴的计算模式&#xff0c;已经在计算机领域中得到了广泛的应用&#xff0c;并且正在不断地推动着计算机领域的发展。本文将探…

令牌桶算法理解学习(限流算法)

令牌桶算法是网络流量整形&#xff08;Traffic Shaping&#xff09;和速率限制&#xff08;Rate Limiting&#xff09;中最常使用的一种算法。典型情况下&#xff0c;令牌桶算法用来控制发送到网络上的数据的数目&#xff0c;并允许突发数据的发送。 用简单的话语来说就是限制…

基于MyBatis二级缓存深入装饰器模式

视频地址 学习文档 文章目录 一、示意代码二、装饰器三、经典案例—MyBatis二级缓存1、Cache 标准定义2、PerpetualCache 基础实现3、增强实现3-1、ScheduledCache3-2、LruCache 先来说说我对装饰器理解&#xff1a;当你有一个基础功能的代码&#xff0c;但你想在不改变原来代…

轻量封装WebGPU渲染系统示例<46>- 材质组装管线(MaterialPipeline)灯光、阴影、雾以及多Pass(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/MaterialPipelineMultiPasses.ts 当前示例运行效果: 此示例基于此渲染系统实现&#xff0c;当前示例TypeScript源码如下&#xff1a; export class MaterialPipelin…