蒙特卡罗方法 - 重要采样篇

序言

蒙特卡罗方法,作为一种基于随机抽样的数值计算方法,在金融、物理、工程等多个领域展现出了强大的应用潜力。然而,传统蒙特卡罗方法在处理某些特定问题时,可能会遇到收敛速度慢、计算成本高等挑战。为了克服这些难题,重要采样( Importance Sampling \text{Importance Sampling} Importance Sampling)技术应运而生。重要采样是一种改进的蒙特卡罗方法,它通过改变抽样分布,使得样本更加集中于对目标函数贡献较大的区域,从而加速收敛,提高计算效率。这一技术的核心在于设计一个合适的采样分布,即重要性函数,使得样本能够更有效地反映目标问题的特性。

重要采样

  • 蒙特卡罗方法 - 采样和蒙特卡罗方法篇 - 公式2所示,在蒙特卡罗方法中,对积分(或者和)分解,即确定积分中哪一部分作为概率分布 p ( x ) p(\boldsymbol{x}) p(x) 以及哪一部分作为被积的函数 f ( x ) f(\boldsymbol{x}) f(x)(我们感兴趣的是估计 f ( x ) f(\boldsymbol{x}) f(x) 在概率分布 p ( x ) p(\boldsymbol{x}) p(x) 下的期望)是很关键的一步。 p ( x ) f ( x ) p(\boldsymbol{x})f(\boldsymbol{x}) p(x)f(x) 存在不唯一的分解因为它通常可以被写成:
    p ( x ) f ( x ) = q ( x ) p ( x ) f ( x ) q ( x ) p(\boldsymbol{x})f(\boldsymbol{x})=q(\boldsymbol{x})\displaystyle\frac{p(\boldsymbol{x})f(\boldsymbol{x})}{q(\boldsymbol{x})} p(x)f(x)=q(x)q(x)p(x)f(x) — 公式1 \quad\textbf{---\footnotesize{公式1}} 公式1

  • 在这里,我们从 q q q 分布中采样,然后估计 p f q \frac{pf}{q} qpf在此分布下的均值。

    • 许多情况中,给定 p p p f f f 的情况下我们希望计算某个期望,这个问题既然是求期望,那么很自然地 p p p f f f 是一种分解选择。
    • 然而,从衡量一定采样数所达到精度的角度说,原始定义的问题通常不是最优的选择。
    • 幸运的是,最优的选择 q ∗ q^∗ q 通常可以简单推出。
    • 这种最优的采样函数 q ∗ q^∗ q 对应的是所谓的最优重要采样。
  • 从公式1所示的关系中可以发现,任意蒙特卡罗估计:
    s ^ p = 1 n ∑ i = 1 , x ( i ) ∼ p n f ( x ( i ) ) \hat{s}_p=\displaystyle\frac{1}{n}\sum\limits_{i=1,\boldsymbol{x}^{(i)}\sim p}^n f(\boldsymbol{x}^{(i)}) s^p=n1i=1,x(i)pnf(x(i)) — 公式2 \quad\textbf{---\footnotesize{公式2}} 公式2

  • 我们可以容易地发现估计值的期望与 q q q 分布无关:
    E q [ s ^ q ] = E p [ s ^ p ] = s \mathbb{E}_q[\hat{s}_q]=\mathbb{E}_p[\hat{s}_p]=s Eq[s^q]=Ep[s^p]=s — 公式3 \quad\textbf{---\footnotesize{公式3}} 公式3

  • 然而, 重要采样的方差却对不同 q q q 的选取非常敏感。这个方差可以表示为:
    Var [ s ^ q ] = Var [ p ( x ) f ( x ) q ( x ) ] / n \text{Var}[\hat{s}_q]=\text{Var}[\displaystyle\frac{p(\textbf{x})f(\textbf{x})}{q(\textbf{x})}]/n Var[s^q]=Var[q(x)p(x)f(x)]/n — 公式4 \quad\textbf{---\footnotesize{公式4}} 公式4

  • q q q取到: q ∗ ( x ) = p ( x ) ∣ f ( x ) ∣ Z q^*(\boldsymbol{x})=\displaystyle\frac{p(\boldsymbol{x})|f(\boldsymbol{x})|}{Z} q(x)=Zp(x)f(x) — 公式5 \quad\textbf{---\footnotesize{公式5}} 公式5
    时,方差达到最小值。

  • 在这里 Z Z Z 表示归一化常数,选择适当的 Z Z Z 使得 q ∗ ( x ) q^∗(\boldsymbol{x}) q(x) 之和或者积分为 1 1 1

    • 一个好的重要采样分布会把更多的权重放在被积函数较大的地方。
    • 事实上,当 f ( x ) f(\boldsymbol{x}) f(x) 的正负符号不变时, Var [ s ^ q ∗ ] = 0 \text{Var}[\hat{s}_{q^*}] = 0 Var[s^q]=0,这意味着当使用最优的 q q q 分布时,只需要采一个样本就足够了。
    • 当然,这仅仅是因为计算 q ∗ q^∗ q 的时候已经解决了所有的问题。
    • 所以这种只需要采一个样本的方法往往是实践中无法实现的。
  • 对于重要采样来说任意 q q q 分布都是可行的(从得到一个期望上正确的值的角度来说), q ∗ q^∗ q 指的是最优的 q q q 分布(从得到最小方差的角度上考虑)。从 q ∗ q^∗ q 中采样往往是不可行的,但是其他仍然能降低方差的 q q q 的选择还是可行的。

  • 另一种方法是采用有偏重要采样 ( biased importance sampling \text{biased importance sampling} biased importance sampling),这种方法有一个优势,即不需要归一化的 p p p q q q 分布。在处理离散变量的时候, 有偏重要采样估计可以表示为:
    { s ^ BIS = ∑ i = 1 n p ( x ( i ) ) q ( x ( i ) ) f ( x ( i ) ) ∑ i = 1 n p ( x ( i ) ) q ( x ( i ) ) — 公式6 = ∑ i = 1 n p ( x ( i ) ) q ~ ( x ( i ) ) f ( x ( i ) ) ∑ i = 1 n p ( x ( i ) ) q ~ ( x ( i ) ) — 公式7 = ∑ i = 1 n p ~ ( x ( i ) ) q ( x ( i ) ) f ( x ( i ) ) ∑ i = 1 n p ~ ( x ( i ) ) q ( x ( i ) ) — 公式8 \begin{cases} \begin{aligned} \hat{s}_{\text{BIS}}&=\frac{\sum_{i=1}^n\frac{p(\boldsymbol{x}^{(i)})}{q(\boldsymbol{x}^{(i)})} f(\boldsymbol{x}^{(i)})}{\sum_{i=1}^n\frac{p(\boldsymbol{x}^{(i)})}{q(\boldsymbol{x}^{(i)})}} &\quad\textbf{---\footnotesize{公式6}}\\ &=\frac{\sum_{i=1}^n\frac{p(\boldsymbol{x}^{(i)})}{\tilde{q}(\boldsymbol{x}^{(i)})} f(\boldsymbol{x}^{(i)})}{\sum_{i=1}^n\frac{p(\boldsymbol{x}^{(i)})}{\tilde{q}(\boldsymbol{x}^{(i)})}} &\quad\textbf{---\footnotesize{公式7}}\\ &=\frac{\sum_{i=1}^n\frac{\tilde{p}(\boldsymbol{x}^{(i)})}{q(\boldsymbol{x}^{(i)})} f(\boldsymbol{x}^{(i)})}{\sum_{i=1}^n\frac{\tilde{p}(\boldsymbol{x}^{(i)})}{q(\boldsymbol{x}^{(i)})}} &\quad\textbf{---\footnotesize{公式8}} \end{aligned} \end{cases} s^BIS=i=1nq(x(i))p(x(i))i=1nq(x(i))p(x(i))f(x(i))=i=1nq~(x(i))p(x(i))i=1nq~(x(i))p(x(i))f(x(i))=i=1nq(x(i))p~(x(i))i=1nq(x(i))p~(x(i))f(x(i))公式6公式7公式8
    — 公式6 \quad\textbf{---\footnotesize{公式6}} 公式6 — 公式7 \quad\textbf{---\footnotesize{公式7}} 公式7 — 公式8 \quad\textbf{---\footnotesize{公式8}} 公式8

  • 其中 p ~ \tilde{p} p~ q ~ \tilde{q} q~ 分别是分布 p p p q q q 的未经归一化的形式, x ( i ) \boldsymbol{x}^{(i)} x(i) 是从分布 q q q 中采集的样本。这种估计是有偏的因为 E [ s ^ BIS ] ≠ s \mathbb{E}[\hat{s}_{\text{BIS}}] \ne s E[s^BIS]=s,除非当 n n n 渐进性地趋近于 1 1 1 时,公式6的分母会收敛到 1 1 1。所以这种估计也被叫做渐进性无偏的。

  • 尽管一个好的 q q q 分布的选择可以显著地提高蒙特卡罗估计的效率,反之一个糟糕的 q q q 分布选择则会使效率更糟糕。

    • 我们回过头来看看公式4会发现,如果存在一个 q q q 使得 p ( x ) f ( x ) q ( x ) \frac{p(\boldsymbol{x})f(\boldsymbol{x})}{q(\boldsymbol{x})} q(x)p(x)f(x) 很大,那么这个估计的方差也会很大。
    • q ( x ) q(\boldsymbol{x}) q(x) 很小,而 f ( x ) f(\boldsymbol{x}) f(x) p ( x ) p(\boldsymbol{x}) p(x) 都较大并且无法抵消 q q q 时,这种情况会非常明显。
    • q q q 分布经常会取一些简单常用的分布使得我们能够从 q q q 分布中容易地采样。
    • x \boldsymbol{x} x 是高维数据的时候, q q q 分布的简单性使得它很难于 p p p 或者 p ∣ f ∣ p|f| pf 相匹配。当 q ( x ( i ) ) ≫ p ( x ( i ) ) ∣ f ( x ( i ) ) ∣ q(\boldsymbol{x}^{(i)}) \gg p(\boldsymbol{x}^{(i)})|f(\boldsymbol{x}^{(i)})| q(x(i))p(x(i))f(x(i)) 的时候, 重要采样采到了很多无用的样本(权值之和很小或趋于零)。
    • 另一方面,当 q ( x ( i ) ) ≪ p ( x ( i ) ) ∣ f ( x ( i ) ) ∣ q(\boldsymbol{x}^{(i)}) \ll p(\boldsymbol{x}^{(i)})|f(\boldsymbol{x}^{(i)})| q(x(i))p(x(i))f(x(i)) 的时候,样本会很少被采到,其对应的权值却会非常大。
    • 正因为后一个事件是很少发生的,这些样本很难被采到,通常使得对 s s s 的估计出现了典型的估计不足,很难被整体的估计过量抵消。
    • 这样的不均匀情况在高维数据屡见不鲜,因为在高维度分布中联合分布的动态域通常非常大。
  • 尽管存在上述的风险,但是重要采样及其变种在机器学习的应用中仍然扮演着重要的角色,包括深度学习算法。

    • 比方说,重要采样被应用于加速训练具有大规模词汇的神经网络语言模型的过程中(见深度学习应用 - 自然语言处理(NLP)篇 - 重要采样)或者其他有着大量输出结点的神经网络中。
    • 此外,还可以看到重要采样应用于估计配分函数(一个概率分布的归一化常数)的过程中以及在深度有向图模型比如变分自编码器中估计似然函数的对数。
    • 采用随机梯度下降训练模型参数的时候重要采样可以用来改进对代价函数梯度的估计,尤其是针对于分类器模型的训练中一小部分错误分类样本产生的代价函数。
    • 在这种情况下更加频繁地采集这些困难的样本可以降低梯度估计的方差 ( Hinton et al., 2006a \text{Hinton et al., 2006a} Hinton et al., 2006a)。

总结

  • 重要采样技术在蒙特卡罗方法中扮演着至关重要的角色。它通过优化抽样分布,使得样本更加集中于对目标函数贡献较大的区域,从而显著提高了蒙特卡罗方法的收敛速度和计算效率。在实际应用中,重要采样技术广泛应用于期权定价、风险分析、物理模拟等领域,为复杂问题的求解提供了有力支持。然而,设计合适的重要性函数并非易事,需要深入了解目标问题的特性和分布规律。
  • 因此,如何根据具体问题设计高效的重要性函数,成为重要采样技术研究和应用的关键。

往期内容回顾

蒙特卡罗方法 - 采样和蒙特卡罗方法篇
深度学习应用 - 自然语言处理(NLP)篇

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

0基础跟德姆(dom)一起学AI 机器学习04-逻辑回归

逻辑回归简介 应用场景 逻辑回归是解决二分类问题的利器 数学知识 sigmoid函数 概率 极大似然估计 核心思想: 设模型中含有待估参数w,可以取很多值。已经知道了样本观测值,从w的一切可能值中(选出一个使该观察值出现的概率为…

Java8新特性, 函数式编程及Stream流用法大全

用了多少年的java8了,Lambda表达式和stream流也经常用,但是也仅限于某些用法比较熟练,看见了 Function、Consumer 等函数式接口还是一脸懵逼,现在来全面总结一下java8这些新特性,也为自己后续查找做个备忘。如果你只是…

启用vnc访问Dell 服务器IDRAC 7虚拟控制台

Dell IDRAC 7 版本太老,SSL证书过期,IDRAC的Java和本地远程虚拟机控制台访问不了,怎么办? 可以启用vnc访问IDRAC 虚拟控制台

解决雪花ID在前端精度丢失问题

解决雪花ID在前端精度丢失问题 在现代分布式系统中,雪花算法(Snowflake)被广泛用于生成唯一的ID。这些ID通常是Long类型的整数。然而,当这些ID从后端传递到前端时,JavaScript的精度限制可能会导致精度丢失&#xff0c…

Leetcode: 0021-0030题速览

Leetcode: 0021-0030题速览 本文材料来自于LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解 遵从开源协议为知识共享 版权归属-相同方式…

云手机哪款好用?2024年云手机推荐对比指南

随着云手机市场的快速扩展,消费者在选择云手机时面临着众多选择。为了帮助大家找到最适合自己的云手机,小编特意整理了一份当前市场上几款备受关注的云手机品牌对比,大家一起往下看吧。 1. Ogphone云手机 Ogphone云手机是近年来海外业务版块迅…

PCIe配置篇(2)——如何进行配置操作(二)

一、配置机制 我们之前提到过,配置空间存在于PCIe设备上,而处理器通常无法直接执行配置读写请求,因为它只能生成内存和I/O请求。这意味着RC(Root Complex)需要将某些访问请求转换为配置请求,以支持配置空间…

SpringBoot3响应式编程全套-Spring Webflux

目录 传送门前言一、组件对比二、WebFlux1、引入2、Reactor Core3、DispatcherHandler3.1、请求处理流程 4、注解开发4.1、目标方法传参4.2、返回值写法 5、文件上传6、错误处理7、RequestContext8、自定义Flux配置9、Filter 传送门 SpringMVC的源码解析(精品&…

python操作.docx、.pptx文件

python操作.docx、.pptx文件 .docx文件和.pptx文件是Microsoft Office套件中两种常见的文件格式,分别对应Word文档和PowerPoint演示文稿。WPS Office完美支持Microsoft Office文件格式。 使用 Python 操作 .docx 和 .pptx 文件是一项非常实用的技能,尤…

ElasticSearch 备考 -- Snapshot Restore

一、题目 备份集群下的索引 task,存储快照名称为 snapshot_1 二、思考 这个涉及的是集群的备份,主要是通过创建快照,涉及到以下2步骤 Setp1:注册一个备份 snapshot repository Setp2:创建 snapshot 可以通过两种方…

目标检测 DN-DETR(2022)

文章目录 前言gt labels 和gt boxes加噪query的构造attention maskIS(InStability)指标 前言 gt labels 和gt boxes加噪 query的构造 attention mask IS(InStability)指标

工行企业网银U盾展期后有两个证书问题的解决方法

工行企业网银U盾证书快到期后,可以自助展期,流程可以根据企业网银提示页面操作。操作后,可能存在两个新旧两个证书并存的情况,致使网银转账等操作失败,如图: 其原因是新证书生成后,旧证书没有删…

TCP_SOCKET编程实现

文章目录 与UDP_SOCKET的区别第一代Tcp_ServerTcp_Client第二代Tcp_Server第三代Tcp_server多线程版本Tcp_Server线程池版的Tcp_Server使用inet_ntop来解决线程安全问题 业务逻辑编写总结补充说明&&业务代码完成ping的真实作用Translate编写Transform业务代码 整体总结…

胤娲科技:机械臂「叛逃」记——自由游走,再悄然合体

夜深人静,你正沉浸在梦乡的前奏,突然意识到房间的灯还亮着。此刻的你,是否幻想过有一只无形的手,轻盈地飘过,帮你熄灭那盏碍眼的灯? 又或者,你正窝在沙发上,享受电视剧的紧张刺激&am…

C语言 | Leetcode C语言题解之第466题统计重复个数

题目&#xff1a; 题解&#xff1a; #include <stdlib.h> #include <stdio.h> #include <stdbool.h> #include <string.h> #include <math.h> #include <limits.h>#define MMAX(a, b) ((a) > (b)? (a) : (b)) #define MMIN(a,…

打卡第六天 P10287 [GESP样题 七级] 最长不下降子序列

今天是我打卡第六天&#xff0c;做个普及/提高−题吧(#^.^#) 原题链接&#xff1a;[GESP样题 七级] 最长不下降子序列 - 洛谷 题目描述 输入格式 输出格式 输出一行一个整数表示答案。 输入输出样例 输入 #1 5 4 2 10 6 3 1 5 2 2 3 3 1 1 4 输出 #1 3 输入 #2 6 11 …

微服务——分布式事务

目录 分布式事务 1.1分布式事务的特性 1.2分布式事务应用背景 ​编辑 1.3.认识Seata 1.4部署TC服务 1.4.1.准备数据库表 1.4.2.准备配置文件 1.4.3.Docker部署 1.5.微服务集成Seata 1.5.1.引入依赖 1.5.2.改造配置 1.5.3.添加数据库表 ​编辑1.6.XA模式 1.6.1.两…

JavaScript函数基础(通俗易懂篇)

10.函数 10.1 函数的基础知识 为什么会有函数&#xff1f; 在写代码的时候&#xff0c;有一些常用的代码需要书写很多次&#xff0c;如果直接复制粘贴的话&#xff0c;会造成大量的代码冗余&#xff1b; 函数可以封装一段重复的javascript代码&#xff0c;它只需要声明一次&a…

精品WordPress主题/响应式个人博客主题Kratos

Kratos 是一款专注于用户阅读体验的响应式 WordPress 主题&#xff0c;整体布局简洁大方&#xff0c;针对资源加载进行了优化。 Kratos主题基于Bootstrap和Font Awesome的WordPress一个干净&#xff0c;简单且响应迅速的博客主题&#xff0c;Vtrois创建和维护&#xff0c; 主…

LeetCode 刷题基础 -- 模板原型Ⅰ

模板原型 - 基础篇 学习网站一、进制转换二、二分查找① 查找指定元素② 查找第一个大于等于 x 值的序列下标③ 查找第一个大于 x 值的序列下标④ 单峰序列 三、双指针① 两数之和② 序列合并③ 集合求交④ 集合求并 四、其他高效技巧与算法① 区间和② 01 对③ 左小数 五、数学…