4. 蒙特卡洛方法:从随机采样中学会决策

蒙特卡洛方法,说白了就是「用大量随机采样来逼近真实值」。在强化学习里,它解决的是「不知道环境模型时怎么评估策略」的问题。我刚开始接触时觉得这名字很唬人,其实核心思想特别朴素——多试几次,取平均。

核心思想:通过完整的 episode 采样,用实际回报的平均值来估计状态价值或动作价值。不需要环境模型,完全靠经验。

4.1 蒙特卡洛预测(MC Prediction)

预测问题就是:给定一个策略 π,估计它的状态价值函数 vπ(s)。蒙特卡洛的做法很简单——跑完一个 episode,记录每个状态的实际回报 Gt,然后取平均。

公式长这样:

V(s) ← V(s) + α · (G - V(s))    # 增量式更新
# 或者直接用平均值:V(s) = (1/N) · Σ G_i(s)

我个人习惯用增量式更新,因为不用存所有回报值,内存友好。你想想看,如果状态空间很大,存每个状态的回报列表会爆炸。

4.2 首次访问 vs 每次访问

这里有个细节:同一个 episode 里,某个状态可能出现多次。那怎么处理?

方法 做法 特点
首次访问 MC 只使用该状态在 episode 中第一次出现时的回报 理论性质更好,偏差小
每次访问 MC 使用该状态每次出现时的回报 数据利用率高,但可能有偏差

我的经验:首次访问 MC 在理论上更容易分析,收敛性证明也更干净。但实际项目中,如果 episode 很长,每次访问 MC 能更快利用数据。我一般先用首次访问做原型,数据不够时再切到每次访问。

为什么会这样?因为首次访问 MC 的每次采样是独立同分布的,而每次访问 MC 的采样之间存在相关性。不过在实践中,只要 episode 数量够多,两者差别不大。

4.3 蒙特卡洛控制(MC Control)

控制问题就是:找到最优策略。MC Control 的思路是「广义策略迭代」——交替进行策略评估和策略改进。

流程如下:

  1. 用 MC 方法评估当前策略的动作价值函数 Q(s, a)
  2. 基于 Q 值做策略改进:π(s) ← argmaxa Q(s, a)
  3. 重复直到收敛

嗯,这里要注意:MC Control 必须保证每个状态-动作对都被访问足够多次,否则 Q 值估计不准。这就引出了探索问题。

4.4 探索性初始化(Exploring Starts)

探索性初始化是解决探索问题的一种暴力方法——每个 episode 开始时,随机选择状态和动作作为起点。这样能保证所有 (s, a) 对都有机会被访问到。

我曾经踩过的坑:探索性初始化在理论上没问题,但实际中很难实现。比如机器人控制任务,你没法让机器人从「随机姿态」开始。更常见的是用 ε-贪婪策略来做探索。

探索性初始化的假设是:我们可以从任意状态-动作对开始一个 episode。这在很多实际问题中不成立,所以它更多是理论工具,而非实用方案。

4.5 同策略 vs 异策略学习

这是蒙特卡洛方法里最绕的部分。我当年学的时候也迷糊了一阵。

概念 行为策略 目标策略 典型算法
同策略(On-policy) 与目标策略相同 就是行为策略本身 MC Control with ε-贪婪
异策略(Off-policy) 与目标策略不同 要学习的策略 重要性采样 MC

同策略学习:你用什么策略探索,就用什么策略学习。比如你用 ε-贪婪策略收集数据,然后学习这个 ε-贪婪策略本身。

异策略学习:你用行为策略(比如完全随机)收集数据,但学习的是另一个目标策略(比如最优策略)。这需要重要性采样来修正分布差异。

关键区别:同策略简单稳定,但探索和利用必须平衡;异策略可以复用历史数据,但重要性采样会引入方差。我个人在数据稀缺时倾向异策略,数据充足时用同策略更省心。

重要性采样的公式长这样:

ρ = ∏ (π(a|s) / b(a|s))    # 重要性采样比
V(s) ← V(s) + α · (ρ · G - V(s))

说白了就是:用行为策略 b 采到的回报,乘上一个权重 ρ,来估计目标策略 π 的价值。权重越大,说明这次采样对目标策略越「重要」。

4.6 知识体系总览

下面这张图把蒙特卡洛方法的核心脉络串起来了:

蒙特卡洛方法知识体系 蒙特卡洛方法知识体系 蒙特卡洛方法 MC 预测 (Prediction) MC 控制 (Control) 首次访问 MC 每次访问 MC 探索性初始化 ε-贪婪策略 同策略 (On-policy) 异策略 (Off-policy) 核心流程 采样完整 Episode → 计算回报 G → 更新 Q(s,a) → 策略改进 → 重复

从图上你能看到,蒙特卡洛方法从预测和控制两个方向展开。预测解决「怎么评估」,控制解决「怎么改进」。而探索策略和学习范式(同策略/异策略)是贯穿始终的设计选择。

避坑指南:我曾经在异策略 MC 上吃过亏——重要性采样比 ρ 在 episode 较长时会变得非常大或非常小,导致方差爆炸。后来我加了权重截断(clipping)和归一化,才稳定下来。如果你用异策略,一定要监控 ρ 的分布。