Skip to content

马尔可夫决策过程:RL 的形式化框架

本节导读

核心内容

  • 掌握 MDP 五元组如何描述状态、动作、转移、奖励和折扣。
  • 理解折扣累积回报 GtG_t 为什么是 RL 的总目标。
  • 区分确定性策略 a=π(s)a=\pi(s) 与随机策略 π(as)\pi(a\mid s)

核心公式

M=(S,A,P,R,γ)(MDP 五元组:描述序列决策问题)\mathcal{M} = (\mathcal{S}, \mathcal{A}, P, R, \gamma) \quad \text{(MDP 五元组:描述序列决策问题)}

马尔可夫决策过程 (Markov Decision Process):

  • S\mathcal{S}:状态空间(State Space),所有可能局面的集合。
  • A\mathcal{A}:动作空间(Action Space),所有可能采取的操作的集合。
  • PP:状态转移概率(Transition Probability),描述环境的物理规律。
  • RR:奖励函数(Reward Function),描述环境对动作的打分规则。
  • γ\gamma:折扣因子(Discount Factor),决定智能体有多“短视”或“远视”。

Gt=k=0γkrt+k=rt+γGt+1(折扣累积回报递归式:递归定义总回报)G_t = \sum_{k=0}^{\infty}\gamma^k r_{t+k} = r_t + \gamma G_{t+1} \quad \text{(折扣累积回报递归式:递归定义总回报)}

折扣累积回报 (Discounted Return):

  • GtG_t:从第 tt 步开始,未来所有打折后奖励的总和(Return)。
  • rt+kr_{t+k}:未来第 t+kt+k 步实际拿到的单步奖励。

a=π(s),π(as)=P(At=aSt=s)(确定性策略与随机策略:描述如何选择动作)a = \pi(s), \qquad \pi(a\mid s) = P(A_t=a\mid S_t=s) \quad \text{(确定性策略与随机策略:描述如何选择动作)}

策略 (Policy):

  • π\pi:策略(Policy),智能体大脑里的决策规则。
  • π(s)\pi(s):确定性策略,在状态 ss 下固定输出动作 aa
  • π(as)\pi(a\mid s):随机策略,在状态 ss 下选择动作 aa 的概率分布。

为什么需要这些公式

上一节的老虎机有个偷懒之处:不管你上一轮选了什么,下一轮面对的局面都一样。真实任务不是这样。CartPole 里你推一下车,杆子角度会变;游戏里你走一步,地图位置会变;大模型生成一个词,后面的上下文也会变。于是问题从"哪个按钮平均更好"升级成"在当前这个局面下,哪个动作更好"。MDP 五元组就是为了解决这个升级:S\mathcal{S} 说清现在看到了什么,A\mathcal{A} 说清能做什么,PP 说清做完以后世界怎么变,RR 说清得多少分,γ\gamma 说清未来分数还值多少。读到这里会发现:MDP 不是抽象包装,而是把"动作会改变下一步局面"这件事写成数学语言。

老虎机没有状态——不管上一轮选了什么,这一轮面对的局面完全相同。CartPole 不是这样:你推了一下小车,杆子角度变了,速度变了,局面每一步都在变。你不能只回答"哪个动作更好",还得回答"在当前这个局面下,哪个动作更好"——而且回答完之后局面又变了,你得在新局面下重新决策。

要描述"局面不断变化中的连续决策",需要一套更完整的数学框架。这套框架要回答三个问题:游戏规则是什么(MDP 五元组)、总目标是什么(折扣累积回报 GtG_t)、每一步怎么选(策略 π\pi)。本节依次介绍。

RL 问题的描述框架:(S, A, P, R, γ)

一个 MDP 由五个要素定义,写作 (S, A, P, R, γ)。拿到任何一个 RL 问题,问自己五个问题就够了:

站在哪(S)、干什么(A)、会怎样(P)、得几分(R)、未来打几折(γ)

符号英文名称直觉老虎机CartPole
SState状态集合"站在哪"{初始}(单状态)R⁴(4 维连续值)
AAction动作集合"干什么"{选 A, 选 B}{左推, 右推}
PTransition Probability转移概率"会怎样"始终回到同一状态由物理引擎决定
RReward奖励函数"得几分"中奖 +1,没中 -1存活 +1
γDiscount Factor折扣因子"未来打几折"不涉及(单步游戏)通常 0.99

S(State)——状态集合

状态是环境在某一时刻的完整描述。老虎机只有一个状态——每一轮面对的情况都一样。CartPole 的状态是一个 4 维向量:

s=[x, x˙, θ, θ˙]s = [x,\ \dot{x},\ \theta,\ \dot{\theta}]

分别代表小车的位置、速度、杆子的角度和角速度。

MDP 最核心的假设是马尔可夫性:只要看清当前状态,不需要知道之前是怎么走到这个局面的,就能做出最优决策。就像下象棋,只需看当前的棋盘,不需要知道前面十步是怎么走的。

这意味着状态必须"完整"——如果 CartPole 只给你"杆子角度"但不给"角速度",你就无法判断杆子是在加速倒还是在减速。就像只看了一眼车速表,却不知道车是在加速还是刹车。状态必须包含做决策所需的所有信息。

A(Action)——动作集合

老虎机有两个离散动作 {选 A, 选 B},CartPole 也是两个离散动作 {左推, 右推},机器人行走则可能是连续的关节力矩向量 aRna \in \mathbb{R}^n

动作空间的类型直接决定算法选择:

动作空间特点适用算法
离散(如 {左, 右})可枚举所有选择,挑最好的Q-learning / DQN
连续(如关节力矩)无法枚举策略梯度(PPO 等)

P(Transition Probability)——转移概率

P(ss,a)=在状态 s 下采取动作 a 后,转移到 s 的概率P(s' \mid s, a) = \text{在状态 } s \text{ 下采取动作 } a \text{ 后,转移到 } s' \text{ 的概率}

老虎机中,不管你选哪台,状态都不变。CartPole 中,PP 由牛顿力学决定。假设当前杆子角度 θ=0.05\theta = 0.05(微倾),动作为"右推":

P(θ=0.03θ=0.05,右推)0.7(角度减小,杆子回正)P(\theta' = 0.03 \mid \theta = 0.05, \text{右推}) \approx 0.7 \qquad (\text{角度减小,杆子回正})

P(θ=0.08θ=0.05,右推)0.3(角度继续增大,推力不够)P(\theta' = 0.08 \mid \theta = 0.05, \text{右推}) \approx 0.3 \qquad (\text{角度继续增大,推力不够})

一个关键区分:PP 是否已知。知道 PP 就能用动态规划直接算最优策略;不知道 PP 就只能通过交互来"摸索"。大多数真实 RL 问题中 PP 是未知的——围棋有 1017010^{170} 个状态,LLM 有天文数字的 token 序列组合。"不知道 P"恰恰是 RL 区别于传统最优化的核心特征。

R(Reward)——奖励函数

R(s,a)=在状态 s 下采取动作 a 后获得的奖励R(s, a) = \text{在状态 } s \text{ 下采取动作 } a \text{ 后获得的奖励}

奖励是 RL 中唯一的学习信号——没有奖励,智能体无从学起。不同任务的奖励信号差异很大:

任务奖励信号特点
老虎机中奖 +1,没中 -1即时、密集
CartPole存活 +1/步即时、密集
围棋终局 +1(赢)/ -1(负)延迟、稀疏

Richard Sutton 提出了奖励假设(Reward Hypothesis):所有目标都可以被描述为"最大化期望累积奖励信号"(Sutton & Barto, 2018)[1]。不管你想要智能体做什么——赢棋、开车、聊天——只要编码成奖励函数,RL 理论上就能学到。

但设计好奖励函数是 RL 工程中最困难的环节之一。"奖励黑客"问题:智能体可能找到奖励函数的漏洞,用意想不到的方式拿高分,实际表现却完全偏离初衷。大模型对齐中"什么样的回答值得高分"本身就是一个研究课题——这正是 RLHF 和 DPO 要解决的核心问题。

γ(Discount Factor)——折扣因子

γ[0,1]\gamma \in [0, 1]

γ\gamma 控制智能体对"延迟满足"的重视程度。先用一个例子建立直觉:两个策略,策略 A 第 1 步就拿 10 分,之后什么都不拿;策略 B 前 9 步拿 0 分,第 10 步拿 20 分。谁更好?

γ策略 A 的 G₀策略 B 的 G₀更优策略
0.5100.5⁹ × 20 = 0.39A(几乎只看眼前)
0.9100.9⁹ × 20 = 7.7A(短期偏好)
0.99100.99⁹ × 20 = 18.3B(远视偏好)

γ 越接近 1,智能体越"远视",越看重长期收益。下一节会详细讨论它的数学作用。

五元组对比:三个 RL 任务

把老虎机、CartPole 和 LLM 对齐三个任务放在一起比较,看看五元组各自长什么样:

要素老虎机CartPoleLLM 对齐
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 比较特殊:PP 就是语言模型本身——给定已有 token,下一个 token 的概率分布由模型的 softmax 输出决定。所以 LLM 训练中,PP 和策略 π\pi 几乎是同一回事。

R:老虎机即时给 ±1。CartPole 每步 +1。LLM 对齐中的奖励更复杂——通常不是一个固定的函数,而是另一个"奖励模型"网络对生成的整段回答打分(RLHF),或者直接用人类偏好数据来训练(DPO)。

γ:老虎机不涉及(单步游戏)。CartPole 通常用 0.99。LLM 对齐中通常不用折扣因子——因为奖励是对整段回答打的,不是每步都有,所以 GtG_t 退化为单步奖励。

三个任务表面差异巨大,但底层都是同一套数学语言。

折扣累积回报 G_t

MDP 五元组描述了游戏规则。但有了规则,还需要定义智能体到底在追求什么——即"一个回合结束时,总共希望拿多少分"。这里的回合(episode),指的是环境从 reset 开始,到终止条件触发或时间上限到达为止的一次完整尝试。CartPole 中,一根杆子从立起来开始,到倒下、出界,或撑满步数上限,就是一个 episode。

为了衡量这个回合表现得好不好,我们需要把其中每一步的奖励合在一起。GtG_t 就是这个目标:它把一段交互中的奖励加起来,同时给未来的奖励打折,定义了"从当前时刻起,总共能拿多少分"。

五元组定义了"单步"的规则。但 RL 不是一步游戏——CartPole 要活 200 步,大模型要生成几百个 token。每一步都会产生状态、动作和奖励,一连串下来形成一条轨迹(trajectory)

s0,a0,r0,  s1,a1,r1,  s2,a2,r2,  s_0, a_0, r_0, \; s_1, a_1, r_1, \; s_2, a_2, r_2, \; \ldots

在回合制任务中,一个完整 episode 通常对应一条完整 trajectory;但 trajectory 更强调"数据长什么样",范围也更宽:它可以是一整局,也可以只是训练中截取的一段经验,或者持续性任务中人为切出来的一段交互数据。

老虎机只有一步,轨迹就是 (s0,a0,r0)(s_0, a_0, r_0),得分就是那一步的奖励。CartPole 活了 4 步呢?4 步各拿 +1 分,总成绩怎么算?最直觉的做法是直接求和:1+1+1+1=41 + 1 + 1 + 1 = 4。但眼前的 1 分和 10 步后的 1 分真的等价吗?

不等价。越远未来的奖励越"贬值",折扣因子 γ\gamma 就是这个贬值率。加进去就得到折扣累积回报 GtG_t

Gt=rt+γrt+1+γ2rt+2+γ3rt+3+=k=0γkrt+kG_t = r_t + \gamma \, r_{t+1} + \gamma^2 \, r_{t+2} + \gamma^3 \, r_{t+3} + \cdots = \sum_{k=0}^{\infty} \gamma^k \, r_{t+k}

用 CartPole 的具体数字感受:每步奖励 +1,γ=0.9\gamma = 0.9,活了 4 步后杆子倒了:

G0=1r0+0.9×1r1+0.92×1r2+0.93×1r3=1+0.9+0.81+0.729=3.439G_0 = \underbrace{1}_{r_0} + \underbrace{0.9 \times 1}_{r_1} + \underbrace{0.9^2 \times 1}_{r_2} + \underbrace{0.9^3 \times 1}_{r_3} = 1 + 0.9 + 0.81 + 0.729 = 3.439

同样是 +1 的奖励,第 3 步的 1 分只值 0.7290.729——γ=0.9\gamma = 0.9 连乘三次后,"未来的 1 分"贬值到不到原来的四分之三。

为什么不让 γ = 1?

数学上的必要性。 在无限期游戏中,如果 CartPole 永远活下去,每步都拿 +1:

Gt=1+1+1+=G_t = 1 + 1 + 1 + \cdots = \infty

两个永远活着的策略总回报都是 \infty,无法比较,优化无从谈起。折扣因子让每步奖励递减,保证累积奖励收敛到有限值。当 γ<1\gamma < 1RRmax|R| \leq R_{\max} 时:

GtRmaxk=0γk=Rmax1γG_t \leq R_{\max} \sum_{k=0}^{\infty} \gamma^k = \frac{R_{\max}}{1 - \gamma}

γ上界含义
0.910 R_max主要关心未来 ~10 步
0.99100 R_max关心未来 ~100 步
0.9991000 R_max几乎等权看待未来 ~1000 步

经济学上的合理性。 即使游戏是有限期的,折扣因子仍有意义——经济学中叫"货币时间价值":今天的 100 块比明年的 100 块更值钱,因为你今天拿到钱可以拿去投资。γ\gamma 本质上量化了"早拿比晚拿好"的偏好。

G_t 的递归结构

GtG_t 可以写成递归形式:

Gt=rt+γGt+1G_t = r_t + \gamma \, G_{t+1}

展开看为什么:Gt=rt+γrt+1+γ2rt+2+G_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \cdots,把 γ\gamma 提出来:Gt=rt+γ(rt+1+γrt+2+)=rt+γGt+1G_t = r_t + \gamma (r_{t+1} + \gamma r_{t+2} + \cdots) = r_t + \gamma G_{t+1}

含义:从时刻 tt 开始的总回报 = 这一步的奖励 + 折扣后的下一步总回报。只看一步奖励,剩下的交给 Gt+1G_{t+1}

这个递归结构是贝尔曼方程的基石——后面会发现贝尔曼方程本质上就是在这个关系上建立的。记住这个等式,它会在后面的内容中反复出现。

策略 π:智能体的决策规则

MDP 五元组描述了游戏规则,GtG_t 定义了总目标。但规则和目标本身不产生行为——你还需要一个决策规则:在每一个状态下选哪个动作。策略 π\pi 就是这个决策规则。训练的目标是找到让 GtG_t 最大的最优策略 π\pi^*

策略有两种形式。

确定性策略——对同一个状态永远输出同一个动作:

a=π(s)a = \pi(s)

Q-learning 和 DQN 用的就是确定性策略——学到 Q 值后直接选 argmaxaQ(s,a)\arg\max_a Q(s, a)。优点是简洁,缺点是缺乏探索——如果初始估计错误,可能永远锁定在次优动作上,所以 DQN 通常需要搭配 ε\varepsilon-贪婪机制。

随机性策略——输出动作的概率分布:

π(as)=P(as)\pi(a \mid s) = P(a \mid s)

随机性策略天然兼顾探索——总有小概率去尝试非首选动作,不需要额外的探索机制。

回到老虎机:策略 1(随机 50/50)就是 π(选 A)=0.5,π(选 B)=0.5\pi(\text{选 A}) = 0.5, \pi(\text{选 B}) = 0.5;策略 2(永远选 A)就是确定性策略 π(s)=选 A\pi(s) = \text{选 A}

在 CartPole 中,策略的输入是 4 维状态向量,输出是"向左"和"向右"的概率。训练开始时接近均匀分布(π()0.5\pi(\text{左}) \approx 0.5),训练后学会在杆子右倾时输出 π()0.95\pi(\text{右}) \approx 0.95。这正是第 1 章训练曲线上"从随机到稳定"的过程。

在 LLM 对齐中,策略就是语言模型本身——给定已生成的 token 序列(状态),输出下一个 token 的概率分布(动作)。第 2 章做 DPO 时,你训练的模型就是一个策略网络。

为什么策略梯度几乎总用随机性策略?

原因确定性策略随机性策略
探索需要额外机制(如 ε-贪婪)天然内建
可微性输出离散动作,梯度为零或不存在输出概率分布,有明确解析梯度
不可预测性行为可预测,对手可利用提供变化,对手难以捉摸

2014 年 Silver 等人提出了确定性策略梯度定理 [2],证明确定性策略在连续动作空间中也可做梯度优化。但实践中 PPO、A3C 等主流算法仍用随机性策略——因为它同时解决了探索和优化的问题。

从游戏规则到局面评估

至此,RL 的完整形式化框架已经就位:

  • MDP 五元组 (S,A,P,R,γ)(S, A, P, R, \gamma) 描述游戏规则
  • 折扣累积回报 GtG_t 定义一局游戏的总分——越远的奖励越不值钱,保证收敛
  • 策略 π\pi 定义智能体如何选动作——确定性策略简单直接,随机性策略自带探索

有了这三件套,你可以用统一的数学语言描述任何 RL 问题。但"描述问题"和"解决问题"之间还差一步:GtG_t 是一个全局指标,它不告诉你"某个具体的中间局面到底好不好"。如果你知道每个局面的"价值",就可以比较不同局面的好坏,做出更好的决策。象棋中,"走车后的局面价值 80 分,走马后的局面价值 60 分",那显然应该走车。这就是价值函数 V(s)V(s) 要解决的问题——下一节的主题。

下一节将介绍 V(s)V(s) 以及计算它的核心工具贝尔曼方程。V(s) 与贝尔曼方程

参考文献


  1. Sutton, R. S., & Barto, A. G. (2018). Reinforcement Learning: An Introduction (2nd ed.). MIT Press. ↩︎

  2. Silver, D., et al. (2014). Deterministic Policy Gradient Algorithms. ICML 2014. ↩︎

Built for reusable bilingual course delivery