RL COLLECTION / 01 / FOUNDATIONS

MDP 与长期回报:
强化学习到底在学什么?

这一课不写训练代码。目标是建立一张正确的心智图:智能体不是在拟合标签,而是在行动后改变未来会看到的数据与奖励。

FIRST TERM · MDP

MDP 是什么?先把名字拆开。

缩写 / 全称每个词在说什么白话含义
MDP
Markov Decision Process
马尔可夫决策过程
Markov:当前状态足够预测未来;
Decision:你必须选择动作;
Process:选择与反馈会连续发生。
一份把“我看见什么、能做什么、做完会发生什么、怎样算好”写清楚的任务说明书。
为什么叫 Markov?

不是说“没有历史”,而是说历史中会影响未来的部分已被压缩进当前 state。拿钥匙与否会影响开门结果,所以必须进入 state;若没写进去,这个 state 就不满足 Markov 性。

完整卡片见术语表:MDP。现在只记一句:先建 MDP,才谈算法。

LEARNING TARGET

学完后,你能把一个真实任务判断为“是否适合用强化学习(Reinforcement Learning,RL)”。

完成目标直接应用它给后续什么能力
把任务拆成 state、action、transition、reward、termination 与 γ。设计 GridWorld、机器人控制、推荐策略或工具调用 agent 的环境接口。后续所有 value、Q、policy 都需要建立在正确 MDP 上。
发现状态遗漏、奖励错配、终止/截断混淆。在实验跑不对时先检查任务定义,而不是盲调模型或 learning rate。避免 reward hacking,并为 RLHF / verifier reward 建立判断框架。
你会联想到什么

“模型做一次输出就结束”的任务更像监督学习;“当前动作会改变未来信息、成本与机会”的任务,才是 RL 的主场。

PRINCIPLE LAYER · MARKOV

Markov 性不是名词标签,而是让价值递推成立的“状态充分性”假设。

完整历史记为 ht=(s0,a0,r1,…,st)。若我们选出的状态表示真的充分,则在给定当前状态和动作后,未来不再需要历史:

P(st+1,rt+1 | ht,at) = P(st+1,rt+1 | st,at)等号右侧只保留 st 与 at。这正是 MDP 能只为每个 state 存一个 V(s) 或每个 state-action 存一个 Q(s,a) 的原因。
任务错误状态遗漏造成的矛盾更接近 Markov 的状态
拿钥匙开门只记录坐标。同一坐标向门走,有钥匙与没钥匙的下一步不同。(坐标,是否有钥匙)。
库存补货只记录当前库存。需求季节、在途订单会改变未来销量与缺货成本。(库存,时间/季节,在途订单)。
LLM 工具 agent只记录最后一句文本。工具已调用结果、预算、任务进度会改变下一步可行动作与奖励。(对话摘要,工具状态,预算,任务进度)。

若无法把足够历史压进有限状态,问题不是“MDP 理论失效”,而是部分可观测:需要 belief state、RNN/Transformer memory 或 POMDP 建模。先检查状态是否足够,常比先换算法更有价值。

DEEP DIVE · MDP

把环境从“能跑”提升为“可被正确学习”。

MODELING WORKSHOP

先把一个故事写成 MDP,再读任何公式。

设想一个 3×3 的“拿钥匙开门”游戏:起点在左下角;钥匙在中间;门在右上角;每走一步 −1,开门后 +10;没有钥匙时碰门留在原地。下面不是答案模板,而是每次遇到新 RL 问题都应填写的建模工作表。

MDP 项本游戏的具体定义为什么不能省略
状态 s(行,列,是否持钥匙)。例如 (1,1,0)。同一坐标有无钥匙时,“开门”后果不同;只用坐标不是 Markov state。
动作 a上、下、左、右;开门由进入门格触发。动作空间规定策略能选择什么,不能把“想去哪”当作动作。
转移 P基础版确定移动;撞墙或无钥匙碰门时留在原地。它说明动作怎样改变未来;随机版可加入打滑概率。
奖励 R普通移动 −1,开门 +10。奖励设计会定义真实被优化的行为,而非一句自然语言目标。
终止门被成功打开;time limit 则是截断而非自然终止。决定 return 到哪里停止、是否应把后续价值置零。
def step(state, action):
row, col, has_key = state
next_row, next_col = move_or_stay(row, col, action)
next_has_key = has_key or is_key(next_row, next_col)
if is_door(next_row, next_col) and not next_has_key:
return state, -1, False # 门打不开:留在原地
if is_door(next_row, next_col):
return (next_row, next_col, next_has_key), +10, True
return (next_row, next_col, next_has_key), -1, False
建模练习

把“机器人送货”替换进这个表:状态里是否要有电量、剩余时间、是否已取货?只要某个变量会改变未来转移或奖励,它就应被纳入 state,或明确承认任务是部分可观测的。

PREREQUISITES

开始这一课前,你只需要这些。

必须一句话够用的理解不要求
变量与下标sₜ 表示 t 时刻的状态;sₜ₊₁ 表示下一时刻状态。微积分、矩阵、神经网络。
概率直觉“80% 概率发生 A”表示重复很多次后大约八成会发生 A。复杂概率分布推导。

THE QUESTION

为什么“预测下一个标签”不足以描述 RL?

监督学习通常假设训练数据已经给定:输入 x 对应标签 y,模型减少预测误差即可。强化学习中,动作会改变下一个状态;当前为了拿到小 reward 的选择,可能损失未来更大的 reward。更关键的是:数据分布不是固定的,而是策略自己参与生成的。

核心对象

一个决策过程由状态 s、动作 a、转移规律 P、奖励 r 与折扣 γ 描述。我们把它称为马尔可夫决策过程(MDP)。

这不是一个“为了写公式而写”的抽象。只要你能把一个任务描述成「看见什么 → 能做什么 → 做完会发生什么 → 什么算好」,它就已经是 RL 问题的雏形。

THE FIVE PIECES

把 MDP 的 5 个组成部分逐项说清。

标准记法是 MDP = ⟨S, A, P, R, γ⟩。下面用一个有步数成本的 GridWorld:每走一步 -1,抵达宝箱 +10,来区分每个符号真正承担的职责。

部分白话解释GridWorld 例子初学者常见误解
S:状态空间决定未来所需的信息集合。当前位置 (行, 列);若有钥匙,钥匙是否已拿到也必须在状态里。把“屏幕上看见的像素”直接当成完整状态。
A:动作空间此刻被允许选择的操作。上、下、左、右;连续控制则可能是一个实数力矩。动作不是“模型的输出文字”,而是环境承认的可执行指令。
P:转移做完动作后,下一状态的概率规律。向右通常到右格;也可设 10% 概率打滑到别的格。转移可以是随机的,不必是确定函数。
R:奖励函数环境给学习器的单步标尺。普通移动 -1,撞墙 -2,打开宝箱 +10。奖励不等于人类最终意图;写错会诱发 reward hacking。
γ:折扣把多远以后的收益算进今天的目标。γ=0.9 仍重视终点;γ=0.1 几乎只看眼前。γ 不是单纯“训练速度”旋钮,它改变优化目标。
建模检查

如果“有没有钥匙”会决定同一坐标下能否开门,却没有被放进状态 s,那么相同的 s 实际对应不同未来;后面的 value、Bellman 方程都会失去可靠语义。

THE LOOP

一条 trajectory 是怎样产生的?

Agent策略 π(a|s)Environment转移 P, 奖励 raₜ ~ π(·|sₜ)rₜ₊₁, sₜ₊₁ ~ P(·|sₜ,aₜ)τ = (s₀, a₀, r₁, s₁, a₁, r₂, ...)

策略 π 在状态 sₜ 看到可行动的信息后选择 aₜ;环境才返回下一状态 sₜ₊₁ 和因这次转换得到的 reward rₜ₊₁。连续记录就是一条轨迹(trajectory) τ。

时刻状态动作环境返回这一行说明什么
t=0s₀=(0,0)a₀=右r₁=-1,s₁=(0,1)先有状态和动作,随后才有 r₁。
t=1s₁=(0,1)a₁=右r₂=-1,s₂=(0,2)当前动作改变后续会看到的数据。
t=2s₂=(0,2)a₂=下r₃=+10,s₃=终止一条 episode 在终止状态收尾。

很多算法的差异不是交互循环不同,而是如何从同一批轨迹里估计长期好坏:Monte Carlo 等整局结束,TD 用下一步估计做 backup,policy gradient 则提高产生高回报轨迹的动作概率。

THE OBJECTIVE

reward 不是目标;长期回报才是。

某一时刻的 reward 只是局部信号。强化学习定义从时刻 t 开始的折扣回报(return):

Gₜ = rₜ₊₁ + γrₜ₊₂ + γ²rₜ₊₃ + …γ ∈ [0,1) 是 discount factor。γ 接近 1 时更重视远期后果;γ 较小时更偏好快速兑现的奖励。

把数字真正算一遍。

假设从起点有两条路线:安全路线依次得到 -1、-1、+10;捷径立即得到 +3 并结束。对安全路线:

当 γ=0.9:G₀ = -1 - 0.9 + 0.9² × 10 = 6.2
当 γ=0.5:G₀ = -1 - 0.5 + 0.5² × 10 = 1.0捷径的回报始终是 3。于是 γ=0.9 时安全路线更好,γ=0.5 时捷径更好。

结论很重要:同一个环境、同一批 reward,换 γ 就可能换掉“正确策略”。因此把 γ 当作优化器学习率一样随意调,容易让实验在回答另一个问题。

即时奖励

是环境在一步转换后发出的一个标量信号。它可以稀疏、延迟,甚至设计错误。

长期回报

才是策略优化所比较的对象。value、Q-value 与 advantage 都是在估计不同条件下的长期回报。

THE MARKOV ASSUMPTION

为什么状态要“足够”描述过去?

MDP 假设:给定当前状态和动作,未来与更早历史独立。形式上:

P(sₜ₊₁ | sₜ, aₜ, sₜ₋₁, aₜ₋₁, …) = P(sₜ₊₁ | sₜ, aₜ)这不是说历史永远无用;而是说 state 的定义应当包含影响未来的必要信息。
你给智能体的输入为什么可能不够较好的状态表示
赛车的当前位置同一位置但速度朝左/朝右,刹车和加速的后果不同。位置 + 速度 + 朝向。
门前坐标有没有钥匙决定同一动作能否开门。坐标 + 持钥匙标记。
单帧扑克桌面对手牌、历史下注等关键变量没有被观察到。这更接近 POMDP;需要历史、belief 或记忆模型。

这里要区分状态(state)与观测(observation):环境内部可以有完整状态 s,智能体常常只拿到观测 o。若 o 丢了影响未来的变量,问题称为部分可观测 MDP(POMDP)。RNN、Transformer 或历史窗口不是“让问题自动变成 MDP”,而是在根据过去猜测隐藏状态。

MISCONCEPTIONS

四个会在后续反复出现的坑。

01 · 奖励不是事实

reward 是设计者选的代理目标。智能体会优化它,而不是自动理解“人真正想要什么”。这就是 reward hacking 的根源。

02 · 终止有两种原因

真正终止(撞车、成功)与时间上限截断不同。后者通常不代表未来价值为零,训练代码需要分开处理。

03 · 探索会改变数据

策略既在学习,也在决定采到什么。只重复当前最优动作,可能永远见不到更好的路径。

04 · γ 改的是任务

学习率 α 改的是走向答案的步伐;γ 改的是答案本身偏好短期还是长期。

CHECK YOUR UNDERSTANDING

先自己答,再展开答案。

01 · 机器人只知道当前位置,不知道速度。它拿到的是 Markov state 吗?

通常不是。同一位置、不同速度会导致同一动作产生不同后果;把速度并入状态后,转移才更接近只依赖当前状态与动作。

02 · 为什么“这一步 reward 更大”不足以证明动作更好?

因为策略比较的是从当前时刻起的 Gₜ。一个即时 +3 的动作可能阻断之后的 +10;必须把后续奖励按 γ 折算后再比较。

03 · 为什么 time limit 不能总被视为失败终止?

时间上限是采样系统人为截断,不一定表示环境进入真正的 terminal state。若一律把它的后续价值设为零,会给 value target 引入偏差。

READ BEFORE NEXT LESSON

阅读不求快,求能复述假设。