强化学习中的 Monte Carlo¶
Monte Carlo 这个词在不同领域里的外观不完全一样。在统计物理中,我们通常先有一个目标权重
然后设计 Markov chain,使它的平稳分布正比于 \(W(s)\),再用抽到的构型估计平衡平均。强化学习中的 Monte Carlo 则更常出现在另一个问题里:环境如何转移、未来能拿到多少奖励,我们可能并不知道,只能让智能体亲自经历很多条轨迹,然后用这些随机经历估计价值。
这两个方向的共同点是“用样本平均估计期望”。差别在于,物理 Monte Carlo 主要问:
如何估计;强化学习中的 Monte Carlo 主要问:
如何估计。前者的随机变量通常是构型上的观测量 \(O(s)\),后者的随机变量通常是从某个状态出发之后整段经历的总回报 \(G_t\)。
为了把这个区别讲清楚,先从不含动作的马尔可夫过程说起,再逐步加入奖励、动作和策略。
马尔可夫过程¶
马尔可夫过程描述一串随机状态:
它的核心假设是 无后效性:
这句话不是说过去真的毫无影响,而是说:只要当前状态 \(S_t\) 已经选得足够完整,那么预测下一步时就不需要再显式查看更早的历史。状态定义得越粗,这个假设越可能只是近似;状态定义得越细,它就越可能成立。
一个两状态天气模型可以写成
以及
若采用列向量约定,转移矩阵为
第一列表示今天是晴天时,明天晴天和雨天的概率;第二列表示今天是雨天时,明天晴天和雨天的概率。每一列都必须归一化:
这个矩阵和物理 Monte Carlo 中的一步转移矩阵是同一种数学对象。但两者的立场不同。天气模型是在描述一个已经存在的随机系统;物理 Monte Carlo 是人为设计一个随机系统,让它收敛到目标分布。
生活中可以把马尔可夫状态想成“做决定时保留的信息”。如果要预测一个人明天是否会去公司,只记录“今天在家还是在公司”可能太粗;再记录“工作日还是周末”“是否下雨”“是否有会议”,预测就会更可靠。马尔可夫性要求的不是世界简单,而是要求我们选的状态变量足够承担预测任务。
隐马尔可夫模型、奖励过程和决策过程¶
从马尔可夫过程出发,常见的扩展有三类。
第一类是隐马尔可夫模型。系统内部有真实状态 \(S_t\),但我们不能直接看到它,只能看到观测 \(O_t\)。例如真实天气是隐藏状态,路面是否湿、是否有人打伞是观测。此时问题通常是:根据观测序列反推出隐藏状态,或者预测下一次观测。
第二类是马尔可夫奖励过程。它在状态转移之外加入奖励:
此时问题从“下一步会到哪里”变成“从这里出发长期平均好不好”。这已经很接近强化学习中的价值函数。
第三类是马尔可夫决策过程,也就是 MDP。它在奖励过程上再加入动作:
动作使问题发生本质变化。没有动作时,系统怎么演化由环境决定;有动作时,智能体的选择会改变下一步的状态分布和奖励分布。强化学习的核心问题,就是在这样的随机环境里学习如何选择动作。
即时奖励、长期回报和价值函数¶
奖励 \(R_{t+1}\) 是第 \(t\) 步之后立刻收到的反馈。它可以是游戏得分、机器人移动的能耗、投资组合的收益,也可以是人为设计的训练信号。即时奖励只回答“刚才这一步好不好”,但决策真正关心的是“从现在开始长期会怎样”。
因此定义回报
这里 \(\gamma\) 是折扣因子,满足
\(\gamma\) 的作用有两层。数学上,它让无限长回报在很多情况下保持有限。建模上,它表达对未来的重视程度。\(\gamma\) 接近 \(1\) 时,智能体更愿意为了长远收益忍受短期损失;\(\gamma\) 较小时,智能体更看重眼前奖励。
价值函数就是回报的条件期望:
这一定义很重要,因为它把“好状态”从主观描述变成了可估计的数学量。一个状态好,不是因为它看起来舒服,而是因为从这个状态出发,未来回报的平均值高。
试餐厅是一个直观类比。一次用餐体验不只包含第一口味道,还包含排队时间、价格、服务、吃完之后是否方便回家。若把“下班后站在公司门口”看作状态,把“去某家店”看作接下来会采取的行为,那么一次完整体验给出一个回报 \(G_t\)。去很多次之后取平均,才比较接近这个选择的真实价值。只去一次就下结论,等价于用一个噪声很大的样本估计期望。
Bellman 期望方程¶
回报可以递归拆开:
如果没有动作,只有状态转移,那么对条件 \(S_t=s\) 取期望,得到
其中
而
这就是马尔可夫奖励过程的 Bellman 期望方程。它说得很朴素:当前状态的价值,等于当前能拿到的平均即时奖励,加上下一状态价值的折扣平均。
这个公式也解释了为什么价值函数常常不是一个局域量。一个状态本身可能没有即时奖励,但它可能通往很多高价值状态,因此仍然有高价值。反过来,一个状态可能马上给出奖励,但之后很容易进入糟糕状态,它的长期价值也未必高。
MDP:状态、动作、环境和策略¶
MDP 的基本元素可以写成
这里 \(\mathcal S\) 是状态空间,\(\mathcal A\) 是动作空间,\(P\) 是转移概率,\(R\) 是奖励函数,\(\gamma\) 是折扣因子。一次交互过程为:
- 环境给出当前状态 \(S_t=s\)。
- 智能体根据策略选择动作 \(A_t=a\)。
- 环境返回奖励 \(R_{t+1}\)。
- 环境转移到新状态 \(S_{t+1}=s'\)。
在 MDP 中,转移概率依赖动作:
奖励也可以依赖状态和动作:
策略 \(\pi(a\mid s)\) 表示在状态 \(s\) 下选择动作 \(a\) 的概率:
给定策略以后,动作就被策略随机化掉了,MDP 重新变成一个马尔可夫奖励过程。有效转移概率为
有效即时奖励为
于是策略 \(\pi\) 下的状态价值函数满足
这条式子要分两层读。括号里面是“如果在状态 \(s\) 固定选择动作 \(a\),会得到多少期望价值”;外面的 \(\sum_a\pi(a\mid s)\) 是“策略在状态 \(s\) 下会以不同概率选择不同动作,因此还要对动作求平均”。
通勤例子可以把这些对象对应起来:
- 状态 \(s\):现在的位置、时间、天气、是否赶时间。
- 动作 \(a\):坐地铁、打车、骑车、步行。
- 转移 \(P^a_{ss'}\):选择某种方式之后,下一状态可能是准时到达、堵在路上、临时换乘。
- 奖励 \(R_s^a\):花费、舒适度、迟到惩罚、体力消耗。
- 策略 \(\pi(a\mid s)\):在不同情境下选择交通方式的习惯。
- 价值 \(V_\pi(s)\):如果以后一直按这个习惯行动,从当前状态出发的长期平均体验。
这个例子也说明,动作不只是“让奖励不同”,它还会改变未来状态的分布。打车和地铁的区别,不只是当前花费不同,也包括后面是否会堵车、是否要换乘、是否容易迟到。
动作价值函数¶
除了状态价值函数,还经常定义动作价值函数:
\(V_\pi(s)\) 评价“站在状态 \(s\),按策略 \(\pi\) 行动好不好”;\(Q_\pi(s,a)\) 评价“站在状态 \(s\),第一步先选动作 \(a\),之后再按策略 \(\pi\) 行动好不好”。
两者关系是
而动作价值函数满足
在控制问题中,\(Q\) 函数尤其重要。若已经知道每个动作的 \(Q(s,a)\),就可以直接比较动作好坏:
这也是为什么很多强化学习算法不直接学习 \(V(s)\),而是学习 \(Q(s,a)\)。\(V(s)\) 告诉我们“这个状态总体好不好”,但 \(Q(s,a)\) 直接告诉我们“在这里该选哪个动作”。
强化学习中的 Monte Carlo 估计¶
如果环境模型 \(P^a_{ss'}\) 和 \(R_s^a\) 都已知,可以通过 Bellman 方程求解价值函数。但强化学习经常面对模型未知的情形:智能体不知道完整转移概率,只能通过交互得到样本轨迹。
一条 episode 可以写作
若在这条轨迹中某一时刻访问了状态 \(s\),可以从那一刻开始计算实际回报 \(G_t\)。多次访问状态 \(s\) 后,用平均值估计
Monte Carlo 估计为
同样也可以估计动作价值:
其中 \(N(s)\) 是状态 \(s\) 被用于估计的次数,\(N(s,a)\) 是状态动作对 \((s,a)\) 被用于估计的次数。
这就是强化学习中 Monte Carlo 方法的核心:不需要显式知道转移矩阵,也不需要写出 Bellman 方程的每一项,只要能采样完整轨迹,就能用实际回报的平均值估计价值。
这个思路和普通 Monte Carlo 积分完全一致。若
而我们能采样
则用
估计 \(\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) 使用
作为 \(V(S_t)\) 的目标。这种做法称为 bootstrap:用已有估计帮助更新新的估计。
两者的区别可以概括为:
而
生活类比是评估一条旅行路线。Monte Carlo 像是完整走完路线之后再打分;TD 像是走到下一站时,根据已经知道的下一站评分先更新当前判断。前者更直接但反馈慢,后者反馈快但依赖当前估计的准确性。
探索与利用¶
在物理 Monte Carlo 中,ergodicity 要求 Markov chain 能访问所有重要构型。强化学习中也有对应问题:智能体必须充分探索动作空间,否则许多状态动作对从未被尝试,价值估计就没有数据来源。
如果一个人每天都走同一条路上班,就很难知道另一条路是否更快。即使当前路线看起来不错,也可能只是因为从未试过更好的选择。强化学习称这类矛盾为探索与利用的权衡:
- 利用:选择当前看起来最好的动作,获得较高即时收益。
- 探索:尝试不确定的动作,收集信息,可能发现更好的长期策略。
常见的简单策略是 \(\epsilon\)-greedy。以 \(1-\epsilon\) 的概率选择当前估计最好的动作,以 \(\epsilon\) 的概率随机探索:
它不是最精致的探索策略,但很好地表达了基本思想:如果完全不探索,价值估计可能永远停在局部经验里;如果只探索不利用,又无法把已经学到的信息转化为表现。
与 MCMC 的关系和区别¶
强化学习中的 Monte Carlo 和 MCMC 都使用随机过程,但目标不同。
MCMC 的典型目标是构造一个以 \(\pi(s)\) 为平稳分布的链:
然后用链上的样本估计
强化学习中的 Monte Carlo 价值估计通常不是为了让状态分布收敛到某个预设 Boltzmann 权重,而是为了估计策略诱导轨迹上的回报期望:
给定策略 \(\pi\) 后,MDP 确实会诱导出一条 Markov chain;如果这个链有平稳分布,也可以分析长期访问频率。但强化学习还多了奖励、动作和策略改进。它关心的不只是“会在哪里停留”,还关心“怎样行动能让长期回报变大”。
可以把两者的主线分别写成:
以及
这也是阅读相关文献时容易混淆的一点。同样叫 Markov chain,物理里常强调 detailed balance、平稳分布和自关联时间;强化学习里常强调策略、回报、Bellman 方程、探索和控制。底层概率语言相通,但问题目标不同。
一个小例子:学生的一天¶
考虑一个学生每天晚上决定如何安排时间。状态可以简化为
动作可以是
若精力充足时选择学习,今晚可能掌握知识,得到正奖励;但也可能因为学习太久,第二天变疲惫。若非常疲惫时继续学习,短期看似努力,奖励可能不高,甚至导致第二天状态更差。若选择休息,今晚学习收益少,但第二天更可能精力充足。
这个例子体现了 MDP 的核心结构:
- 同一个状态下有多个动作可选。
- 不同动作产生不同即时奖励。
- 不同动作改变下一状态的概率。
- 当前最贪心的动作不一定有最高长期价值。
如果学生不知道哪种安排最好,可以试很多天,记录每晚选择之后接下来几天的综合效果。每次完整经历都是一条样本轨迹。把从某个状态和动作出发的总回报平均起来,就得到对 \(Q(s,a)\) 的 Monte Carlo 估计。之后可以倾向于选择估计值更高的动作,同时保留少量探索。
这个例子虽然简单,但它已经包含强化学习的主要矛盾:学习不是只看一步奖励,而是要在不确定的动态系统中,通过反复试验估计长期后果。
小结¶
强化学习中的 Monte Carlo 可以理解为:在一个由状态、动作、奖励和转移组成的随机环境中,用实际采样到的完整轨迹估计价值函数。
它和统计物理 Monte Carlo 共享随机过程和期望估计的语言,但核心对象不同。物理 Monte Carlo 的重点是构造正确的采样分布;强化学习 Monte Carlo 的重点是估计策略带来的长期回报,并为策略改进提供依据。
因此,看到 Monte Carlo 时需要先问清楚:样本是什么,期望是什么,随机过程由谁定义。如果样本是物理构型,目标通常是平衡平均;如果样本是环境轨迹,目标通常是回报期望。这个区分清楚后,马尔可夫过程、奖励过程、MDP、Bellman 方程和 Monte Carlo 估计之间的关系就会比较自然。