reward 是设计者选的代理目标。智能体会优化它,而不是自动理解“人真正想要什么”。这就是 reward hacking 的根源。
FIRST TERM · MDP
MDP 是什么?先把名字拆开。
| 缩写 / 全称 | 每个词在说什么 | 白话含义 |
|---|---|---|
| MDP Markov Decision Process 马尔可夫决策过程 | Markov:当前状态足够预测未来; Decision:你必须选择动作; Process:选择与反馈会连续发生。 | 一份把“我看见什么、能做什么、做完会发生什么、怎样算好”写清楚的任务说明书。 |
不是说“没有历史”,而是说历史中会影响未来的部分已被压缩进当前 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)。若我们选出的状态表示真的充分,则在给定当前状态和动作后,未来不再需要历史:
| 任务 | 错误状态 | 遗漏造成的矛盾 | 更接近 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 是怎样产生的?
策略 π 在状态 sₜ 看到可行动的信息后选择 aₜ;环境才返回下一状态 sₜ₊₁ 和因这次转换得到的 reward rₜ₊₁。连续记录就是一条轨迹(trajectory) τ。
| 时刻 | 状态 | 动作 | 环境返回 | 这一行说明什么 |
|---|---|---|---|---|
| t=0 | s₀=(0,0) | a₀=右 | r₁=-1,s₁=(0,1) | 先有状态和动作,随后才有 r₁。 |
| t=1 | s₁=(0,1) | a₁=右 | r₂=-1,s₂=(0,2) | 当前动作改变后续会看到的数据。 |
| t=2 | s₂=(0,2) | a₂=下 | r₃=+10,s₃=终止 | 一条 episode 在终止状态收尾。 |
很多算法的差异不是交互循环不同,而是如何从同一批轨迹里估计长期好坏:Monte Carlo 等整局结束,TD 用下一步估计做 backup,policy gradient 则提高产生高回报轨迹的动作概率。
THE OBJECTIVE
reward 不是目标;长期回报才是。
某一时刻的 reward 只是局部信号。强化学习定义从时刻 t 开始的折扣回报(return):
把数字真正算一遍。
假设从起点有两条路线:安全路线依次得到 -1、-1、+10;捷径立即得到 +3 并结束。对安全路线:
当 γ=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 假设:给定当前状态和动作,未来与更早历史独立。形式上:
| 你给智能体的输入 | 为什么可能不够 | 较好的状态表示 |
|---|---|---|
| 赛车的当前位置 | 同一位置但速度朝左/朝右,刹车和加速的后果不同。 | 位置 + 速度 + 朝向。 |
| 门前坐标 | 有没有钥匙决定同一动作能否开门。 | 坐标 + 持钥匙标记。 |
| 单帧扑克桌面 | 对手牌、历史下注等关键变量没有被观察到。 | 这更接近 POMDP;需要历史、belief 或记忆模型。 |
这里要区分状态(state)与观测(observation):环境内部可以有完整状态 s,智能体常常只拿到观测 o。若 o 丢了影响未来的变量,问题称为部分可观测 MDP(POMDP)。RNN、Transformer 或历史窗口不是“让问题自动变成 MDP”,而是在根据过去猜测隐藏状态。
MISCONCEPTIONS
四个会在后续反复出现的坑。
真正终止(撞车、成功)与时间上限截断不同。后者通常不代表未来价值为零,训练代码需要分开处理。
策略既在学习,也在决定采到什么。只重复当前最优动作,可能永远见不到更好的路径。
学习率 α 改的是走向答案的步伐;γ 改的是答案本身偏好短期还是长期。
CHECK YOUR UNDERSTANDING
先自己答,再展开答案。
01 · 机器人只知道当前位置,不知道速度。它拿到的是 Markov state 吗?
通常不是。同一位置、不同速度会导致同一动作产生不同后果;把速度并入状态后,转移才更接近只依赖当前状态与动作。
02 · 为什么“这一步 reward 更大”不足以证明动作更好?
因为策略比较的是从当前时刻起的 Gₜ。一个即时 +3 的动作可能阻断之后的 +10;必须把后续奖励按 γ 折算后再比较。
03 · 为什么 time limit 不能总被视为失败终止?
时间上限是采样系统人为截断,不一定表示环境进入真正的 terminal state。若一律把它的后续价值设为零,会给 value target 引入偏差。
READ BEFORE NEXT LESSON