文章目录

  • 蒙特卡罗法.
  • 随机抽样.
  • 数学期望估计.
  • 定积分.


蒙特卡罗法.

  • Monte Carlo Method,也称之为统计模拟方法Statistical Simulation Method,是通过从概率模型的随机抽样进行近似数值计算的方法。根据所使用概率模型的不同可以细化出多种不同的蒙特卡罗法,最简洁也最为人熟知的 —— 蒙特卡罗法计算圆周率:在单位正方形内依据二维均匀分布对点进行随机抽样,当抽样次数足够多时,最终落在单位圆内的样本点数量与全部样本点数量就近似等于圆面积与正方形面积之比:蒙特卡洛强化学习论文 蒙特卡洛方法的应用_python于是可以反推出圆周率 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_python_02
  • 蒙特卡罗法主要的应用有:随机抽样、数学期望估计以及定积分计算。

随机抽样.

  • 随机抽样是蒙特卡洛法的核心,假定我们已知概率分布的定义,那么通过随机抽样获得随机样本后,可以通过随机样本的样本特征得到对于概率分布总体特征的估计,例如以样本均值估计总体期望。除了最为暴力简洁的直接抽样法外,当概率密度函数过于复杂 —— 多变量、变量之间不独立时,可以使用接受拒绝抽样法。
  • 接受拒绝抽样法大多应用在原始概率分布 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_03 复杂,难以进行直接抽样时,我们选取另一个易于直接抽样的分布 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_04,并且 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_04 满足:蒙特卡洛强化学习论文 蒙特卡洛方法的应用_机器学习_06这里的分布 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_04 被称为建议分布,按照 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_04 进行直接抽样的结果是 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率分布_09,再对均匀分布 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_机器学习_10 进行直接抽样得到 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_11,我们将 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_11蒙特卡洛强化学习论文 蒙特卡洛方法的应用_python_13 进行比较,当且仅当 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_机器学习_14 时接受样本 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率分布_09,否则拒绝它。
  • 直观上来看,接受拒绝采样法在样本落到 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_03 范围内时就接受,而落到 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_03 范围外时就拒绝,其实质是按照 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_03 的涵盖面积占 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_19 的涵盖面积之比来进行抽样的。
  • 证明】我们记按照 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_04 进行采用的样本被接受为事件 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_机器学习_21,将原分布记为 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_22 以示区分,那么需要证明 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_python_23 基于贝叶斯公式得到:蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_24其中联合概率分布 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_25 可以写为:蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率分布_26并且其中的先验分布 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_03 就是我们用于直接采样的建议分布 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_04,而样本 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_29 是根据独立的均匀分布 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_机器学习_10 来决定的,因此:蒙特卡洛强化学习论文 蒙特卡洛方法的应用_机器学习_31根据接受拒绝采样法的接受原则我们知道,当且仅当 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率分布_32蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_33,其它情况均为 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_机器学习_34,因此:蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率分布_35上述积分是均匀分布 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_机器学习_10 的积分。于是我们得到:蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率分布_37因此:蒙特卡洛强化学习论文 蒙特卡洛方法的应用_python_38该式说明我们基于接受拒绝采样法进行采样的分布 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_机器学习_39 在概率意义上等于原始的采样概率分布 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_机器学习_40

数学期望估计.

  • 问题描述】假设有随机变量 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_29,取值 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率分布_42,其概率密度函数为 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_03蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_44 是定义在 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_python_45 上的函数,目标是求函数 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_44 关于密度函数 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_03 的数学期望 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_python_48
  • 处理该问题的常见做法就是,按照概率分布独立地随机抽取 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_49 个样本 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_python_50,之后计算关于函数 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_44 的样本均值 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_python_52蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率分布_53将其作为数学期望 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_python_54 的近似值。依据弱大数定律,也称为辛钦大数定律,当样本容量趋于无穷时,样本均值的极限等于总体数学期望:蒙特卡洛强化学习论文 蒙特卡洛方法的应用_机器学习_55
  • 上述过程是极为自然的处理策略,这种估计总体数学期望的技巧在下面使用蒙特卡罗方法进行数值定积分时也得到应用。

定积分.

  • 数值积分方法可以对定积分进行近似计算,使用蒙特卡罗方法进行的定积分计算也被称作蒙特卡罗积分,对于函数 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_python_56,计算它在区域 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_python_45 内的定积分:蒙特卡洛强化学习论文 蒙特卡洛方法的应用_机器学习_58
  • 如果能够将 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_python_56 进行分解:蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_60其中 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_03 构成一个概率密度函数,那么上述定积分可以表示为:蒙特卡洛强化学习论文 蒙特卡洛方法的应用_机器学习_62即我们将定积分问题转换成了 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_44 关于概率分布 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_03 的数学期望问题。实际上,我们选定一个概率分布函数 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_03,而后取 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_机器学习_66
  • 参照上部分进行数学期望估计的方法,我们按照分布 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_03 进行随机采样,当 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_49 足够大时,蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_44 的样本均值能够很好的估计总体的数学期望,即:蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_70

  • 】计算定积分:蒙特卡洛强化学习论文 蒙特卡洛方法的应用_python_71
  • 】在区间 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率分布_72 内取 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率论_03 为均匀分布,即:蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率分布_74从而 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率分布_75
  • 而后按照蒙特卡罗积分法,在 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_概率分布_72 区间内随机抽取 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_49 个样本点,他们的样本均值即为我们要求的定积分结果近似值,并且辛钦大数定律指出随着 蒙特卡洛强化学习论文 蒙特卡洛方法的应用_蒙特卡洛强化学习论文_49
  • 下面是对上述例子使用蒙特卡罗积分法的Python代码
# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""

# In[]
import numpy as np
import matplotlib.pyplot as plt

# In[]
def func(x):
    return np.exp(-x**2/2)

# In[]
n = np.linspace(10,1000,1000).astype(int)

res = np.zeros(len(n))

# In[]
for i in range(len(n)):
    x = np.random.rand(n[i])
    x = func(x)
    
    res[i] = np.mean(x)
    
# In[]
plt.plot(n,res)
  • 其运行结果如下,过程中存在震荡,但总体收敛到一个稳定值附近。