跳转至

强化学习中的 Monte Carlo

Monte Carlo 这个词在不同领域里的外观不完全一样。在统计物理中,我们通常先有一个目标权重

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

然后设计 Markov chain,使它的平稳分布正比于 \(W(s)\),再用抽到的构型估计平衡平均。强化学习中的 Monte Carlo 则更常出现在另一个问题里:环境如何转移、未来能拿到多少奖励,我们可能并不知道,只能让智能体亲自经历很多条轨迹,然后用这些随机经历估计价值。

这两个方向的共同点是“用样本平均估计期望”。差别在于,物理 Monte Carlo 主要问:

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

如何估计;强化学习中的 Monte Carlo 主要问:

\[ V(s) = \mathbb E[G_t\mid S_t=s] \]

如何估计。前者的随机变量通常是构型上的观测量 \(O(s)\),后者的随机变量通常是从某个状态出发之后整段经历的总回报 \(G_t\)

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

马尔可夫过程

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

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

它的核心假设是 无后效性

\[ P(S_{t+1}=s'\mid S_t=s,S_{t-1},\cdots,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 中的一步转移矩阵是同一种数学对象。但两者的立场不同。天气模型是在描述一个已经存在的随机系统;物理 Monte Carlo 是人为设计一个随机系统,让它收敛到目标分布。

生活中可以把马尔可夫状态想成“做决定时保留的信息”。如果要预测一个人明天是否会去公司,只记录“今天在家还是在公司”可能太粗;再记录“工作日还是周末”“是否下雨”“是否有会议”,预测就会更可靠。马尔可夫性要求的不是世界简单,而是要求我们选的状态变量足够承担预测任务。

隐马尔可夫模型、奖励过程和决策过程

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

第一类是隐马尔可夫模型。系统内部有真实状态 \(S_t\),但我们不能直接看到它,只能看到观测 \(O_t\)。例如真实天气是隐藏状态,路面是否湿、是否有人打伞是观测。此时问题通常是:根据观测序列反推出隐藏状态,或者预测下一次观测。

第二类是马尔可夫奖励过程。它在状态转移之外加入奖励:

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

此时问题从“下一步会到哪里”变成“从这里出发长期平均好不好”。这已经很接近强化学习中的价值函数。

第三类是马尔可夫决策过程,也就是 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^2 R_{t+3} +\cdots = \sum_{k=0}^{\infty}\gamma^kR_{t+k+1}. \]

这里 \(\gamma\) 是折扣因子,满足

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

\(\gamma\) 的作用有两层。数学上,它让无限长回报在很多情况下保持有限。建模上,它表达对未来的重视程度。\(\gamma\) 接近 \(1\) 时,智能体更愿意为了长远收益忍受短期损失;\(\gamma\) 较小时,智能体更看重眼前奖励。

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

\[ V(s) = \mathbb E[G_t\mid S_t=s]. \]

这一定义很重要,因为它把“好状态”从主观描述变成了可估计的数学量。一个状态好,不是因为它看起来舒服,而是因为从这个状态出发,未来回报的平均值高。

试餐厅是一个直观类比。一次用餐体验不只包含第一口味道,还包含排队时间、价格、服务、吃完之后是否方便回家。若把“下班后站在公司门口”看作状态,把“去某家店”看作接下来会采取的行为,那么一次完整体验给出一个回报 \(G_t\)。去很多次之后取平均,才比较接近这个选择的真实价值。只去一次就下结论,等价于用一个噪声很大的样本估计期望。

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). \]

这就是马尔可夫奖励过程的 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)\) 表示在状态 \(s\) 下选择动作 \(a\) 的概率:

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

给定策略以后,动作就被策略随机化掉了,MDP 重新变成一个马尔可夫奖励过程。有效转移概率为

\[ 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]. \]

这条式子要分两层读。括号里面是“如果在状态 \(s\) 固定选择动作 \(a\),会得到多少期望价值”;外面的 \(\sum_a\pi(a\mid s)\) 是“策略在状态 \(s\) 下会以不同概率选择不同动作,因此还要对动作求平均”。

通勤例子可以把这些对象对应起来:

  • 状态 \(s\):现在的位置、时间、天气、是否赶时间。
  • 动作 \(a\):坐地铁、打车、骑车、步行。
  • 转移 \(P^a_{ss'}\):选择某种方式之后,下一状态可能是准时到达、堵在路上、临时换乘。
  • 奖励 \(R_s^a\):花费、舒适度、迟到惩罚、体力消耗。
  • 策略 \(\pi(a\mid s)\):在不同情境下选择交通方式的习惯。
  • 价值 \(V_\pi(s)\):如果以后一直按这个习惯行动,从当前状态出发的长期平均体验。

这个例子也说明,动作不只是“让奖励不同”,它还会改变未来状态的分布。打车和地铁的区别,不只是当前花费不同,也包括后面是否会堵车、是否要换乘、是否容易迟到。

动作价值函数

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

\[ Q_{\pi}(s,a) = \mathbb E[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)\)\(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,\cdots,S_T. \]

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

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

Monte Carlo 估计为

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

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

\[ \widehat Q_\pi(s,a) = \frac{1}{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)},\cdots,X^{(N)}, \]

则用

\[ \widehat\mu = \frac{1}{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 的样本定义更干净;Every-visit 往往能利用更多数据,但同一条 episode 内部的多次访问显然不是独立样本。

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

Monte Carlo 和时间差分方法的区别

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

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

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

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

两者的区别可以概括为:

\[ \text{Monte Carlo 目标: }G_t, \]

\[ \text{TD 目标: }R_{t+1}+\gamma V(S_{t+1}). \]

生活类比是评估一条旅行路线。Monte Carlo 像是完整走完路线之后再打分;TD 像是走到下一站时,根据已经知道的下一站评分先更新当前判断。前者更直接但反馈慢,后者反馈快但依赖当前估计的准确性。

探索与利用

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

如果一个人每天都走同一条路上班,就很难知道另一条路是否更快。即使当前路线看起来不错,也可能只是因为从未试过更好的选择。强化学习称这类矛盾为探索与利用的权衡:

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

常见的简单策略是 \(\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;如果这个链有平稳分布,也可以分析长期访问频率。但强化学习还多了奖励、动作和策略改进。它关心的不只是“会在哪里停留”,还关心“怎样行动能让长期回报变大”。

可以把两者的主线分别写成:

\[ \text{MCMC:设计转移核 }\to \text{采样目标分布 }\to \text{估计分布下的平均}. \]

以及

\[ \text{RL Monte Carlo:采样 episode }\to \text{估计价值函数 }\to \text{评价或改进策略}. \]

这也是阅读相关文献时容易混淆的一点。同样叫 Markov chain,物理里常强调 detailed balance、平稳分布和自关联时间;强化学习里常强调策略、回报、Bellman 方程、探索和控制。底层概率语言相通,但问题目标不同。

一个小例子:学生的一天

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

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

动作可以是

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

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

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

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

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

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

小结

强化学习中的 Monte Carlo 可以理解为:在一个由状态、动作、奖励和转移组成的随机环境中,用实际采样到的完整轨迹估计价值函数。

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

因此,看到 Monte Carlo 时需要先问清楚:样本是什么,期望是什么,随机过程由谁定义。如果样本是物理构型,目标通常是平衡平均;如果样本是环境轨迹,目标通常是回报期望。这个区分清楚后,马尔可夫过程、奖励过程、MDP、Bellman 方程和 Monte Carlo 估计之间的关系就会比较自然。