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

  • 重要性采样在强化学习有着重要作用,它是蒙特卡洛积分的一种采样策略.

目录

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

概率论基础

  • 本文先补充两条基础的概率论公式,方便大家更好地看懂全文
  • 假设某一连续型随机变量 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的近似值
    蒙特卡洛积分和重要性采样_第1张图片
  • 这时读者可能有疑问,上面这个方法是不是只能针对均匀分布的数据?如果我在区间上按照概率密度函数 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的数学期望:
    蒙特卡洛积分和重要性采样_第2张图片
  • 到这里我们发现其实前面推导 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)的表达式为:
    蒙特卡洛积分和重要性采样_第3张图片
  • 和我们在均匀分布下的结果一致.

重要性采样(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,这样采样加权平均之后的结果就准确了.
  • 重要性采样还有一个别的作用,就是我们有时候还可以改进原来的分布:
    蒙特卡洛积分和重要性采样_第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)不仅能帮助你更好地采样估计,还能帮助你更好地估计准确.

参考

  • https://blog.csdn.net/Dark_Scope/article/details/70992266

你可能感兴趣的:(机器学习)