马尔可夫决策过程:RL 的形式化框架
本节导读
核心内容
- 掌握 MDP 五元组如何描述状态、动作、转移、奖励和折扣。
- 理解折扣累积回报 为什么是 RL 的总目标。
- 区分确定性策略 与随机策略 。
核心公式
马尔可夫决策过程 (Markov Decision Process):
- :状态空间(State Space),所有可能局面的集合。
- :动作空间(Action Space),所有可能采取的操作的集合。
- :状态转移概率(Transition Probability),描述环境的物理规律。
- :奖励函数(Reward Function),描述环境对动作的打分规则。
- :折扣因子(Discount Factor),决定智能体有多“短视”或“远视”。
折扣累积回报 (Discounted Return):
- :从第 步开始,未来所有打折后奖励的总和(Return)。
- :未来第 步实际拿到的单步奖励。
策略 (Policy):
- :策略(Policy),智能体大脑里的决策规则。
- :确定性策略,在状态 下固定输出动作 。
- :随机策略,在状态 下选择动作 的概率分布。
为什么需要这些公式
上一节的老虎机有个偷懒之处:不管你上一轮选了什么,下一轮面对的局面都一样。真实任务不是这样。CartPole 里你推一下车,杆子角度会变;游戏里你走一步,地图位置会变;大模型生成一个词,后面的上下文也会变。于是问题从"哪个按钮平均更好"升级成"在当前这个局面下,哪个动作更好"。MDP 五元组就是为了解决这个升级: 说清现在看到了什么, 说清能做什么, 说清做完以后世界怎么变, 说清得多少分, 说清未来分数还值多少。读到这里会发现:MDP 不是抽象包装,而是把"动作会改变下一步局面"这件事写成数学语言。
老虎机没有状态——不管上一轮选了什么,这一轮面对的局面完全相同。CartPole 不是这样:你推了一下小车,杆子角度变了,速度变了,局面每一步都在变。你不能只回答"哪个动作更好",还得回答"在当前这个局面下,哪个动作更好"——而且回答完之后局面又变了,你得在新局面下重新决策。
要描述"局面不断变化中的连续决策",需要一套更完整的数学框架。这套框架要回答三个问题:游戏规则是什么(MDP 五元组)、总目标是什么(折扣累积回报 )、每一步怎么选(策略 )。本节依次介绍。
RL 问题的描述框架:(S, A, P, R, γ)
一个 MDP 由五个要素定义,写作 (S, A, P, R, γ)。拿到任何一个 RL 问题,问自己五个问题就够了:
站在哪(S)、干什么(A)、会怎样(P)、得几分(R)、未来打几折(γ)
| 符号 | 英文 | 名称 | 直觉 | 老虎机 | CartPole |
|---|---|---|---|---|---|
| S | State | 状态集合 | "站在哪" | {初始}(单状态) | R⁴(4 维连续值) |
| A | Action | 动作集合 | "干什么" | {选 A, 选 B} | {左推, 右推} |
| P | Transition Probability | 转移概率 | "会怎样" | 始终回到同一状态 | 由物理引擎决定 |
| R | Reward | 奖励函数 | "得几分" | 中奖 +1,没中 -1 | 存活 +1 |
| γ | Discount Factor | 折扣因子 | "未来打几折" | 不涉及(单步游戏) | 通常 0.99 |
S(State)——状态集合
状态是环境在某一时刻的完整描述。老虎机只有一个状态——每一轮面对的情况都一样。CartPole 的状态是一个 4 维向量:
分别代表小车的位置、速度、杆子的角度和角速度。
MDP 最核心的假设是马尔可夫性:只要看清当前状态,不需要知道之前是怎么走到这个局面的,就能做出最优决策。就像下象棋,只需看当前的棋盘,不需要知道前面十步是怎么走的。
这意味着状态必须"完整"——如果 CartPole 只给你"杆子角度"但不给"角速度",你就无法判断杆子是在加速倒还是在减速。就像只看了一眼车速表,却不知道车是在加速还是刹车。状态必须包含做决策所需的所有信息。
A(Action)——动作集合
老虎机有两个离散动作 {选 A, 选 B},CartPole 也是两个离散动作 {左推, 右推},机器人行走则可能是连续的关节力矩向量 。
动作空间的类型直接决定算法选择:
| 动作空间 | 特点 | 适用算法 |
|---|---|---|
| 离散(如 {左, 右}) | 可枚举所有选择,挑最好的 | Q-learning / DQN |
| 连续(如关节力矩) | 无法枚举 | 策略梯度(PPO 等) |
P(Transition Probability)——转移概率
老虎机中,不管你选哪台,状态都不变。CartPole 中, 由牛顿力学决定。假设当前杆子角度 (微倾),动作为"右推":
一个关键区分: 是否已知。知道 就能用动态规划直接算最优策略;不知道 就只能通过交互来"摸索"。大多数真实 RL 问题中 是未知的——围棋有 个状态,LLM 有天文数字的 token 序列组合。"不知道 P"恰恰是 RL 区别于传统最优化的核心特征。
R(Reward)——奖励函数
奖励是 RL 中唯一的学习信号——没有奖励,智能体无从学起。不同任务的奖励信号差异很大:
| 任务 | 奖励信号 | 特点 |
|---|---|---|
| 老虎机 | 中奖 +1,没中 -1 | 即时、密集 |
| CartPole | 存活 +1/步 | 即时、密集 |
| 围棋 | 终局 +1(赢)/ -1(负) | 延迟、稀疏 |
Richard Sutton 提出了奖励假设(Reward Hypothesis):所有目标都可以被描述为"最大化期望累积奖励信号"(Sutton & Barto, 2018)[1]。不管你想要智能体做什么——赢棋、开车、聊天——只要编码成奖励函数,RL 理论上就能学到。
但设计好奖励函数是 RL 工程中最困难的环节之一。"奖励黑客"问题:智能体可能找到奖励函数的漏洞,用意想不到的方式拿高分,实际表现却完全偏离初衷。大模型对齐中"什么样的回答值得高分"本身就是一个研究课题——这正是 RLHF 和 DPO 要解决的核心问题。
γ(Discount Factor)——折扣因子
控制智能体对"延迟满足"的重视程度。先用一个例子建立直觉:两个策略,策略 A 第 1 步就拿 10 分,之后什么都不拿;策略 B 前 9 步拿 0 分,第 10 步拿 20 分。谁更好?
| γ | 策略 A 的 G₀ | 策略 B 的 G₀ | 更优策略 |
|---|---|---|---|
| 0.5 | 10 | 0.5⁹ × 20 = 0.39 | A(几乎只看眼前) |
| 0.9 | 10 | 0.9⁹ × 20 = 7.7 | A(短期偏好) |
| 0.99 | 10 | 0.99⁹ × 20 = 18.3 | B(远视偏好) |
γ 越接近 1,智能体越"远视",越看重长期收益。下一节会详细讨论它的数学作用。
五元组对比:三个 RL 任务
把老虎机、CartPole 和 LLM 对齐三个任务放在一起比较,看看五元组各自长什么样:
| 要素 | 老虎机 | CartPole | LLM 对齐 |
|---|---|---|---|
| S | {初始}(单状态) | R⁴(连续) | 已生成的 token 序列 |
| A | {选 A, 选 B} | {左, 右} | 词表中的下一个 token |
| P | 出奖率(固定但未知) | 物理引擎 | 语言模型自身的采样 |
| R | ±1 | +1/步 | 人类偏好/奖励模型打分 |
| γ | —(单步) | 0.99 | 通常不使用(整句评估) |
逐行看:
S:老虎机只有一个状态——你在哪一轮面对的情况都一样。CartPole 的状态是 4 维连续向量。LLM 的状态是"到目前为止生成的所有 token"——每多生成一个 token,状态就变了。
A:老虎机选 A 还是 B。CartPole 左推还是右推。LLM 的动作是"下一个 token 是什么"——从几万个候选 token 中选一个。
P:老虎机的转移概率就是出奖率,固定但未知。CartPole 由物理引擎决定。LLM 比较特殊: 就是语言模型本身——给定已有 token,下一个 token 的概率分布由模型的 softmax 输出决定。所以 LLM 训练中, 和策略 几乎是同一回事。
R:老虎机即时给 ±1。CartPole 每步 +1。LLM 对齐中的奖励更复杂——通常不是一个固定的函数,而是另一个"奖励模型"网络对生成的整段回答打分(RLHF),或者直接用人类偏好数据来训练(DPO)。
γ:老虎机不涉及(单步游戏)。CartPole 通常用 0.99。LLM 对齐中通常不用折扣因子——因为奖励是对整段回答打的,不是每步都有,所以 退化为单步奖励。
三个任务表面差异巨大,但底层都是同一套数学语言。
折扣累积回报 G_t
MDP 五元组描述了游戏规则。但有了规则,还需要定义智能体到底在追求什么——即"一个回合结束时,总共希望拿多少分"。这里的回合(episode),指的是环境从 reset 开始,到终止条件触发或时间上限到达为止的一次完整尝试。CartPole 中,一根杆子从立起来开始,到倒下、出界,或撑满步数上限,就是一个 episode。
为了衡量这个回合表现得好不好,我们需要把其中每一步的奖励合在一起。 就是这个目标:它把一段交互中的奖励加起来,同时给未来的奖励打折,定义了"从当前时刻起,总共能拿多少分"。
五元组定义了"单步"的规则。但 RL 不是一步游戏——CartPole 要活 200 步,大模型要生成几百个 token。每一步都会产生状态、动作和奖励,一连串下来形成一条轨迹(trajectory):
在回合制任务中,一个完整 episode 通常对应一条完整 trajectory;但 trajectory 更强调"数据长什么样",范围也更宽:它可以是一整局,也可以只是训练中截取的一段经验,或者持续性任务中人为切出来的一段交互数据。
老虎机只有一步,轨迹就是 ,得分就是那一步的奖励。CartPole 活了 4 步呢?4 步各拿 +1 分,总成绩怎么算?最直觉的做法是直接求和:。但眼前的 1 分和 10 步后的 1 分真的等价吗?
不等价。越远未来的奖励越"贬值",折扣因子 就是这个贬值率。加进去就得到折扣累积回报 :
用 CartPole 的具体数字感受:每步奖励 +1,,活了 4 步后杆子倒了:
同样是 +1 的奖励,第 3 步的 1 分只值 —— 连乘三次后,"未来的 1 分"贬值到不到原来的四分之三。
为什么不让 γ = 1?
数学上的必要性。 在无限期游戏中,如果 CartPole 永远活下去,每步都拿 +1:
两个永远活着的策略总回报都是 ,无法比较,优化无从谈起。折扣因子让每步奖励递减,保证累积奖励收敛到有限值。当 且 时:
| γ | 上界 | 含义 |
|---|---|---|
| 0.9 | 10 R_max | 主要关心未来 ~10 步 |
| 0.99 | 100 R_max | 关心未来 ~100 步 |
| 0.999 | 1000 R_max | 几乎等权看待未来 ~1000 步 |
经济学上的合理性。 即使游戏是有限期的,折扣因子仍有意义——经济学中叫"货币时间价值":今天的 100 块比明年的 100 块更值钱,因为你今天拿到钱可以拿去投资。 本质上量化了"早拿比晚拿好"的偏好。
G_t 的递归结构
可以写成递归形式:
展开看为什么:,把 提出来:。
含义:从时刻 开始的总回报 = 这一步的奖励 + 折扣后的下一步总回报。只看一步奖励,剩下的交给 。
这个递归结构是贝尔曼方程的基石——后面会发现贝尔曼方程本质上就是在这个关系上建立的。记住这个等式,它会在后面的内容中反复出现。
策略 π:智能体的决策规则
MDP 五元组描述了游戏规则, 定义了总目标。但规则和目标本身不产生行为——你还需要一个决策规则:在每一个状态下选哪个动作。策略 就是这个决策规则。训练的目标是找到让 最大的最优策略 。
策略有两种形式。
确定性策略——对同一个状态永远输出同一个动作:
Q-learning 和 DQN 用的就是确定性策略——学到 Q 值后直接选 。优点是简洁,缺点是缺乏探索——如果初始估计错误,可能永远锁定在次优动作上,所以 DQN 通常需要搭配 -贪婪机制。
随机性策略——输出动作的概率分布:
随机性策略天然兼顾探索——总有小概率去尝试非首选动作,不需要额外的探索机制。
回到老虎机:策略 1(随机 50/50)就是 ;策略 2(永远选 A)就是确定性策略 。
在 CartPole 中,策略的输入是 4 维状态向量,输出是"向左"和"向右"的概率。训练开始时接近均匀分布(),训练后学会在杆子右倾时输出 。这正是第 1 章训练曲线上"从随机到稳定"的过程。
在 LLM 对齐中,策略就是语言模型本身——给定已生成的 token 序列(状态),输出下一个 token 的概率分布(动作)。第 2 章做 DPO 时,你训练的模型就是一个策略网络。
为什么策略梯度几乎总用随机性策略?
| 原因 | 确定性策略 | 随机性策略 |
|---|---|---|
| 探索 | 需要额外机制(如 ε-贪婪) | 天然内建 |
| 可微性 | 输出离散动作,梯度为零或不存在 | 输出概率分布,有明确解析梯度 |
| 不可预测性 | 行为可预测,对手可利用 | 提供变化,对手难以捉摸 |
2014 年 Silver 等人提出了确定性策略梯度定理 [2],证明确定性策略在连续动作空间中也可做梯度优化。但实践中 PPO、A3C 等主流算法仍用随机性策略——因为它同时解决了探索和优化的问题。
从游戏规则到局面评估
至此,RL 的完整形式化框架已经就位:
- MDP 五元组 描述游戏规则
- 折扣累积回报 定义一局游戏的总分——越远的奖励越不值钱,保证收敛
- 策略 定义智能体如何选动作——确定性策略简单直接,随机性策略自带探索
有了这三件套,你可以用统一的数学语言描述任何 RL 问题。但"描述问题"和"解决问题"之间还差一步: 是一个全局指标,它不告诉你"某个具体的中间局面到底好不好"。如果你知道每个局面的"价值",就可以比较不同局面的好坏,做出更好的决策。象棋中,"走车后的局面价值 80 分,走马后的局面价值 60 分",那显然应该走车。这就是价值函数 要解决的问题——下一节的主题。
下一节将介绍 以及计算它的核心工具贝尔曼方程。V(s) 与贝尔曼方程