RL ML Learning Lab
04 / 13
无模型 · 经验学习

蒙特卡洛方法Monte Carlo Methods

不知道环境模型也能学习 — 从"玩一局"的经验中估计状态价值

2 小时
阅读 + 实操
2 个
交互演示
进阶
难度

蒙特卡洛方法 · 交互演示

Episode 数0
RMSE--
最近回报--
值函数 V(s): | 最近 episode 路径
ε 探索率 0.10
每批 episode 数 10
速度 5步/秒

4.1 没有地图怎么办:从经验中学习

动态规划很强,但有个致命前提:你得知道环境的转移概率和奖励函数 —— 现实里往往没人给你这张「地图」。蒙特卡洛方法的思路极其朴素:不知道期望,就多跑几遍取平均。只要能玩到游戏结束、拿到完整回合的回报,就能从经验中估出每个状态的价值。

下一步预告:MC 要等整回合结束才更新,效率低;下一章的时序差分每走一步就用下一步的估计更新当前,在线学习就此开启。

📌 发生了什么

  • 无模型学习:不需要转移概率,从完整 episode 的回报均值估计 V(s)
  • 首次访问 vs 每次访问:前者无偏,后者样本多但有偏
  • ε-greedy 探索:以 ε 概率随机、否则贪心,保证持续探索

⚠️ 常见陷阱

  • 首次和每次访问没区别?有区别,前者无偏后者有偏,收敛行为不同。
  • MC 学最优策略所以 RMSE 该趋 0?不能,ε-soft 策略与 V* 有固有差距。
  • MC 可以在 episode 中途更新?不行,必须等 episode 结束才能算回报。

本章小结

  • 无模型学习:MC 仅从完整 episode 的回报均值估计 V(s)
  • 首次 vs 每次访问:无偏 vs 有偏,可切换对比
  • ε-greedy 探索保证持续探索,避免陷入局部最优
  • MC 局限:必须等 episode 结束,回报方差大,催生 TD 方法

4.2 蒙特卡洛估值:回报的样本均值

蒙特卡洛方法不需要模型,直接用经验样本(完整 episode)估计价值函数。

MC 预测:状态 s 的价值 = 经过 s 的所有 episode 回报 G_t 的均值。无需知道 P、R,只要能采样到完整轨迹。

4.3 增量更新:来一个新回报修一点

增量更新形式:每来一个新回报 G_t,就按步长 α 朝它修正估值。α=1/N 时退化为样本均值;定常 α 则遗忘旧样本。

4.4 回报的边界:必须等 episode 结束

回报 G_t 从时刻 t 累加到 episode 结束 T。MC 必须等 episode 跑完才能更新(离线),这是它与 TD 的关键区别。

4.5 首次访问 vs 每次访问对比

同一 episode 中状态可能被访问多次,两种估计方式的差异如下。

方法 特点 性质
首次访问 (First-visit) 每个 episode 中只取状态首次出现的回报 无偏估计
每次访问 (Every-visit) 状态每次出现都计入回报 有偏但收敛
增量 α 更新 用定常步长 α 替代 1/N,重视近期 适应非平稳

💡 首次访问 MC 在理论上更干净;每次访问在函数逼近中更常用。

4.6 MC 预测核心代码走读

采样完整 episode,反向累计回报并更新 V(Python,首次访问版):

gamma, alpha = 0.9, 0.1
V, returns = {}, {}        # 状态 -> 回报列表

for ep in range(n_episodes):
    episode = run_episode(policy)   # [(s,a,r), ...]
    G = 0
    visited = set()
    # 从后往前累计回报
    for t in range(len(episode) - 1, -1, -1):
        s, r = episode[t]
        G = r + gamma * G
        if s not in visited:            # 首次访问
            visited.add(s)
            if s not in returns: returns[s] = []
            returns[s].append(G)
            V[s] = average(returns[s])  # 或 V[s] += alpha*(G-V[s])

📚 参考文献与延伸阅读

  • Sutton & Barto, Reinforcement Learning (2nd ed.), §5 Monte Carlo Methods — MC 预测、控制与首次/每次访问
  • Metropolis & Ulam (1949), The Monte Carlo Method — 蒙特卡洛方法的开山论文
  • Wikipedia: Monte Carlo method — 采样估计的历史与应用

📝 课后练习

检验你的理解——答对为止