Appearance
前沿专题 · 强化学习理论基础:从一般 MDP 到策略梯度
前置要求:第3章的概率与期望记号(条件期望、全期望公式),以及第11章 · 后训练与对齐中「生成过程是 MDP」小节的生成 MDP 特例记号(
、TD 残差 、概率比)。未读过第11章也能顺序读完本页,但对照着读,两边的记号会互相点亮。
第11章把一次生成写成了 MDP 的特例:状态是前缀、动作是下一个 token、转移确定、奖励只在序列结束时给一次、
本页的一般理论框架与多处讲法顺序吸收自 Ernest K. Ryu 的研究生课程 RL of LLMs (Spring 2025) Chapter 1(Deep RL);课程页面公开提供讲义与 Cliff Walk 示例的链接。本仓只保留链接与归属,正文用自己的话重述,不复制其文本、图或代码。
边界声明:本页不实现 token 级 PPO——那是第12章 · DeepSeek 架构专题的 GRPO toy(python/llm_core/deepseek_toys.py 的 grpo_policy_update)与第11章 PPO 目标的知识边界所在。本页的动手实验停留在表格 RL:一个网格世界上的蒙特卡洛评估、价值迭代、线性代数精确解与表格 REINFORCE(见 python/llm_core/rl_basics.py)。表格 REINFORCE 是本课唯一一个「真的在跑的策略梯度训练循环」的最小版本;想自己从零写一遍这套流程,走 clean-room 第 9 模块 clean_room/tabular_rl.py(空接口 + 冻结签名,合同见 clean_room/contracts.json 的 tabular-rl 条目)。
本页目标
学完后你能做到:
- 写出一般 MDP 的五元组,并解释终态吸收化技巧为什么是后续一切推导的记号地基(随机终止时刻
上的期望号交换坑)。 - 复述 Bellman 期望方程与最优性方程的证明结构,特别是「不动点存在唯一」与「不动点恰为最优」分开证明的两段式顺序。
- 说明
的三种病态,以及「奖励只在终止时给一次」为什么让 RL-LLM 的 合法。 - 沿 MC → 一步 TD → k-step TD 谱系解释偏差与方差的交换,指出 stop-gradient(PyTorch 的
.detach())在 TD 目标上切断的是什么。 - 按无偏性逐级验证的顺序复述策略梯度定理的四个方差缩减增强,并解释没有 baseline 时 softmax 归一化在「硬推」什么。
- 讲出 AlphaGo 四步训练中每一步「为什么还不够」,以及 test-time compute 的一句话数学辩护。
- 在 Cliff Walk 上跑通五级实验:MC 评估 → 价值迭代 → 线性代数精确解 → 带 baseline 的表格策略梯度 → REINFORCE。
阶段 0:只有一个状态的赌场——bandit
(本阶段的叙事装置与知识框架源自 Pramod Goyal 的 Reinforcement Learning from scratch #1(2026);知识点对应 Sutton & Barto 第 2 章,正文全部用自己的话重述。)
先交代它在整页里的位置。k 臂老虎机 (k-armed bandit) 是 MDP 的单状态退化情形——只有一个状态、
1. 问题:k 台老虎机,真实均值未知
赌场里排着
即在机器
若
2. 增量估计:一行公式的前世
最朴素的
第二步「乘除
最后一行的形状值得盯住,它有一般形式:
估计永远朝「目标与旧估计之差」修正一小步。把 Target 取为即时奖励、StepSize 取
3. 探索与利用:ε-greedy
估计有噪声,每个时刻于是都站在岔路口。只拉当前
4. optimistic initial values:用初值垫出探索
样本均值需要一个初值
5. UCB:按不确定性下注
ε-greedy 的探索是盲目的——随机等概率,不看哪台「还欠了解」。另一条思路同样可以先想再命名:「与其随机试,不如给『被试得少、还没把握』的机器发一点加成——估计分加加成分,谁高拉谁;被试多了,加成自然衰减。」形式化为置信上界 (upper confidence bound, UCB):
逐项读:
6. 非平稳:常量步长 α
样本均值的
展开后是指数加权的滑动平均:越近的奖励权重越大,按
7. 从一台到一组:通往 MDP
收拢本阶段的四个装置:
| 装置 | 一句话机制 | 代价 |
|---|---|---|
| ε-greedy | 以小概率 | 探索盲目,与「欠了解」程度无关 |
| optimistic initial values | 高初值垫出开局全探索 | 只管开头,非平稳世界后劲不足 |
| UCB | 按不确定性发探索加成 | 要额外记每台的拉杆次数,最优性论证依赖奖励分布条件 |
| 常量 | 指数加权跟踪漂移 | 估计不收敛到定值,永远轻微抖动 |
现在给每个状态配上它自己的一组老虎机,就得到了 MDP——这正是下一阶段要做的事。新增的只有两块拼图:拉哪个动作会决定下一步站在哪组机器前(转移),以及奖励跨步累积成回报(折扣
阶段一:一般 MDP——状态、动作、轨迹与吸收态
1. 五元组与轨迹
马尔可夫决策过程 (Markov Decision Process, MDP) 由五个对象构成:
| 成分 | 记号 | 含义 |
|---|---|---|
| 状态空间 | 环境可能处的全部情形, | |
| 动作空间 | 智能体每步可选项 | |
| 初始分布 | 回合起点的随机性 | |
| 转移核 | 给定状态与动作,奖励和下一状态的联合分布 | |
| 时间指标 |
马尔可夫性的含义就写在转移核里:下一步的分布只依赖
其概率按链式法则分解为「初始分布 × 每步策略 × 每步转移」的连乘。回报 (return) 从时刻
2. 终态吸收化:先于一切推导的记号工程
一个容易被略过、但每份严谨推导都会撞上的记号坑:
左边是一个「求和项数本身随机」的对象,右边假装
工程上一次性解决这个麻烦的办法是吸收态 (absorbing state) 化:约定一旦
这个技巧在第11章的生成 MDP 上直接兑现:生成过程在采样出 <EOS> 时终止,终止时刻是随机的——「把终止时刻的随机性吸收进状态」正是那里的记账方式(讲法源自 Ernest Ryu, RL of LLMs (Spring 2025) Chapter 1)。
3. 状态与观测:LLM 为什么没有这个问题
一般 MDP 假设全观测:智能体精确知道
4. 模仿学习与分布偏移:为什么 SFT 之后还需要 RL
模仿学习 (imitation learning) 的最简形式是行为克隆 (behavior cloning):收集专家的状态-动作对
下一 token 预测本质上就是行为克隆:专家数据是语料,动作是下一个 token。SFT 也是行为克隆——对指令-回答对做条件化的下一 token 预测。
行为克隆的软肋是分布偏移 (distribution shift):训练数据来自专家(或旧策略)到访的状态分布,而部署时智能体用自己的策略行动,一旦走进专家没到过的状态,模型在该状态下没有任何监督信号,误差逐步累积。驾驶是这个机制的具象版:专家司机偶然轻微偏航时,一次熟练的方向盘修正就回到车道;行为克隆策略从未在「偏航状态」上见过示范,一旦漂出专家轨迹,没有任何信号告诉它如何恢复,误差像滚雪球一样放大。理论入口是:RL 中训练数据本身依赖策略——在别的策略(或旧的自己)产生的数据上训练叫 off-policy,在当前策略产生的数据上训练叫 on-policy;行为克隆是前者。DAgger 一类的算法试图用「让专家在 learner 的状态分布上补标注」来修复偏移,但让标注者覆盖模型实际会走到的所有状态,在 LLM 场景里基本不可行。更深一层的别扭在标注端:问人类「此刻你会把方向盘打几度」不是自然的示范方式;LLM 版同理——接续别人写了一半的段落也不是人类自然的写作方式。但「让模仿学习尽量 on-policy」的思想没有就此消失:RLHF 在当前策略的采样上训练、expert iteration(阶段五)让网络模仿被搜索增强后的自己,都是这一思想在后续范式里的回归。
为什么「观察会了」不等于「做会了」?Ernest Ryu 在该课程 Prologue 里给过一个体育类比(此处为转述):看会一个过人动作与亲自练出这个动作之间,隔着一个反馈回路——示范数据只记录了可见的动作序列,让动作成功的隐含前置步骤不会出现在数据里;只有带着环境反馈去试错,才能发现并修正这类被示范掩盖的缺失环节。具体版本:模仿球星「快速运球过人上篮」的整套动作,防守者却总跟得上;反复上场试错才发现,起手处的眼神假动作才是让过人成立的关键组件——仅靠观察示范,这一步不会自己显形。这是「SFT 记忆、RL 泛化」的直觉版:模仿复制可见行为,试错发现被掩盖的因果结构,也是从 SFT 走向 RL 的动机起点。
阶段二:Bellman 方程、压缩映射与两种迭代
1. 值函数: 与
给定策略
约定
2. Bellman 期望方程:压缩映射与不动点
对固定
在
的解存在、唯一、且恰为
把压缩性那一拍的放缩链拆成四步看全(对任意
①靠的是同一
3. Bellman 最优性方程:两段式诚实
把算子里的「对
这一步的证明顺序值得原样学走(讲法源自 Ernest Ryu, RL of LLMs (Spring 2025) Chapter 1):先用辅助引理
所以
4. 价值迭代与策略迭代:两个「概念框架」
价值迭代 (value iteration, VI) 就是不动点迭代
策略迭代 (policy iteration, PI) 交替两步:策略评估(精确解出
这两种迭代在深度 RL 里通常不以精确形式实现,但它们是两族实用算法的概念框架:VI 的「逐步对最优 Bellman 算子做一步展开」孕育了 Q-learning/DQN 一系;PI 的「评估-改进交替」孕育了 TRPO/PPO 一系(第11章的 PPO 目标是它的近似后裔)。本页阶段四会从 PI 这条线走到 PPO 的门口。
5. 的三种病态,与 terminal-only 的合法性
折扣不是数学装饰。
| 情形 | 设定 | 结果 |
|---|---|---|
| 1 | 有限 MDP,且每个策略的 | 没有病态, |
| 2 | 存在正奖励环:某状态自环且 | |
| 3 | 回报序列不可和(如 | 总回报没有定义 |
情形 2 有一个经典的游戏化样例:平台游戏里反复踩同一只龟壳即可无限得分、无限加命——只要存在一条能无限重复收割正奖励的回路,无折扣回报就是
情形 1 正是第11章生成 MDP 的位置:无 KL 惩罚的 RL-LLM 设定(terminal-only 奖励的 episodic MDP)在
三种情形之外,工程实践的通行次序是:先在
本页到此的地图如下——精确算法、采样估计与概念框架的关系:
阶段三:从蒙特卡洛到时序差分——估计的谱系
第11章只需要一步 TD 残差(为 GAE 服务);本节把整条谱系铺开。
读谱系之前先装一个评审镜头(课程反复使用、此处显式提炼):本节每个估计器都会推两遍——第一遍是理想化版本,数学性质干净(无偏、与 Bellman 方程精确一致),但依赖未知的
1. 蒙特卡洛评估
最直接的估计:对每个状态采
无模型 (model-free)、无偏,但每条样本要等回合跑完,且方差随回合长度增长。神经网络版把
2. TD 与自举
Bellman 期望方程给出另一个估计途径:
这个「用自身近似回填尾部」的动作叫自举 (bootstrapping)。它不必等回合结束、方差低,代价是目标里带上了
3. stop-gradient:半梯度的实现级含义
用 SGD 拟合 TD 目标时,想要的梯度是两个标量的乘积:
即只对被评估的
PyTorch 里就是 target.detach()——前向数值照常参与,反向图在此剪断。第12章 GRPO toy 里冻结参考策略的做法、第11章 PPO 的旧策略概率比,都是同一个算子的不同宿主。
这一行真写进 PyTorch 时有三种候选写法,课程对三者逐一给过判定(此处转述):
| 写法 | 判定 | 依据 |
|---|---|---|
| Option 1:把 TD 误差当标量系数,手动实现 | 正确但繁琐 | 数值上就是想要的更新,但要手工拆排计算图,代码与内存都不省 |
| Option 2:对 | 错误 | 链式法则同时扫过两处 |
Option 3:对目标里的 .detach()) | 社区标准 | 前向数值照常参与,反向图在目标处剪断,恰好实现 |
stop-gradient 在策略梯度侧同样在场(实现级细节,课程口述,此处转述):actor 的更新方向里,
4. k-step 谱系与 经验法则
MC 与一步 TD 之间是一条回望窗口的插值轴。k-step TD 目标取
5. 诚实注脚:半梯度可证明不是梯度下降
TD + 近似 SGD 的组合叫半梯度 (semi-gradient) 方法。「半」不是修辞:可以证明它不是任何目标函数的梯度下降(Barnard, 1993)——存在它时,你找不到一个
6. 为什么 DQN 不在本课主线里
Q-learning / DQN 学
阶段四:策略梯度定理与四步方差缩减
第11章推导的是序列级 REINFORCE 特例;本节给一般形式,并按每一步先证无偏、再谈方差的顺序走完四个增强(讲法顺序源自 Ernest Ryu, RL of LLMs (Spring 2025) Chapter 1)。
1. 一般形式
目标
最粗的蒙特卡洛估计拿整段回报
2. 增强 #1:去掉过去奖励
时刻
过去奖励在这一项里的条件期望为零,只贡献多余方差;严格化用全期望公式(tower property)逐项验证。这正是第11章「REINFORCE 的
3. 增强 #2:baseline
减去一个只依赖状态的基线 (baseline)
每一项在给定
4. 增强 #3:Q 估计统一定理与最优 baseline
两步增强可以合成一个定理:若
增强 #1 的未来奖励、增强 #2 的 baseline 都是它的特例。Rao–Blackwell 定理(对更多变量取条件期望,无偏性不变、方差不增)说明
「不可用」三个字值得展开看(讲法源自同一课程的口述,此处转述):把
5. 没有 baseline 时,softmax 在「硬推」什么
许多 MDP 只有非负奖励。没有 baseline 时,
度量「该动作比该状态的平均水平好多少」:
6. 增强 #4:k-step TD 与 actor-critic 谱系
统一定理要求精确
只需学一个
从一条轨迹到 SGD 的更新序列,还有一个实现层的选样问题,课程在 A2C 出场前先做了这组三方对比:
| 方案 | 无偏性 | 代价 |
|---|---|---|
| 整条轨迹随机抽一个时刻的梯度项做一步更新 | 无偏(严格 SGD) | 每步只消耗一个样本,其余梯度信息全部浪费 |
| 全轨迹梯度求和后一次更新 | 无偏 | 更新稀疏——类比 full-batch SGD,样本利用率低 |
| 沿轨迹的循环序( | 有偏(后段梯度在参数已被前段更新改变后计算) | 更新频繁、样本高效 |
A2C 的更新结构取第三方案:用「有偏」换「频繁」,与上一步「偏差换可实现性」属于同一笔交易的两个条款。
于是得到演员-评论家 (actor-critic) 结构:策略
7. 通向 PPO 的桥:surrogate 与 clip 的悲观界读法
A2C 一条轨迹只够做一轮更新。想从同一批采样里学更多,把目标改写成重要性采样形式(对旧策略
近似只在
读法是悲观下界:
阶段五:AlphaGo、MCTS 与专家迭代
0. 自博弈的数学执照:minimax 优化的不稳定谱系
第 1 小节的第 2 步「自己和自己下」不是拿来即用的做法,它前面有两层论证:先说明朴素的双智能体训练为什么不稳,再证明单策略自博弈在什么条件下合法(讲法源自 Ernest Ryu, RL of LLMs (Spring 2025) Chapter 1)。
朴素方案为什么不稳。 双人零和博弈的目标是
反对称支付:为什么一个策略就够。 零和博弈的支付结构是反对称 (antisymmetric) 的:交换视角后,同一局面-动作序列的支付变号——对我有利的局面必然对对手不利,轮到谁走就按谁的视角计值。在这个结构下,若对称点
在这两条论证的光下,第 1 小节表格里第 2 步「与历史版本池对弈」是一个稳定化设计:对手取历史版本
动手对照(纯 numpy 可写,写清思路即可,不必追求工程完整):用 softmax 参数化石头剪刀布的双方策略(各三个 logits),按 SimGAD 更新——一方最大化、一方最小化各自的期望支付——记录三个动作概率随迭代的变化,预期看到振荡幅度逐轮放大;再实现一版带 anchoring 的更新(每步将 logits 向初始值拉回一个小系数),预期振荡被抑制、双方概率都收敛到
1. 四步训练,每一步都还不够
AlphaGo(Silver 等,2016)的训练是四步递进,每一步都解决了上一步的不足、又各自留下新的不足(叙事源自 Ernest Ryu, RL of LLMs (Spring 2025) Chapter 1):
| 步骤 | 做什么 | 结果与不足 |
|---|---|---|
| 1. 监督策略网络 | 人类棋谱上学预测下一手(交叉熵) | 水平显著,尚不能击败人类专家——行为克隆的天花板 |
| 2. 自博弈策略网络 | 与历史版本池对弈,胜负 | 对 |
| 3. 价值网络 | 对最强策略做 MC 策略评估,拟合局面胜率 | 只提供评估,不产生动作。围棋转移是确定的 |
| 4. 快速走子 | 轻量策略网络,单步推理快约三个数量级 | 为搜索叶节点提供低成本的 rollout 评估 |
单靠任何一步都不行:裸网络原则上可用天价算力胜人类(换算经验律:棋力每 +120 ELO 约对应训练算力或测试时搜索算力翻倍;照此粗估,裸网络胜人类顶尖约需千倍训练算力,胜过含搜索的完整 Zero 级系统约需十万倍——经验律转述自课程引用的 Noam Brown 估计),纯 minimax 树搜索不需学习但随深度指数爆炸。人类棋手的参照恰好是两者相加:直觉给出候选与局面感(System 1,网络),审慎推演验证后果(System 2,搜索)——AlphaGo 用网络引导搜索聚焦相关区域,两个系统互为放大器。
2. MCTS 三原则
蒙特卡洛树搜索 (Monte Carlo Tree Search, MCTS) 在算力预算内组织这场协作,三条原则:
- 逐步扩张:树随算力预算逐步加宽加深,每轮迭代选中一条路径改进它;
- 控宽度:只深入「好」动作——先验概率高、评估价值高、或尚未深思过的;动作选择用 UCT 型规则,形如
(探索项随访问次数衰减); - 控深度:前瞻有限步截断,叶节点价值由价值网络
与快速走子 rollout 各半加权估计。
这三条原则形式化的对象是人类棋手深思时的一份典型剧本,课程口述里带有具体数字(此处转述):看到局面凭直觉列出约五个候选——控宽度的来源;对每个候选想象对手的几种可能回应,并清楚不可能穷举——逐步扩张时保留谁的选择压力;心中模拟 10–30 步而非推演到终局——控深度的来源;最后停在某个中间局面,凭局面感评估「走到这里是好是坏」——叶节点由
回溯给根节点各动作赋强度,提交最优的一步——考虑许多未来步,但只提交一步;到下一步重新规划。消融实验确认四个组件(IL 策略、RL 策略、价值网络、走子)全部必要:没有
3. AlphaGo Zero 与专家迭代
AlphaGo Zero(2017)去掉人类棋谱依赖:残差网络共享底座、双头输出
给定网络,用「网络 + 搜索」增强它,再让下一代网络模仿增强后的策略。MCTS 的动作强于裸网络,所以每一次模仿都在向更强的教师学习;这个循环可视为模仿学习与策略迭代的双重推广,比纯策略梯度学得快得多(名称出自 Anthony 等 2017 的 "Thinking Fast and Slow with Deep Learning and Tree Search")。第12章的 test-time compute 讨论是这个循环在推理任务上的回声。
4. test-time compute 的一句话数学辩护
为什么「推理时多花算力」能换来「训练时天文数字算力才买得到」的能力?因为两个问题的规模不同:预训练策略必须应对所有可能到达的局面——找到完美策略等于预先解完整盘棋;树搜索只处理从当前局面可达的局面子集——解一个严格更小的子问题。搜索在部署时把「全空间问题」折叠成「当前可达子空间问题」,这就是 test-time scaling 的性价比来源。
动手实验:Cliff Walk 五级阶梯
Cliff Walk 是经典 4×12 网格世界:起点在角上,终点在其同排另一端,两者之间沿边排布一段悬崖;每走一步奖励 CliffWalkEnv 的定义为准)。最短安全路径恰好贴着悬崖边缘走 13 步——所以起点的 python/tests/test_rl_basics.py 的确定性断言。本节用 python/llm_core/rl_basics.py 的四个入口(CliffWalkEnv / value_iteration / policy_evaluation_exact / reinforce_train)走完五级:前三级是精确端,后两级是采样端。参数名与返回结构的权威定义以该模块的 docstring 与其测试为准;以下片段给出调用形状。
先跑通整条链的最小命令(Windows PowerShell 与 bash 通用写法):
bash
cd <仓库根目录>
PYTHONPATH=python python -m pytest python/tests/test_rl_basics.py -q第 1 级:表格蒙特卡洛评估
目标:不动任何迭代理论,先用最朴素的方式估计「随机策略下每个状态值多少」。
python
# PYTHONPATH=python python -c "..."
from llm_core.rl_basics import CliffWalkEnv
env = CliffWalkEnv()
# 对每个起始状态采 N 条完整回合,用经验回报均值估计 V^pi(随机策略)。
# 预期信号:悬崖邻域状态价值明显更负(随机策略有概率坠崖)。观察点:MC 估计无偏但抖——同一状态换 seed 重跑,估计值的波动直观展示「方差大」不是修辞。
第 2 级:价值迭代
python
# PYTHONPATH=python python -c "..."
from llm_core.rl_basics import CliffWalkEnv, value_iteration
env = CliffWalkEnv()
V_star = value_iteration(env, gamma=1.0)
# 预期信号:起点 V*(start) = -13;对 V* 逐状态贪心提取的策略
# 恰好沿悬崖边缘走最短安全路径。terminal-only 奖励结构(每步
第 3 级:线性代数精确解对拍
固定(贪心)策略
(对非终态子矩阵求解)。policy_evaluation_exact 给出这个解析值,用它对拍第 1 级的 MC 估计与第 2 级 VI 收敛值:MC 估计应在精确解附近抖动,VI 序列应单调逼近。迭代算法的正确性由一个不迭代的算法裁决——这是本课「对拍」纪律在 RL 上的用法。
第 4 级:表格策略梯度——baseline 的作用(A2C 思想骨架)
深度 A2C 用神经网络扮演 actor 与 critic;表格版把两者都退化为查表:策略是每状态的 softmax 概率行,critic 是每状态的价值标量。更新循环即阶段四的公式直译——沿回合逐步算未来奖励,减去 baseline reinforce_train 的带 baseline 用法就是这一级(课程 notebook 在同位置留了一行注释掉的「去掉 baseline」损失,邀请学生亲手复现失败——下一节故障注入做同一件事)。
第 5 级:REINFORCE 完整训练循环
python
# PYTHONPATH=python python -c "..."
from llm_core.rl_basics import CliffWalkEnv, reinforce_train
env = CliffWalkEnv()
report = reinforce_train(env, episodes=3000, seed=42)
# 预期信号:固定 seed 下,训练后期望回报显著优于随机初始化策略,
# 学到的路径趋向悬崖边缘的最短安全路径(与 V* 对应的 -13 同方向)。这是本课唯一一个「真的在跑的策略梯度训练循环」:采样、算回报、减 baseline、推 logits、重复。它与第12章的 grpo_policy_update 共享策略梯度定理的数学结构,但不共享优化景观——表格 Cliff Walk 的收敛数字不能外推到 LLM 规模的 PPO/GRPO 训练动态。
故障注入与预期信号
两处注入分别攻击阶段四与阶段二的两根支柱。
注入 1:关掉 baseline
把第 4/5 级更新里的 baseline 项去掉(reinforce_train 为此提供的无 baseline 用法,参数见模块 docstring),固定 seed 重跑同样轮数。
- 预期信号:期望回报相对带 baseline 版明显退化——曲线更抖、收敛更慢,甚至在低回报区长期徘徊。课程讲义对同一实验的标注是「没有 baseline,这训练不动——目标方差太大」(Ernest Ryu, RL of LLMs (Spring 2025) Chapter 1 对 Cliff Walk 设定的原话转述)。机制即阶段四第 5 小节:全负奖励下每个被采到的动作都被压概率,只剩 softmax 归一化的相对挤压在提供信号。
- 对照:同样的无 baseline 更新放到「奖励有正有负」的环境上,退化会减轻——符号信号部分回来了。
注入 2:正奖励环上的价值迭代
手搓一个两状态 MDP:状态
:预期信号为 逐轮线性增长、不封顶,数值上以溢出或 inf告终——压缩性消失,Banach 定理的前提整个不成立。这正是阶段二情形 2 的可执行版本。对照组:收敛到解析值 。折扣把无限累积折成有限几何级数,病态消失。
故障矩阵
| 注入场景 | 攻击的机制 | 预期失败信号 | 对应理论 |
|---|---|---|---|
| 关 baseline | 方差缩减增强 #2 被移除 | 固定 seed 下回报退化、曲线抖动加剧 | 策略梯度定理 + softmax 归一化硬推 |
| 正奖励环 + | 压缩映射前提被移除 | inf/溢出 | Banach 不动点;阶段二情形 2 |
| 正奖励环 + | 折扣恢复压缩 | 收敛到 | 几何级数 |
| MC 评估换 seed 重跑 | 高方差的无偏估计 | 同一状态的估计值显著波动 | Rao–Blackwell 论证「平均掉更多随机性」的动机 |
追遗:跑得快的地方(Loose Ends)
(本节的补遗结构装置源自 Pramod Goyal 的 Reinforcement Learning from scratch #1(2026);三笔补遗对应 Sutton & Barto 第 4 章。)
正文为了推进速度略过的严格性,集中补三笔欠账。
VI 为什么收敛。 一句话回指:
policy improvement 定理。 阶段二第 4 小节引用了它(「Policy improvement 定理保证
紧凑三行论证收尾:其一,贪心动作的
GPI(generalized policy iteration,广义策略迭代)。 把「评估」与「改进」看成两个同时在场的过程:改进改的是
本页验收
闭卷口试题(每题 5–10 分钟自测):
是随机变量时 错在哪一步?吸收态技巧如何让生成 MDP 的 <EOS>终止复用同一套记账?- Bellman 最优性方程的证明为什么必须分两段?第一段结束时我们知道什么、还不知道什么?夹逼链
用了 的哪两条性质? - 列举
的三种病态。为什么「奖励只在终止时给一次」让无 KL 惩罚的 RL-LLM 在 下合法?KL 惩罚吸收进逐 token 奖励后,这个论证要在哪个对象上重做? - 半梯度为什么「可证明不是梯度下降」?
.detach()在 TD 目标上切断的是前向计算还是反向图?切断错了会得到什么? - 四个方差缩减增强中,哪几步保持无偏、哪一步引入偏差?引入偏差的那一步换来了什么?
拟合得差为什么不破坏统一定理的无偏性? - 全正奖励、无 baseline 的策略梯度更新里,「好动作被推高」的信号从哪来?构造一个直觉反例说明「全正
却把最优动作概率推低」为何可能发生。 - PPO 的 clip 目标按「悲观下界」怎么读?为什么说它「消除了把
移得太远的激励」,这与信任域是什么关系? - AlphaGo 四步训练中,第 2 步的无 baseline 策略梯度为什么在围棋上能工作,而第 4/5 级 Cliff Walk 实验里去掉 baseline 会退化?(提示:
的对称奖励 vs 全负的步惩罚。) - 用「预先解整盘棋 vs 只解当前可达子集」解释 test-time compute 的性价比;这个论证对第12章的多数投票与更长 CoT 各对应哪一半?
- 4×4 网格世界,出口在左上角与右下角,每步奖励
、 、转移确定;随机游走策略(四方向等概率)下某格的 ,其正下方一格 (下方更靠近出口)。站在该格,「先刻意向下走一步、之后一切交回随机游走」这条路的第一步值多少?它与全程随机游走的 相比说明什么?(答案: ,一步前瞻法——即时奖励加 倍下一状态值; 远高于 ,对当前价值表贪心一步即可大幅优于策略平均水平,正是追遗节 policy improvement 的单步版本。)
论文与延伸
- 教科书:Sutton & Barto, Reinforcement Learning: An Introduction(第二版, 2018)——MC/TD/表格方法的百科全书,官方免费全文。Zhao, Mathematical Foundations of Reinforcement Learning(2025, Springer)——第11章值函数记号的来源,Bellman 与动态规划一章可作本页阶段二的对照读物。
- 课程:Ernest K. Ryu, RL of LLMs (Spring 2025)——本页一般理论与全部讲法顺序的来源;Chapter 1 讲义与 Cliff Walk notebook 的公开链接在课程页。
- 策略梯度与 actor-critic:A3C, Mnih 等, ICML 2016, arXiv:1602.01783。
- PPO 谱系:TRPO, Schulman 等, ICML 2015, arXiv:1502.05477;GAE, Schulman 等, ICLR 2016, arXiv:1506.02438;PPO, Schulman 等, 2017, arXiv:1707.06347。
- RL-LLM 侧的承接:GRPO/DeepSeekMath, Shao 等, 2024, arXiv:2402.03300;DPO, Rafailov 等, NeurIPS 2023, arXiv:2305.18290——两篇分别在第12章与第11章展开。
- 博弈与搜索:DQN, Mnih 等, Nature 2015, Human-level control through deep reinforcement learning(本页排除它的理由见阶段三);AlphaGo, Silver 等, Nature 2016, Mastering the game of Go with deep neural networks and tree search;AlphaGo Zero, Silver 等, Nature 2017, Mastering the game of Go without human knowledge;expert iteration, Anthony 等, NeurIPS 2017, arXiv:1705.08439。
资源 / 成本 / 隐私
本页动手实验全部为 CPU 上的表格计算:五级实验与两个故障注入合计运行时间在秒级,网络带宽与费用为 0。python/llm_core/rl_basics.py 及其测试不依赖任何外部服务; Cliff Walk 环境参数(网格尺寸、奖励数值)以该模块定义为准。
Evidence
学习者提交模板(待填写,不是当前机器证据)
复制下面模板并填写自己的真实运行结果。所有 <...> 都是未填写状态;actual 必须替换为本次运行的真实记录。
yaml
schema: learn-llm.evidence.v1
module: rl-foundations
commit: <learner-commit-sha>
verified_at: <iso-date>
environment: <sanitized-python-device>
seed: 42
commands:
- PYTHONPATH=python python -m pytest python/tests/test_rl_basics.py -q
metrics:
- name: cliff_walk_v_star_start
expected: -13
actual: <recorded-value>
- name: vi_matches_exact_solution
expected: true
actual: <recorded-value>
- name: reinforce_beats_random_init
expected: true
actual: <recorded-value>
- name: no_baseline_degrades_return
expected: true
actual: <recorded-value>
- name: gamma_one_loop_diverges
expected: inf-or-overflow
actual: <recorded-value>
artifacts:
- python/llm_core/rl_basics.py
cost:
gross_usd: 0
credit_usd: 0
licenses:
- source: Ernest K. Ryu, RL of LLMs (Spring 2025), Chapter 1
license: link-only-attribution
- source: Pramod Goyal, Reinforcement Learning from scratch #1 (2026)
license: link-only-attribution
known_failures:
- none表格 Cliff Walk 的收敛数字只描述固定 seed 下的本仓库 fixture,不外推到 token 级 PPO/GRPO 训练动态;两者共享数学结构(策略梯度定理、Bellman 算子),不共享优化景观。
下一步
一般理论就位后,两条路都已铺好:回到第11章,把 PPO 目标、GAE 与 KL 安全绳逐项挂到本页的定理编号上;或直接进第12章,在 grpo_policy_update 的 toy 循环里认出本页的策略梯度结构——再往后,第22章 Capstone 的验证式自提升正等着 expert iteration 的回声。