蒙特卡洛积分和重要性采样

本文介绍了重要性采样在概率论和蒙特卡洛积分中的概念,通过数学推导展示了如何在无法直接按照分布采样时,利用另一个易于采样的分布进行估计。重要性采样在解决分布难以采样问题和提高估计准确性方面具有关键作用,尤其在强化学习中,能够帮助优化策略并提高样本效率。通过实例解释了如何通过调整采样权重来修正估计偏差,确保估计结果的准确性。
摘要由CSDN通过智能技术生成
  • 重要性采样在强化学习有着重要作用,它是蒙特卡洛积分的一种采样策略.

目录

  • 概率论基础
  • 蒙特卡洛积分
  • 重要性采样
  • 参考

概率论基础

  • 本文先补充两条基础的概率论公式,方便大家更好地看懂全文
  • 假设某一连续型随机变量 X X X的样本空间为 D D D,其概率密度分布函数为 p ( x ) p(x) p(x),则其数学期望为: E ( X ) = ∫ D x p ( x ) d x E(X) = \int_D xp(x)dx E(X)=Dxp(x)dx
  • 若另一连续随机变量Y满足Y = f(X),则Y的数学期望为: E ( Y ) = ∫ D f ( x ) p ( x ) d x E(Y) = \int_D f(x)p(x)dx E(Y)=Df(x)p(x)dx

蒙特卡洛积分

  • 现在假如我们要计算一个定积分: A = ∫ a b f ( x ) d x A = \int^b_a f(x)dx A=abf(x)dx
  • 我们可以使用牛顿-莱布尼茨通过求原函数来算这个积分(F(x)是f(x)的原函数): A = ∫ a b f ( x ) d x = F ( b ) − F ( a ) A = \int^b_a f(x)dx = F(b) - F(a) A=abf(x)dx=F(b)F(a)
  • 如果我们无法求得原函数,那么我们就需要通过蒙特卡洛积分法:
  1. 首先我们可以在积分区间 [ a , b ] [a,b] [a,b]上进行均匀采样得到: X 1 , ⋯   , X N {X_1,\cdots,X_N} X1,,XN,样本对应的函数值为: f ( X 1 ) , ⋯   , f ( X N ) {f(X_1),\cdots,f(X_N)} f(X1),,f(XN)
  2. 然后我们可以求和得到: F ( N ) ≈ b − a N ∑ i = 1 N f ( X i ) F(N) \approx \frac{b-a}{N} \sum^N_{i=1}f(X_i) F(N)Nbai=1Nf(Xi)
  • 这个方法和黎曼积分非常相似,可以借用黎曼积分的图直观理解: b − a N \frac{b-a}{N} Nba即为我们在曲线中近似的每一个矩形的宽,而 f ( X i ) f(X_i) f(Xi)则为每一个矩形的高,所以我们用这个方法算出的 F ( N ) F(N) F(N)就可以作为A的近似值
  • 这时读者可能有疑问,上面这个方法是不是只能针对均匀分布的数据?如果我在区间上按照概率密度函数 p ( x ) p(x) p(x)进行采样,那结论还成立吗?让我们来推导一下:
  1. 首先按照概率密度函数 p ( x ) p(x) p(x)在区间 [ a , b ] [a,b] [a,b]上进行采样得到数据${X_1,\cdots,X_N} $
  2. 再构造新的 F N F_N FN函数: F N = 1 N ∑ i = 1 N f ( X i ) p ( X i ) F_N =\frac{1}{N} \sum^N_{i=1} \frac{f(X_i)}{p(X_i)} FN=N1i=1Np(Xi)f(Xi)
  • F N F_N FN的数学期望:
  • 到这里我们发现其实前面推导 p ( x ) p(x) p(x)为均匀分布其实是一种特殊情况:
  • p ( x ) p(x) p(x) [ a , b ] [a,b] [a,b]上的均匀分布,则它的表达式为:
  • F N ( x ) F_N(x) FN(x)的表达式为:
  • 和我们在均匀分布下的结果一致.

重要性采样(Importance Sampling)

定义

  • 通过对蒙特卡洛积分的讲解,我们知道我们可以通过按照函数的分布进行采样求和来近似这个函数.但是现实中往往我们不知道某个函数的分布或者已知某个函数的分布但我们很难按照这个分布采样,那这个时候该怎么办?这时候就要引入我们的重要性采样了.
  • 我们知道 f ( x ) f(x) f(x)在概率分布 p ( x ) p(x) p(x)的期望为: E [ Y ] = ∫ x f ( x ) p ( x ) d x E[Y] = \int_x f(x)p(x)dx E[Y]=xf(x)p(x)dx
  • 因为我们无法直接对分布 p ( x ) p(x) p(x)进行采样,所以我们引入另一个容易采样的分布 q ( x ) q(x) q(x):
    E [ Y ] = ∫ x f ( x ) p ( x ) d x = ∫ x q ( x ) p ( x ) q ( x ) f ( x ) d x E[Y] = \int_x f(x)p(x)dx = \int_x q(x) \frac{p(x)}{q(x)}f(x)dx E[Y]=xf(x)p(x)dx=xq(x)q(x)p(x)f(x)dx
  • 当我们在新的分布 q ( x ) q(x) q(x)上进行采样的时候就可以估计 f ( x ) f(x) f(x)的期望: E [ Y ] = 1 N ∑ i = 1 N p ( x i ) q ( x i ) f ( x i ) E[Y] = \frac{1}{N} \sum^N_{i=1} \frac{p(x_i)}{q(x_i)}f(x_i) E[Y]=N1i=1Nq(xi)p(xi)f(xi)
  • 我们可以看作是函数 p ( x i ) q ( x i ) f ( x i ) \frac{p(x_i)}{q(x_i)}f(x_i) q(xi)p(xi)f(xi)在分布 q ( x ) q(x) q(x)上的期望.这里 p ( x i ) q ( x i ) \frac{p(x_i)}{q(x_i)} q(xi)p(xi)就是重要性权重

作用

  • 我们知道重要性采样就是引入一个新的分布来更好的估计,这解决了原本分布难采样的问题.举个例子.
  • 假设我们要估计一个工厂里面产品的质量,假设每个工厂里面有两条生产线A和B,比例为2比1,通常来说A生产线的质量会比B生产线要好,这个时候我们要估计整个工厂的产品的质量,但是由于生产线的限制,我们不能按照原来AB生产线2比1的比例采样(无法按照原分布采样),我们只能按照AB生产线1比2(新的分布)的比例采样,如果我们直接采样加和平均得到的估计值就是有问题的(采样B生产线的比例比真实的要多,所以得到的结果也比真实产品质量要差),这时候在采样的时候就需要加权,也就是我们的重要性权重,加权的比例是 1 2 \frac{1}{2} 21: 2 1 \frac{2}{1} 12= 1 : 4 1:4 1:4,这样采样加权平均之后的结果就准确了.
  • 重要性采样还有一个别的作用,就是我们有时候还可以改进原来的分布:
  • 我们可以看到如果我们直接从分布 p ( x ) p(x) p(x)采样,而实际这些样本对应的 f ( x ) f(x) f(x)都很小,采样有限的情况下很有可能都无法得到 f ( x ) f(x) f(x)值比较大的样本,这样估计的期望值不准确;而如果我们找到一个分布 q ( x ) q(x) q(x),使得它能在 f ( x ) ∗ p ( x ) f(x) * p(x) f(x)p(x)较大的地方采集到样本,则能更好地逼近我们的期望,而因为有重要性权重来控制新分布的比重,所以结果也不会偏差.
  • 所以选择一个好的新的分布 q ( x ) q(x) q(x)不仅能帮助你更好地采样估计,还能帮助你更好地估计准确.

参考

在统计学和数据分析中,重要性抽样(Importance Sampling)是一种基于概率分布函数的抽样方法。在MATLAB中,重要性抽样是一个重要的功能,它可以帮助用户更高效地进行模拟和估计。 重要性抽样的核心思想是通过调整概率密度函数来增加稀有事件的抽样频率,从而提高估计的准确性。在一些复杂的模拟问题中,某些事件的发生概率非常低,直接进行普通的随机抽样可能无法得到准确的估计结果。而重要性抽样则可以在这种情况下提供更优的解决方案。 在MATLAB中,用户可以通过编写自定义概率密度函数来实现重要性抽样。使用重要性抽样的一般步骤是定义目标概率密度函数、构建采样分布函数、生成重要性抽样样本以及计算所需的估计量。MATLAB提供了丰富的函数和工具箱,如'importancesampler'函数和'Statistics and Machine Learning Toolbox',以便用户可以更方便地进行重要性抽样。 重要性抽样在许多领域具有广泛的应用。例如,在金融风险管理中,可以使用重要性抽样来估计极端事件的概率。在粒子滤波和蒙特卡洛方法中,重要性抽样可以用于有效地对系统状态进行估计和预测。此外,在信号处理和图像处理中,重要性抽样也可以用于高效地估计信号参数和恢复图像。 总之,MATLAB中的重要性抽样功能为用户提供了一个强大的工具,可以帮助他们更准确地进行模拟和估计。通过合理地选择和调整概率密度函数重要性抽样可以有效地提高估计结果的准确性,对于处理稀有事件和复杂问题具有重要的实际意义。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值