蒙特卡洛

蒙特卡洛采样(Monte Carlo Sampling) 是一种通过多次随机采样来近似计算 “难以直接求解的期望或积分” 的方法。其核心思想是:对于一个随机变量的期望(如强化学习中的累积回报期望),如果无法通过数学公式直接计算,就通过大量随机采样的结果来近似计算期望。

举例来说,若要计算 “掷一枚骰子的平均点数”(理论期望是 3.5),蒙特卡洛采样的做法是:掷骰子 1000 次,记录每次的点数,然后计算这 1000 个点数的平均值(比如 3.48),以此近似 3.5 的真实期望。样本量越大,近似结果越准确。

根据蒙特卡洛(Monte Carlo)采样, f(x) 在 分布 p(x) 下的期望值估计 计算如下:从分布p(x) 里抽很多样本 x,对每个样本计算f(x),然后取这些 f(x) 的平均值。表示” 在随机变量 x 按 p(x)p(x)p(x) 分布采样时,函数 f(x)f(x)f(x) 的平均输出值。“

带入强化学习的场景,其中 p(x)p(x)p(x) 是策略模型,随机变量 xxx 就是从策略 p(x)p(x)p(x)中的采样到的轨迹f(x)f(x)f(x) 就是 轨迹 xxx 的期望回报。以REINFORCE 算法为例,蒙特卡洛采样步骤为:

  1. 采样完整轨迹:遵循当前策略 πθ\pi_{\theta}πθ,采集一条完整的轨迹 τ\tauτ
  2. 计算轨迹的累积回报:对轨迹中每个时间步 t,计算从该步开始到轨迹结束的累积折扣回报 Gt=∑k=tTγk−trkG_t=\sum_{k=t}^T \gamma^{k-t} r_kGt=k=tTγktrk
  3. 估计策略梯度:重复采样N条轨迹,得到 N 条轨迹以及对应的累积折扣回报 Gt1,Gt2,⋅⋅⋅,GtNG_t^1,G_t^2,···,G_t^NGt1,Gt2,⋅⋅⋅,GtN ,利用策略梯度定理计算策略梯度∇θJ(θ)≈1N∑i=1N∑t=0T∇θlogπθ(at∣st)⋅Gi,t\nabla_{\theta}J(\theta) \approx \frac{1}{N}\sum_{i=1}^N \sum_{t=0}^T \nabla_{\theta} log \pi_{\theta}(a_t|s_t) · G_{i,t}θJ(θ)N1i=1Nt=0Tθlogπθ(atst)Gi,t , Gi,tG_{i,t}Gi,t 是第 i 条轨迹第 t 步的累积回报。
  4. 更新策略参数:沿梯度方向更新 θ,使策略更倾向于选择能带来高回报的动作。

蒙特卡洛采样用于估计状态价值函数

在强化学习中,蒙特卡洛采样通常用于估计状态价值函数:状态价值函数Vπ(s)V^\pi(s)Vπ(s) 指的是“状态 s 下的未来累积折扣回报期望”,蒙特卡洛方法通过从状态 s 开始,使用策略 πθ\pi_{\theta}πθ 与环境进行多次交互,生成多条完整的轨迹 。对于每条轨迹,计算从状态 s 开始的累积折扣回报 ,然后对这些回报求平均值,以此来估计状态价值函数Vπ(s)V^\pi(s)Vπ(s)。具体步骤如下:

  1. 从状态 s (假设时间步为 t )开始,按照策略 πθ\pi_{\theta}πθ 与环境交互,直到终止状态,计算从状态 s 出发的累积折扣回报 Gt=∑k=tTγk−trkG_t=\sum_{k=t}^T \gamma^{k-t} r_kGt=k=tTγktrk

  2. 多次重复步骤 1,得到 N 条轨迹以及对应的累积折扣回报 Gt1,Gt2,⋅⋅⋅,GtNG_t^1,G_t^2,···,G_t^NGt1,Gt2,⋅⋅⋅,GtN

  3. 状态价值函数的估计值 V^π(s)=1N∑i=1NGti\widehat{V}^\pi(s) = \frac{1}{N}\sum_{i=1}^N G_t^iV π(s)=N1i=1NGti 。随着采样次数 N 的增加,状态价值函数的估计值 V^π(s)\widehat{V}^\pi(s)V π(s)会逐渐收敛到真实的 Vπ(s)V^\pi(s)Vπ(s)

蒙特卡洛采样中价值函数的更新:

蒙特卡洛采样中会进行大量的试验,如果每次都重新计算平均值,效率会比较低。为了更便于计算,实际中一般会把上述过程写成「更新迭代」的公式,即节省资源,不用保存所有样本数据,也可以做到实时更新
V(st)←V(st)+η[Gt−V(st)]V(s_t) \leftarrow V(s_t)+\eta[G_t-V(s_t)]V(st)V(st)+η[GtV(st)]

其中 η\etaη 是学习率,控制了我们对新信息的信任程度。如果 η\etaη 很大(比如接近 1),那么价值函数的更新会比较激进,每次都大幅度地向着新的回报值 GtG_tGt 靠拢。反之,如果 η\etaη 很小,那么价值函数的更新会比较保守,每次都只稍微调整一点。而 Gt−V(st)G_t-V(s_t)GtV(st)是误差项:如果一次采样的回报大于当前价值函数的估计值,那么很可能说明,我们的估计值偏低了,需要变高一点;反则反之。

蒙特卡洛采样的优缺点

优点:

  • 适用性广:蒙特卡洛采样不需要对问题的形式做过多假设,无论是简单的积分计算,还是复杂的强化学习问题,只要能进行随机抽样,都可以尝试使用该方法。
  • 无偏估计: 蒙特卡洛估计直接使用从环境中采样的完整轨迹来计算累积奖励,因此它是无偏差的。

缺点:

  • 收敛速度慢:为了获得较为准确的结果,通常需要大量的样本,尤其是在高维空间中,样本数量可能呈指数级增长,导致计算效率低下,即所谓的 “维数灾难”。
  • 方差较高:每次采样的轨迹回报受随机因素影响大,导致不同轨迹的回报波动剧烈,梯度估计的方差较高,训练不稳定
  • 离线学习:必须等待一条轨迹完整结束后才能计算回报并更新策略,无法 “在线”(边采样边更新)进行,数据利用效率较低。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐