跳转至

强化学习中的 Monte Carlo

Monte Carlo 这个词在不同领域里的外观不完全一样。

在统计物理中,通常先有目标权重:

\[ W(s)=e^{-\beta E(s)}. \]

然后设计一条 Markov chain,使它的平稳分布正比于 \(W(s)\),再用抽到的构型估计平衡平均:

\[ \langle O\rangle = \sum_s\pi(s)O(s). \]

强化学习中的 Monte Carlo 更常出现在另一个问题里:环境如何转移、未来能拿到多少奖励,我们可能并不知道,只能让智能体亲自经历很多条轨迹,然后用这些随机经历估计价值。

强化学习中的核心对象通常是:

\[ V_\pi(s) = \mathbb E_\pi[G_t\mid S_t=s]. \]

两者共同点是:

用样本平均估计期望。

差别是:

领域 样本 估计对象
物理 Monte Carlo 构型 \(s\) 分布 \(\pi(s)\) 下的观测平均 \(\langle O\rangle\)
RL Monte Carlo episode / trajectory 从状态或动作出发的长期回报期望

为了把这个区别讲清楚,先从不含动作的马尔可夫过程说起,再加入奖励、动作和策略。

马尔可夫过程

马尔可夫过程描述一串随机状态:

\[ S_0,S_1,S_2,\ldots. \]

核心假设是无后效性:

\[ P(S_{t+1}=s'\mid S_t=s,S_{t-1},\ldots,S_0) = P(S_{t+1}=s'\mid S_t=s). \]

这不是说过去真的毫无影响,而是说:

如果当前状态 \(S_t\) 已经包含了预测下一步所需的信息,就不需要再显式查看更早历史。

状态定义得越粗,马尔可夫性越可能只是近似;状态定义得越完整,它越可能成立。

两状态天气模型

一个两状态天气模型可以写成:

\[ P({\rm Sunny}\to{\rm Sunny})=0.8, \qquad P({\rm Sunny}\to{\rm Rainy})=0.2, \]
\[ P({\rm Rainy}\to{\rm Sunny})=0.4, \qquad P({\rm Rainy}\to{\rm Rainy})=0.6. \]

若采用列向量约定,转移矩阵为:

\[ \mathbf P = \begin{pmatrix} 0.8 & 0.4\\ 0.2 & 0.6 \end{pmatrix}. \]

第一列表示今天是晴天时,明天晴天和雨天的概率;第二列表示今天是雨天时,明天晴天和雨天的概率。每一列都必须归一化:

\[ \sum_{s'}P(s\to s')=1. \]

这个矩阵和物理 Monte Carlo 中的一步转移矩阵是同一种数学对象。但立场不同:

场景 转移矩阵的角色
天气模型 描述一个已经存在的随机系统
物理 MCMC 人为设计一个随机系统,使其收敛到目标分布
强化学习 环境和策略共同诱导状态转移

生活中可以把马尔可夫状态想成“做决定时保留的信息”。如果要预测一个人明天是否去公司,只记录“今天在家还是在公司”可能太粗;再记录“工作日还是周末”“是否下雨”“是否有会议”,预测就会更可靠。

HMM、MRP 和 MDP

从马尔可夫过程出发,常见扩展有三类。

隐马尔可夫模型

隐马尔可夫模型 hidden Markov model, HMM 中,系统内部有真实状态 \(S_t\),但我们不能直接看到它,只能看到观测 \(O_t\)

例如:

隐藏状态:真实天气
观测:地面是否湿、是否有人打伞

HMM 常见问题是:

  • 根据观测序列推断隐藏状态。
  • 预测下一次观测。
  • 估计模型参数。

这属于 推断、统计推断与信念传播 中的统计推断问题。

马尔可夫奖励过程

马尔可夫奖励过程 Markov reward process, MRP 在状态转移之外加入奖励:

\[ S_t\to R_{t+1}\to S_{t+1}. \]

这时问题从:

下一步会到哪里?

变成:

从这里出发,长期平均好不好?

这已经接近强化学习中的价值函数。

马尔可夫决策过程

马尔可夫决策过程 Markov decision process, MDP 在奖励过程上再加入动作:

\[ S_t\to A_t\to R_{t+1},S_{t+1}. \]

动作使问题发生本质变化。没有动作时,系统怎么演化由环境决定;有动作时,智能体的选择会改变下一状态分布和奖励分布。

强化学习的核心问题就是:

在随机环境中学习如何选择动作,使长期回报最大。

即时奖励、长期回报和价值函数

奖励 \(R_{t+1}\) 是第 \(t\) 步动作之后立刻收到的反馈。它可以是游戏得分、机器人能耗、投资收益,也可以是人为设计的训练信号。

即时奖励只回答:

刚才这一步好不好?

但决策真正关心的是:

从现在开始长期会怎样?

因此定义回报:

\[ G_t = R_{t+1} +\gamma R_{t+2} +\gamma^2R_{t+3} +\cdots = \sum_{k=0}^{\infty}\gamma^kR_{t+k+1}. \]

折扣因子满足:

\[ 0\le\gamma<1. \]

\(\gamma\) 的作用有两层:

  • 数学上,让无限长回报在很多情况下保持有限。
  • 建模上,表达对未来的重视程度。

\(\gamma\) 接近 1 时,智能体更愿意为了长远收益忍受短期损失;\(\gamma\) 较小时,智能体更看重眼前奖励。

价值函数就是回报的条件期望:

\[ V_\pi(s) = \mathbb E_\pi[G_t\mid S_t=s]. \]

一个状态好,不是因为它看起来舒服,而是因为从这个状态出发,未来回报的平均值高。

Bellman 期望方程

回报可以递归拆开:

\[ G_t=R_{t+1}+\gamma G_{t+1}. \]

如果没有动作,只有状态转移,对条件 \(S_t=s\) 取期望,得到:

\[ V(s) = R_s+\gamma\sum_{s'}P_{ss'}V(s'). \]

其中:

\[ R_s = \mathbb E[R_{t+1}\mid S_t=s], \]
\[ P_{ss'} = P(S_{t+1}=s'\mid S_t=s). \]

这就是 MRP 的 Bellman 期望方程。

它说的是:

当前状态价值 = 当前平均即时奖励 + 下一状态价值的折扣平均。

这个公式也解释了为什么价值函数不是单纯局域量。一个状态本身可能没有即时奖励,但它通向很多高价值状态,因此仍然可能有高价值。反过来,一个状态可能马上给奖励,但之后容易进入糟糕状态,长期价值也未必高。

MDP 的基本元素

MDP 可以写成:

\[ (\mathcal S,\mathcal A,P,R,\gamma). \]

其中:

符号 含义
\(\mathcal S\) 状态空间
\(\mathcal A\) 动作空间
\(P\) 转移概率
\(R\) 奖励函数
\(\gamma\) 折扣因子

一次交互过程为:

  1. 环境给出当前状态 \(S_t=s\)
  2. 智能体根据策略选择动作 \(A_t=a\)
  3. 环境返回奖励 \(R_{t+1}\)
  4. 环境转移到新状态 \(S_{t+1}=s'\)

在 MDP 中,转移概率依赖动作:

\[ P^a_{ss'} = P(S_{t+1}=s'\mid S_t=s,A_t=a). \]

奖励也可以依赖状态和动作:

\[ R_s^a = \mathbb E[R_{t+1}\mid S_t=s,A_t=a]. \]

策略是条件分布:

\[ \pi(a\mid s), \qquad \sum_a\pi(a\mid s)=1. \]

给定策略后,MDP 变成 MRP

给定策略以后,动作被策略随机化掉,MDP 可以看成一个 MRP。

有效转移概率为:

\[ P^\pi_{ss'} = \sum_a\pi(a\mid s)P^a_{ss'}. \]

有效即时奖励为:

\[ R_s^\pi = \sum_a\pi(a\mid s)R_s^a. \]

于是策略 \(\pi\) 下的状态价值函数满足:

\[ V_\pi(s) = \sum_a\pi(a\mid s) \left[ R_s^a+\gamma\sum_{s'}P^a_{ss'}V_\pi(s') \right]. \]

这条式子要分两层读:

  1. 括号内是“如果在状态 \(s\) 固定选择动作 \(a\),会得到多少期望价值”。
  2. 外面的 \(\sum_a\pi(a\mid s)\) 是“策略会以不同概率选择不同动作,因此还要对动作求平均”。

动作价值函数

除了状态价值函数,还经常定义动作价值函数:

\[ Q_\pi(s,a) = \mathbb E_\pi[G_t\mid S_t=s,A_t=a]. \]

\(V_\pi(s)\) 评价:

站在状态 s,按策略 pi 行动好不好?

\(Q_\pi(s,a)\) 评价:

站在状态 s,第一步先选动作 a,之后再按策略 pi 行动好不好?

两者关系是:

\[ V_\pi(s) = \sum_a\pi(a\mid s)Q_\pi(s,a). \]

动作价值函数满足:

\[ Q_\pi(s,a) = R_s^a +\gamma\sum_{s'}P^a_{ss'}V_\pi(s'). \]

在控制问题中,\(Q\) 函数尤其重要。若已经知道每个动作的 \(Q(s,a)\),就可以直接比较动作好坏:

\[ a_{\rm best}(s) = \arg\max_a Q(s,a). \]

\(V(s)\) 告诉我们“这个状态总体好不好”;\(Q(s,a)\) 直接告诉我们“在这里该选哪个动作”。

强化学习中的 Monte Carlo 估计

如果环境模型 \(P^a_{ss'}\)\(R_s^a\) 都已知,可以通过 Bellman 方程求解价值函数。但强化学习经常面对模型未知的情形:智能体不知道完整转移概率,只能通过交互得到样本轨迹。

一条 episode 可以写成:

\[ S_0,A_0,R_1,S_1,A_1,R_2,\ldots,S_T. \]

若在这条轨迹中某一时刻访问了状态 \(s\),可以从那一刻开始计算实际回报 \(G_t\)。多次访问状态 \(s\) 后,用平均值估计:

\[ V_\pi(s) = \mathbb E_\pi[G_t\mid S_t=s]. \]

Monte Carlo 估计为:

\[ \widehat V_\pi(s) = {1\over N(s)} \sum_{i=1}^{N(s)}G^{(i)}(s). \]

同样也可以估计动作价值:

\[ \widehat Q_\pi(s,a) = {1\over N(s,a)} \sum_{i=1}^{N(s,a)}G^{(i)}(s,a). \]

其中 \(N(s)\) 是状态 \(s\) 被用于估计的次数,\(N(s,a)\) 是状态动作对 \((s,a)\) 被用于估计的次数。

这就是强化学习中 Monte Carlo 方法的核心:

不需要显式知道转移矩阵,也不需要写出 Bellman 方程的每一项;只要能采样完整轨迹,就能用实际回报的平均值估计价值。

这和普通 Monte Carlo 积分完全一致。若:

\[ \mu=\mathbb E[X], \]

而我们能采样:

\[ X^{(1)},X^{(2)},\ldots,X^{(N)}, \]

则用:

\[ \widehat\mu = {1\over N}\sum_{i=1}^NX^{(i)} \]

估计 \(\mu\)。强化学习里只是把随机变量 \(X\) 换成了“从某个状态或状态动作对出发之后得到的整段回报”。

First-visit 和 Every-visit

一个 episode 中,同一个状态可能出现多次。例如走迷宫时,智能体可能绕圈,反复回到同一个格子。此时 Monte Carlo 估计有两种常见做法。

First-visit Monte Carlo 只使用每条 episode 中第一次访问状态 \(s\) 后的回报。若一条轨迹里状态 \(s\) 出现很多次,也只记录第一次。

Every-visit Monte Carlo 使用每一次访问状态 \(s\) 后的回报。若一条轨迹里状态 \(s\) 出现三次,就记录三份回报。

在满足适当条件时,两者都可以收敛到真实价值。区别主要在样本相关性和实现习惯:

方法 特点
First-visit MC 样本定义更干净
Every-visit MC 利用更多数据,但同一 episode 内多次访问相关性更强

这和物理 Monte Carlo 的数据处理有相似之处。样本多不自动等于信息多。如果相邻样本强相关,误差会被低估。强化学习中的轨迹样本也有相关性,尤其当策略稳定、环境混合慢、episode 很长时,回报样本之间可能高度相关。

Monte Carlo 和 TD 的区别

Monte Carlo 方法通常等到 episode 结束,拿到完整回报 \(G_t\) 后再更新价值估计。优点是概念直接,目标就是真实回报;缺点是必须等完整 episode 结束,而且回报方差可能很大。

时间差分方法 temporal-difference learning, TD 不等到 episode 结束,而是用一步之后的估计值来更新当前估计。例如 TD(0) 使用:

\[ R_{t+1}+\gamma V(S_{t+1}) \]

作为 \(V(S_t)\) 的目标。这种做法称为 bootstrap:用已有估计帮助更新新的估计。

两者区别可以概括为:

\[ \text{Monte Carlo target: }G_t. \]
\[ \text{TD target: }R_{t+1}+\gamma V(S_{t+1}). \]

生活类比是评估一条旅行路线:

  • Monte Carlo:完整走完路线之后再打分。
  • TD:走到下一站时,根据已有的下一站评分先更新当前判断。

前者更直接但反馈慢,后者反馈快但依赖当前估计的准确性。

探索与利用

在物理 Monte Carlo 中,ergodicity 要求 Markov chain 能访问所有重要构型。强化学习中也有对应问题:智能体必须充分探索动作空间,否则许多状态动作对从未被尝试,价值估计就没有数据来源。

如果一个人每天都走同一条路上班,就很难知道另一条路是否更快。即使当前路线看起来不错,也可能只是因为从未试过更好的选择。

强化学习称这类矛盾为探索与利用的权衡:

方向 含义
利用 exploitation 选择当前看起来最好的动作,获得较高即时收益
探索 exploration 尝试不确定的动作,收集信息,可能发现更好的长期策略

常见的简单策略是 \(\epsilon\)-greedy。以 \(1-\epsilon\) 的概率选择当前估计最好的动作,以 \(\epsilon\) 的概率随机探索:

\[ \pi(a\mid s) = \begin{cases} 1-\epsilon+\epsilon/|\mathcal A(s)|, & a=a_{\rm best}(s),\\ \epsilon/|\mathcal A(s)|, & a\ne a_{\rm best}(s). \end{cases} \]

它不是最精致的探索策略,但清楚表达了基本思想:如果完全不探索,价值估计可能永远停在局部经验里;如果只探索不利用,又无法把已经学到的信息转化为表现。

与 MCMC 的关系和区别

强化学习中的 Monte Carlo 和 MCMC 都使用随机过程,但目标不同。

MCMC 的典型目标是构造一个以 \(\pi(s)\) 为平稳分布的链:

\[ \pi(s) = \sum_{s'}\pi(s')P(s'\to s). \]

然后用链上的样本估计:

\[ \langle O\rangle_\pi = \sum_s\pi(s)O(s). \]

强化学习中的 Monte Carlo 价值估计通常不是为了让状态分布收敛到某个预设 Boltzmann 权重,而是为了估计策略诱导轨迹上的回报期望:

\[ V_\pi(s) = \mathbb E_\pi[G_t\mid S_t=s]. \]

给定策略 \(\pi\) 后,MDP 确实会诱导出一条 Markov chain;如果这个链有平稳分布,也可以分析长期访问频率。但强化学习还多了奖励、动作和策略改进。它关心的不只是“会在哪里停留”,还关心“怎样行动能让长期回报变大”。

两条主线可以写成:

MCMC:
设计转移核 -> 采样目标分布 -> 估计分布下的平均
RL Monte Carlo:
采样 episode -> 估计价值函数 -> 评价或改进策略

同样叫 Markov chain,物理里常强调 detailed balance、平稳分布和自关联时间;强化学习里常强调策略、回报、Bellman 方程、探索和控制。底层概率语言相通,但问题目标不同。

一个小例子:学生的一天

考虑一个学生每天晚上决定如何安排时间。状态可以简化为:

\[ s\in\{\text{精力充足},\text{有点疲惫},\text{非常疲惫}\}. \]

动作可以是:

\[ a\in\{\text{学习},\text{运动},\text{休息}\}. \]

若精力充足时选择学习,今晚可能掌握知识,得到正奖励;但也可能因为学习太久,第二天变疲惫。若非常疲惫时继续学习,短期看似努力,奖励可能不高,甚至导致第二天状态更差。若选择休息,今晚学习收益少,但第二天更可能精力充足。

这个例子体现了 MDP 的核心结构:

  • 同一个状态下有多个动作可选。
  • 不同动作产生不同即时奖励。
  • 不同动作改变下一状态的概率。
  • 当前最贪心的动作不一定有最高长期价值。

如果学生不知道哪种安排最好,可以试很多天,记录每晚选择之后接下来几天的综合效果。每次完整经历都是一条样本轨迹。把从某个状态和动作出发的总回报平均起来,就得到对 \(Q(s,a)\) 的 Monte Carlo 估计。之后可以倾向于选择估计值更高的动作,同时保留少量探索。

这个例子虽然简单,但已经包含强化学习的主要矛盾:学习不是只看一步奖励,而是要在不确定的动态系统中,通过反复试验估计长期后果。

和 NNQS / VMC 的对照

本站还关心 VMC 和 NNQS。它们和 RL Monte Carlo 有一个共同结构:

当前参数
  -> 产生样本
  -> 估计某个期望
  -> 更新参数

但对象不同:

问题 样本 估计量 优化方向
VMC / NNQS 构型 (x\sim \psi_\theta(x) ^2)
RL Monte Carlo episode \(\tau\sim\pi_\theta\) 回报期望 \(\mathbb E[G_t]\) 最大化回报
物理 MCMC 构型 \(s\sim\pi(s)\) 观测量平均 \(\langle O\rangle\) 通常用于估计,不一定直接优化策略

因此,看到 Monte Carlo 时需要先问清楚三件事:

  1. 样本是什么?
  2. 期望是什么?
  3. 随机过程由谁定义?

如果样本是物理构型,目标通常是平衡平均;如果样本是环境轨迹,目标通常是回报期望;如果样本来自当前神经网络波函数,目标可能是能量或自由能。

小结

强化学习中的 Monte Carlo 可以理解为:

在一个由状态、动作、奖励和转移组成的随机环境中,用实际采样到的完整轨迹估计价值函数。

它和物理 Monte Carlo 共享随机过程和期望估计的语言,但核心对象不同。物理 Monte Carlo 的重点是构造正确的采样分布;强化学习 Monte Carlo 的重点是估计策略带来的长期回报,并为策略改进提供依据。

这个区分清楚后,马尔可夫过程、奖励过程、MDP、Bellman 方程、Monte Carlo 估计、TD 方法和探索利用之间的关系会自然很多。