深入理解 AI Agent · 第 8 章图解

模型后训练

Agent = LLM + 上下文 + 工具。本章只动 LLM 这一项:把能力写进权重。模型能力分四步形成:预训练打地基,Mid-training 补底座,SFT 立协议,RL 塑策略。四步优化的都是同一个东西,也就是下一个 token 的概率分布,区别只在于“想要什么”由什么信号来定义。全章两条主线:一是本章的对照实验里,SFT 更容易记住示范,RL 更容易泛化;二是数据和环境比算法更重要。

① 预训练

接受通识教育

海量互联网文本 · 预测下一个词

学到语言规律、世界知识、基本推理。代价极高:数百万到数千万美元。

② Mid-training

集中研修专业教材

目标领域语料 + 保留数据 · 全部 token 算损失

补领域知识、语言和基础能力。代价中到高,看 token 规模和是否全参。

③ SFT

老师示范答题

几千到几万条示范 · 只在回答上算损失

学会指令遵循、输出格式、风格和流程协议。代价低:几小时到几天。

④ RL

自己下场做题

任务 + 环境 + 奖励 · 最大化期望奖励

得到可迁移的决策策略和探索出的新解法。代价常是 SFT 的几十到上百倍。

每一步结束后,模型在被提问时表现成什么样。
预训练之后,模型知识渊博,但不太好用:你问它一个问题,它可能接着续写更多问题。因为在互联网文本里,一个问题后面经常跟着的是另一个问题。
预训练 Mid-training SFT RL 成功 / 正优势 / 回传梯度 失败 / 负优势 / 违规 屏蔽 / 等待
8.1

从预训练到 RL:四阶段全景

模型的输出是一个概率分布:给定前文,词表里每个 token 都有一个概率。所谓训练,就是调这个分布,让想要的 token 概率高一些,不想要的低一些。前三步用的是同一个目标,即预测下一个词,差别在于数据是什么、损失算在哪些 token 上。RL 换了目标:不再模仿标准答案,而是最大化奖励。

SFT 和预训练在数学上是同一个任务。工程上唯一实质的区别是损失屏蔽:只对回答部分回传梯度。

梯度落在哪些 token 上

逐 token 监督(交叉熵)按优势加权(奖励信号)不回传梯度
阶段数据优化目标学到什么典型代价
预训练海量原始互联网文本预测下一个词语言规律、世界知识、基本推理极高(数百万~数千万美元)
Mid-training目标语言 / 领域 / 能力语料与保留数据继续预测下一个词(通常对全部 token 算损失)补齐领域知识、语言和基础能力中到高,取决于 token 规模与是否全参训练
SFT几千~几万条“输入—输出”示范预测下一个词(只在回答上算损失)指令遵循、输出格式、风格、流程协议低(几小时~几天)
RL任务、环境 + 奖励信号(参考答案可选)最大化期望奖励可迁移的决策策略、探索出的新解法高(常是 SFT 的几十~上百倍)

Mid-training 和 SFT 损失相似,监督密度不同

Mid-training 把整段文档、代码、推导都当学习目标;SFT 只学回答。用少量问答 SFT 背事实,只是反复强化少数访问路径,模型记住的是问法,没有形成广泛可调用的知识。大规模、相互关联的领域知识交给 Mid-training,需要更新和追溯的知识交给 RAG。

LoRA:后训练的工程默认项

W 冻结d × d + B d×r A r×d 只训练B·A

旁挂一个低秩“补丁”,可训练参数只有原来的 1%–5%,效果接近全参微调;原权重冻结,遗忘风险更低。经验:要挂到所有主要矩阵上,尤其是参数最多的 MLP,只挂注意力层会掉点;学习率约为全参的 10×;SFT 用 rank 64–256,RL 每轮信息量小,8–32 甚至 1 就够。

RL 的前提:输出可验证,策略偶尔能成功

先在留出任务上,用接近训练的温度采样,测 pass@1 和 pass@k。若单次成功概率为 p,k 次独立采样至少成功一次的概率是 pass@k = 1 − (1 − p)k。pass@1 低但 pass@k 随 k 明显上升,说明正确策略已在分布里,只是概率太小,RL、拒绝采样、蒸馏都有东西可放大。

pass@k 与“全零组”

默认 p = 4/16,取自 8.9 节的 16 次 rollout 例子

只给终点 0/1 奖励时,GRPO 的一组 rollout 很可能全是 0,组内优势就没了;PPO 也看不到正样本,不知道该往哪里移。继续加大采样量,只能以约 1/p 的速度等偶然成功。把 p 拖到 0.01 以下看看。

缺知识 / 基础能力

领域语言、事实、代码模式、长上下文都不会 → 先 Mid-training 补底座。

会做但不会按接口说

JSON 或工具调用解析不了,奖励无法计算 → 先 SFT 把话说利索。这就是常见的“先 SFT、后 RL”。

能前进但到不了终点

→ 加可验证的部分奖励或课程学习。RL 擅长把已有但概率低的成功行为推高,不擅长从全零奖励里凭空造能力。

“必须先 SFT”只在格式和基本行为没建立时成立。Llama-3.2-Vision-11B 在严格结构化输出下跳过 SFT 直接做 RL 会失败(实验 8-11);DeepSeek-R1-Zero 这种足够强、已有非零成功率的基模可以跳过。R1 后来加冷启动 SFT,主要为了可读性和语言一致性。

SFT 与 RL 的本质区别

维度SFTRL
优化目标最大化标注答案的概率(极大似然)最大化期望奖励
训练信号标注回答的逐 token 监督策略自己生成的回答 / 轨迹 + 结果级或步骤级标量奖励
直接优化压力模仿示范中的映射与协议强化能拿到奖励的行为与策略
分布漂移下看示范覆盖和正则化;本章有限示范实验出现过拟合看奖励、环境和探索;本章实验中迁移更好
样本效率高(几千条见效)低(常是 SFT 的几十~上百倍)
稳定性高,收敛快低,易震荡,要小心调
最适合固化格式 / 风格 / 流程,有高质量示范,环境稳定需泛化到新场景、探索最优策略、标注成本过高

覆盖式 vs 寻峰:两种目标如何重分配概率

示意图 · 无书中数值

一个问题常有多类合理回答,每类对应分布里的一个“峰”。极大似然 SFT 逐条学示范,倾向 mass-covering,尽量覆盖出现过的每个峰;RL 按奖励重分配,配合常见的反向 KL 约束,更容易 mode-seeking,把概率收到少数高奖励峰上。最终收不收缩,取决于示范分布、奖励、KL 方向与系数、熵正则和采样温度。

在线反馈的价值:在自己走到的状态上训练

离线模仿有协变量漂移:策略一旦偏离示范,就进入数据里没有的状态。特定序列模仿设置中,误差最坏可随 T 近似按 T² 累积,在线数据聚合可降到约 T。

在线反馈给的三个机会

① 评估示范之外的候选。SimpleVLA-RL 的“推切”动作从没出现在人类示范里。但奖励识别不了的质量学不到,探索不到的策略也发现不了。

② 利用“验证比生成容易”。SFT 得先写出正确答案,RL 只要能判断对错:数学可对照,代码可测试,证明可由验证器检查。这是 RLVR 的优势,验证器不完整时也会招来奖励黑客。

③ 在当前策略实际访问的状态上训练。后文的 On-Policy Distillation 把这一点和 SFT 的稠密监督结合起来。

比喻:SFT 细读已有地图,RL 拿着奖励这枚指南针去探索地图外的路线。地图或指南针不准,都会迷路。

后训练还决定“何时行动”

Coding 模型里,GPT 系列可能先读更多仓库信息再改,Claude 系列可能读较少文件就定位、先实现再靠测试修正。这不是性格,而是参数里的策略在估算:多读一个文件的预期价值,是否还高于提交当前补丁并验证。第七章实验 7-9 在相同的中性 Harness 中换模,测到了这种差异。它能证明差异来自模型侧,但不能断言是某种具体私有算法造成的。

8.2 · 可选阅读

从经典 RL Agent 到现代 Agent

RL 的核心:Agent 每一步观察状态、选动作,环境给出新状态和奖励;目标是最大化累积奖励,而不是眼前这一步。它和监督学习的两个区别是试错搜索(没人告诉正确答案)和延迟奖励(好棋的价值要到终局才看得出)。由此带来探索与利用的权衡。凡是 Agent 不能任意改变的,都属于环境。

图 8-1 · 寻宝迷宫里的一条轨迹

G = R(1) + γR(2) + γ²R(3) + …。γ 越接近 1 越看重长期,越接近 0 越只顾眼前。把 γ 拖到 0,只有第一步的奖励 0 算数。

动作空间

可执行动作的集合。离散(走哪步棋)或连续(关节转多少度)。

策略

给定状态该怎么做。可以是一张查找表,也可以是深度网络。

奖励信号

即时反馈。但目标是长期回报,就像投资不能只看今天涨跌。

价值函数

从某状态出发,按当前策略最终能拿多少奖励。六十年 RL 研究最重要的认识之一就是价值估计的核心地位。

环境模型(可选)

有模型:先学环境怎么变,再规划。无模型:直接从经验学。

MDP

(S, A, P, R, γ)。马尔可夫性:未来只取决于当前状态,所以状态要装下决策所需的全部历史,比如象棋的王车易位权、五十步规则信息。

Agent环境动作空间奖励信号
新生小羚羊地形、重力、身体姿态连续高维(肌肉收缩)平衡 (+)、跌倒 (−)
扫地机器人房间布局、电量离散(方向、吸尘、充电)清洁面积 (+)、电量耗尽 (−)
国际象棋大师棋盘状态、时间限制离散有限(合法走法)赢 (+1)、输 (−1)
客户服务 Agent对话历史、知识库变长组合式(思考、说话、API 调用)问题解决 (+)、处理时间 (−)
代码助手 Agent需求文档、代码库变长组合式(思考、搜索、编辑、执行)测试通过 (+)、引入 bug (−)

棋类、Atari 用有限离散动作,机器人用有界连续动作;LLM Agent 用有限 token 和工具调用组合出变长序列,无法一次枚举,并且可以用“内部思考”提升能力。

表格 Q-learning:一步实际结果修正旧估计

Q(s,a) ← Q(s,a) + α [ r + γ·maxa′ Q(s′,a′) − Q(s,a) ]

图 8-4 · 在储藏室拿起红钥匙

图 8-3 · 价值从宝藏向前传播

α = 0.2,γ = 0.99,ε 从 1.0 降到 0.1。颜色越深价值越高,黑格是墙。播放时按价值从高到低依次点亮,就是奖励一步步回传的顺序。

实验 8-1 · 寻宝游戏:无先验的 Q-learning 要试近一万局

最优解 11 步 · 稀疏奖励 · 隐藏机制

全程不到 10 秒,因为仿真快。但现实中每次打电话有成本,每次操作浏览器有延迟,错误决策可能不可逆,一万次试错不可接受。局限:简单任务也要大量交互;表格值难迁移;每个新任务都要重新探索。

LLM 把“思考”变成了动作

经典 RL 也能把内部计算建模成动作,LLM 的实用变化在于:预训练语言策略可以用变长 token 表示内部计算,并由同一个策略生成外部行动。思考 token 不改变世界,却能提高最终行动的质量。搜索空间大得多,从零学像蒙眼在沙漠里找宝藏;但预训练已经给“识别条件 → 回忆公式 → 逐步计算”这类结构化路径更高的先验概率。RL 是在这个先验上用真实奖励重新调各条路径的概率,比如“换算货币先查汇率”本来就比“先查天气”概率高。

经典 RL Agent(Q-learning)LLM Agent
动作空间封闭有限:{东, 西, 南, 北, 拿, 攻击}开放:自然语言 + 工具调用,如 {"action":"pick_up","target":"red_key"}
先验知识零,从随机策略开始海量预训练知识
状态表示哈希编码 0x3A7F;Q 表 145 状态 × 7 动作 = 1015 条目语义理解:“储藏室有红钥匙,北门被锁”
学习信号标量 R ∈ {−1, 0, +5, +50}奖励 + 语言反馈 + 自我反思
首次通关约 7000 局第 1 局(正文 18 步内通关,图中标注 17 步)
最终胜率100%(10K 局后)约 90%(即时)
计算成本10 秒 / 1 万局1–2 分钟 / 局

实验 8-2 · LLM 第一局怎么赢的

捡起生锈的剑(“武器总比空手好”)→ 发现北门锁着,推理“需要钥匙”→ 取得红钥匙和魔法水晶 → 判断旧剑打不过守卫,第 8 步主动合成银剑 → 第 13 步击败强守卫 → 第 18 步拿到巨龙宝藏,中间有一两步无效尝试。它赢在携带的先验知识,而不是学习算法更好。规则一变,Q-learning 要重训,LLM 能直接推理适应。

图 8-6 · OpenAI 的优先级翻转

算法›环境›先验

8.3 · 可选阅读

模型预训练基础

流程是“词元化 → 预训练(含按需 Mid-training)→ 后训练”。“我喜欢编程”可能切成“我”“喜欢”“编程”三个 token。SFT 和 RL 都是在预训练建立的表征空间里优化,预训练奠定的知识结构决定了后续阶段的上限。

图 8-8 · 下一个 token 预测:点一个词,当作真实的下一个词

损失 = −log P(xt | x<t)
Agent需要在真实环境?执行任务

概率越低,损失越大,参数被推得越用力。在几万亿 token 上持续猜对下一个词没有捷径,模型只能真正消化语法、事实、逻辑和基本推理。

实验 8-3 · 从头训练 MiniMind 2(1 亿参数)

在消费级 GPU 上跑完整流程。加入 QK Norm 和 Muon 优化器,收敛快 3×;总训练约 14 小时,成本约 34 美元。预训练后能答“世界最高峰”但格式乱;SFT 后指令遵循和格式明显改善;偏好优化再减少事实错误和不自然表达。预算固定时,算法改进比单纯堆规模更划算。

图 8-9 · 实验 8-4 自己训练 VLM

8.4

Mid-training:补知识与基础能力

从已有基础模型出发,在目标分布上继续做预测下一个词,对文档、代码、推导的全部 token 算损失。DAPT/TAPT 研究早已表明,在领域或任务相关的无标注语料上做第二阶段预训练能继续改善下游表现。“Mid”说的是它在流水线中的位置,数据格式和损失与预训练相同。

知识缺口

目标语言、金融 / 医疗 / 法律、企业内部文档或某类代码库没被通用预训练充分覆盖,连概念和术语都不懂。

基础能力缺口

任务要求的长上下文、代码模式、数学推导或跨模态表征还没形成。问题不只是格式不对,而是采样足够多次也几乎得不到正确解。

稳健配方:Mid-training 吸收知识与能力 → 小规模 SFT 建立输出格式 → 有非零成功率后再 RL。反过来,Mid-training 降低了领域文本的 loss,也不保证模型会按用户问题把知识取出来;继续预训练与指令训练的顺序和数据组织会显著影响知识能否以问答形式被访问。

Mid-training 数据怎么构造

① 从失败分布反推按主题、语言、文档类型、代码模式、上下文长度切分评估,找出低 pass@k 来自哪类缺口;别把格式错误误诊成知识不足
② 高密度目标语料原始文档建术语和事实关联,代码仓库学结构与依赖,教材式推导和合成释义把隐含关系写明;去重、过滤、查污染
③ 按能力配比自然长文本 + 长文本原子能力的思维链 + 规划、工具调用、状态跟踪、错误恢复的 Agent 轨迹(可从强开源模型蒸馏)
④ 双重回放原始短文本与通用数据,保住旧能力;“长度提升后的旧任务”,在更长窗口里加干扰项重测会做的任务
⑤ 多维门禁同时看训练 loss、领域留出、通用能力、原有指令遵循、目标 pass@1/pass@k

门禁诊断:看到什么,说明什么

实验 8-5 · 继续预训练学韩语

韩语维基 80%英语 20%

Mistral 7B v0.3 主要用英语预训练,几乎不懂韩语。先用韩语维基继续预训练补语言(配比只是该实验的选择,不是通用默认值),再用韩语指令数据 SFT 学会对话。结果:韩语盲评改善,英语能力下降。继续预训练能把目标分布写进参数,但免不了保留集、事实评估和数据审计。

Mid-training 后要验的长上下文能力

用 LongBench v2、IFEval 和第七章的端到端 Agent 评估,确认不同长度下以下能力没丢:位置与检索(单针、多针、不同位置)· 关系与推理(跨段、多文档、多跳、矛盾消解)· 聚合与统计(计数、分组、排序、趋势)· 指令遵循(多指令、思考流程、输出格式)· 长链思考(数学、逻辑、代码)· Agent 原子能力(分解、计划、选工具、构造参数、记状态、失败恢复)。长上下文是长思维链和指令遵循的基础,后两者又是工具调用的基础。

需要频繁更新或给出出处的事实,RAG 仍优于写进权重。全参 Mid-training 的计算量和遗忘风险都明显高于小规模 SFT,先用小实验验证配比,再扩预算。

8.5

SFT(监督微调)

SFT 的核心价值不是注入新知识,而是固化输出格式:把映射关系、交互格式、风格规范写进参数,推理时不用长提示也能产出预期输出。代价是依赖训练分布,需要多种正确策略或部署分布偏离示范时,容易只会复现示范。

数据准备输入—输出对 (x, y)
→
训练优化L = −Σ log P(yᵢ|xᵢ)
数千~数万条 · 数小时收敛
→
效果评估格式遵循 ✓ 指令理解 ✓ 风格一致 ✓
分布外泛化 ✗

人工专家示范

质量天花板最高,又贵又慢,适合做定义格式和风格的“种子”。

教师模型生成

强模型批量产出“输入—输出”对,过滤后蒸馏给学生(实验 8-8、8-9)。

拒绝采样

模型对同一题采多条,验证器筛出正确的再训练自己(实验 8-9)。

与其堆十万条脏数据,不如精修一万条干净数据:数据里的每一处噪声,SFT 都可能忠实写进参数。构造流程:定义任务分布与 schema → 批量生成候选 → 规则校验、格式检查加人工抽检 → 去重、平衡配比、保多样性。

四个实验:SFT 分别固化了什么协议

8-6 语音 SFT · 风格控制协议

Orpheus 把波形压成 token,拼接同一说话人的参考音频,学会“用这个人的声音说话”;Sesame 把笑声、叹气抽象成 <laugh>、<sigh> 标记。常见失败:说话人太少,所有人一个腔调;标记过拟合,产生“机械笑”。

8-7 多语言思考 · 思考组织模板

给 gpt-oss-20b 的系统指令加 reasoning language: German,用英、西、法等语言的思考样例训练。训练数据完全没有中文,设成 Chinese 后模型也能全程用中文思考。这不是 SFT 本身的泛化,而是激活了多语言预训练已有的共享表征。

8-8 Prompt 蒸馏 · 输入到输出的直接映射

教师用完整长提示 + 思考模式生成答案,训练数据只留用户输入和最终结论。“大到小”换成本,“思考到非思考”在同规模下把显式 CoT 折进参数,响应快 20–30×。学生会继承教师的边界:教师在长尾上系统性出错,学生会把错误写死;教师靠工具保证正确,单纯输出蒸馏会丢掉这份鲁棒性。适合产品稳定、输入可预期、成本敏感的阶段。

8-9 CoT 蒸馏 · 完整思考轨迹

同等参数下可恢复教师 70%–80% 的能力,是最务实的跟随者策略,DeepSeek-R1 的蒸馏小模型就是代表。三步:用开源教师生成“思考 + 答案”,规则验证器丢掉答错的(拒绝采样,用它做 SFT 即 RFT)→ 以“问题 → <think>…</think> + 答案”训练 7B 级学生 → 同基准对比恢复比例。教师只需“明显强于学生”,训练 200B 及以下模型时,开源 SOTA 足够。

“思维围墙”:o 系列、Gemini 等闭源模型通常会改写或摘要 CoT 后才输出,所以选 DeepSeek V4、Kimi K3、GLM 5.2 这类公开完整思维链的模型做教师,用前仍要确认许可证。作者实现实验时,GPT-5.6-Sol 驱动的 Codex 和 Claude Opus 5 驱动的 Claude Code 都拒绝编写完整蒸馏实验,最终用 Kimi K3 完成。蒸馏在技术上和普通 SFT 高度相似,但在厂商的安全与产品策略里属于敏感类别。

8.6

SFT 数据合成:从示范到可训练轨迹

人工示范定义格式与边界,教师模型放大规模,规则验证或人工抽检守住质量。合成的目标不是复述线上日志,而是从日志里提炼可复用的任务结构:用户意图、初始状态、可用工具、业务约束、常见失败、成功条件。去掉身份信息后重新生成虚构人物、订单、文件和状态,放进可重置的隔离环境,既保留真实难点,又不让模型记住客户数据或内部凭据。

一条稳妥的合成流水线

线上数据日志、问题案例
→
任务蓝图意图、状态、工具、约束、成功条件
→
合成任务虚构实体,可重置环境
→
多次候选轨迹教师或模型自身多次采样
→
双重验证任务验证:可完成、难度合适、参考结果对
轨迹验证:终态、工具调用、业务约束
→
SFT 数据只留验证通过的轨迹

能写成单元测试、数据库断言或状态差异检查的条件,优先用确定性代码;沟通质量这类开放维度再用模型评价器补充,并用人工抽样校准。

同一套设施,两种用法

SFT 只留成功轨迹,学稳定的格式、流程和基本动作;RL 让当前策略重新 rollout,用环境奖励探索示范之外的路径。

失败轨迹别当正例

用来构造偏好对、发现覆盖缺口,或补上诊断与修复后再加入训练。例:截出 Coding Agent“准备宣称完成”的前缀,过早宣称作 rejected,“先跑测试、逐条核对验收条件再下结论”作 chosen,用于 DPO。

关键是覆盖、多样、准确

按任务模板、客户或时间段去重划分;评估集来自不重叠的任务类型;参考解法、隐藏测试、验证器反馈不能泄露给模型。

8.7

何时选择 Mid-training、SFT 与 RL

先判断缺的是底座、协议还是策略,不要把“模型做不好”一律归因成需要 RL。

不是每个项目都要依次跑完三种训练。每一步都要有可测的进入条件,而不是把“Mid-training → SFT → RL”当仪式。

决策向导(表 8-4)

图 8-11 · 格式没立住就上 RL,会怎样失败

基础模型输出无结构
→
解析无法解析 JSON
→
奖励函数返回 NaN
→
梯度全零
→
训练完全失败

SFT 阶段:数千条高质量示范,目标是输出可解析,格式稳定、能力初具时停(过度训练会塌缩到训练分布)。RL 阶段:前提是奖励可计算,最大化准确率 / 成功率,发现超出示范的策略。转向 RL 的临界点:无论再加多少示范,新场景仍然不好。

8.8

单轮强化学习:记忆与泛化的对照

单轮指一次交互就完成:输入、输出、拿奖励,没有跨步状态。相同任务、相同模型、相同预算,唯一变量是训练方法。最小直觉:对同一问题多生成几条回答,奖励高的提高概率,奖励低的降低。PPO 在概率比超出区间时裁掉额外收益,抑制大步更新,但不是硬约束;GRPO 不训价值网络,用同一问题的多条回答互相比较。

# GRPO:组内比较当基线
for prompt in batch:
    group = [rollout(policy, env.reset(prompt))
             for _ in range(G)]
    rewards = [verify(t) for t in group]
    advantages = normalize_within_group(rewards)
    update(policy, group, advantages)
# PPO:价值网络 + 裁剪
advantages = returns - stop_gradient(values)
ratio = exp(policy.log_prob(a)
            - old_policy.log_prob(a))
policy_loss = -mean(min(ratio * adv,
    clip(ratio, 1-eps, 1+eps) * adv))
value_loss = mean((V(s) - returns) ** 2)

old_policy 是生成这批 rollout 时冻结的快照,概率比衡量当前策略已经离它多远。两者都仍依赖可靠的环境和奖励。

实验 8-10 · AdaptThink:学会“何时不思考”

8×H100 · step 0 → 300
MATH500 NoThinking 比例83.80%
GSM8K84.15%
AIME56.25%

NoThinking 模式(<think></think> 直接跳过)在简单题上不差甚至更好,难题上 Thinking 才有优势。AdaptThink 用约束优化目标(鼓励不思考,同时保证整体性能不降)和重要性采样(平衡两类样本,解决初始几乎总选 Thinking 的冷启动)训练路由。越难的数据集,不思考的比例越低,说明汇总层面有和难度一致的路由信号;但不能说成逐题“完美难度感知”,AIME 准确率还略降。训练到 step 410(36.92 小时)后 crashed,配置的 3,140 steps 没跑完。它可以和 Prompt 蒸馏组成“快—慢双系统”。

实验 8-11 · GeneralPoints:同一道题,J 从 10 变成 11

Llama-3.2-Vision-11B · PPO · 同等预算

SFT:记住了“J 当 10”

RL:重新计算直到凑出 24

任务类似 24 点:四张牌的数字各用一次,加减乘除凑出 24。GP-L(纯文本)测规则泛化:训练 J/Q/K = 10,测试 11/12/13;GP-VL(看牌图)还测视觉泛化:训练黑色花色 ♠♣,测试红色 ♥♦。上面两个回答是对“为什么会这样”的一种解释,不是说 SFT 只能记忆、RL 必然学会通用算法。

直接端到端 RL(不先 SFT)完全失败
验证迭代 1 次+0.48%
验证迭代 10 次+5.99%

分布外变化(相对 SFT 初始化)。追踪视觉识别准确率发现:RL 的结果导向优化改善了底层视觉编码器,且和整体提升高度相关;SFT 过拟合了思考中的 token 模式,忽视视觉 token,识别率反而下降。验证迭代越多泛化越好,说明测试时计算是泛化提升的重要来源。

8.9

RL 算法:从 16 次 rollout 到一次参数更新

SWE-bench 里的一个任务:parser.py 在输入为空时触发 IndexError,要修好,而且不许改测试。同一份代码复制到 16 个隔离沙箱,模型独立做 16 次,每次都是完整的“读代码 → 改文件 → 跑测试 → 提交”,一次就是一条 rollout。采样有随机性,所以有的补上了边界检查,有的只捕获异常掩盖问题,有的改错文件,有的想改测试。

GRPO 的核心是组内比较。全部失败或全部成功时奖励都一样,比不出好坏,优势就消失了。

图 8-13 · 组内优势归一化

① 16 次 rollout② 验证器算奖励③ 组内相对优势④ 梯度下降更新

点格子选中一条 rollout,再拖奖励(0 = 测试失败或违规,1 = 通过全部测试且没改测试;中间值相当于部分进展奖励)。书中伪代码只写了 normalize_within_group;“再除以标准差”是常见的 GRPO 写法,放在这里作对比。全零组怎么恢复差异,见 8.12 的 RLVP。

第四步:不是背下成功补丁

相对优势转成损失,优化器(AdamW、Muon)做梯度下降:提高正优势轨迹里那些选择的概率,降低负优势的。在许多任务上反复调整后,“先复现问题、查边界、改实现、跑测试”更容易出现,“掩盖异常、改测试、不验证就提交”更少出现。

PPO、GRPO、DPO 差在“拿谁比较”

GRPO 比较同一问题的多条 rollout,不要价值模型。PPO 训练价值模型估计每一步“通常能做到多好”,更适合需要细粒度信用分配的长轨迹。DPO 直接学事先收集好的“较好—较差”偏好对,不在线生成 rollout。本章案例:AdaptThink 自定义约束目标;GeneralPoints、V-IRL、ReTool 用 PPO;SimpleVLA-RL、RLVP 用 GRPO。

一个 step 要多久

复杂 Agent rollout 有数十轮工具调用,16 条并行时墙钟时间由最慢的一条决定。第 k+1 个 step 用更新后的策略重新 rollout。不同框架会把内部 minibatch 更新另算,看日志时要确认 step 的定义。

为什么 LLM RL 通常优先 on-policy

Online 只表示数据在训练中不断和环境交互产生;on-policy 要求生成 rollout 的行为策略 μ 和正在优化的 πθ 相同或足够接近。异步集群持续在线生成,但 worker 落后几个 checkpoint,数据就已经带有 off-policy 成分。PPO 在同一批数据上做多轮 minibatch,后几轮也开始偏离 old_policy,所以需要概率比和裁剪。

ρt = πθ(at|st) / μ(at|st) = exp(log πθ − log μ) 新鲜 on-policy 数据在更新前应满足 ρt = 1

名义上 on-policy,数值上已经 off-policy

书中例子:4,000 token × 10⁻³ → e⁴ ≈ 54.6

vLLM / SGLang 采样,FSDP / Megatron 重算 log prob。即使加载同一份权重,精度、归约顺序、张量并行、批大小、KV cache 和 fused kernel 的差异也会让同一 token 的 log prob 略有不同。放大链:log prob 小误差 → 指数化的比率偏差 → 长前缀累积 → 裁剪 / 优势加权改变 → 梯度方向和有效样本数改变;早期 token 的概率差还可能改变采样结果,让整条轨迹分叉。最终可能表现为比率尖峰、大量 token 被裁、长度突变,奖励和熵一起坍塌。真实误差未必同号,这个例子只说明长序列为何会放大。

更新前做单元测试

同一批轨迹比较 sampler 与 trainer 的 token log prob,监控 ρ 的均值、分位数、最大值、近似 KL、裁剪比例。

同步的不只是权重

LoRA adapter、tokenizer、chat template、模型 revision、位置编码配置;rollout 要保存生成时的 behavior log prob。

对齐数值或承认离轨

尽量对齐精度、并行布局和关键内核;做不到就显式做重要性修正,监控有效样本数,别指望 clipping 兜底。

保持新鲜

限制每批的更新轮数和异步 staleness。重用旧数据换吞吐,是需要测量的偏差—效率取舍,不是免费加速。

8.10

RL 环境:从评估到仿真

RL 的瓶颈往往不在算法,而在环境是否真实、可重置、可并行。真实电话、付款、文件修改又贵又不可逆,不能靠无限重试弥补错误。环境工程是 RL 的前置条件,不是训练完再补的附属品。

环境一旦失真,策略就会失效。仿真里的客服总按固定套路回话,错误信息和生产对不上,模型就学会一套只在仿真里管用的应试策略。这是 RL 项目最常见的失败方式:练习场和考场不一样。在动手调算法之前先问:我的仿真环境真的像真实世界吗?这比选 PPO 还是 GRPO 重要得多。

层次一:模型合成工具返回值

ZeroSearch 用一个 LLM 扮演搜索引擎。课程式设计:初期返回高质量、强相关文档,之后逐步掺噪声、降质量,逼学生学会从不完美结果里提取信息。全程没见过真实搜索引擎的模型,接上真实搜索也表现良好。

返回质量噪声比例训练进度 →(示意)

层次二:模型仿真整个环境动态

DreamGym 把环境动态蒸馏进推理式“经验模型”:给定状态和动作,逐步推出状态转移和反馈,不碰真实环境也能批量合成 rollout 做在线 RL。客服、销售 Agent 普遍用 LLM 扮演用户,τ-bench 系列就建在这个思路上,同一个模拟器既当考场也当练习场。

风险:模拟器的偏差就是训练的天花板

模拟的客服比真人更有耐心,模拟的搜索从不返回垃圾,学生学到的策略只在“模型扮演的世界”里成立。RL 还会主动找模拟器的漏洞做 reward hacking。稳妥做法是混合:模型模拟承担大部分交互量,辅以真实环境交互,并用真实交互定期校准模拟器。

环境工程的顺序

任务蓝图从业务日志提炼,去身份信息
→
可重置模拟器可并行、可复现
→
确定性验证器先用少量 rollout 查任务可完成、能分对错
→
训练 / 评估隔离可共享生成器和验证代码,不能共享同一批任务
→
真实交互校准少量即可

SWE-Gym、τ²-bench、AndroidWorld 都说明:测试用例、隐藏状态和参考解法要留在验证器一侧。验证器有系统性偏差时,RL 只会更快地利用它。确定性验证器便宜不等于没成本:Lean kernel、测试运行器、容器执行可能让 CPU 验证远慢于 GPU 生成,这时吞吐取决于并行的验证 worker,继续堆 GPU 没用。

8.11

从单轮到多轮:任务场景与信用分配

多轮就是第一章、第四章的 ReAct 循环,每轮一次“思考 → 行动 → 观察”。策略不仅要选当前最优动作,还要考虑未来状态的价值;最终结果要多轮后才知道,于是有了信用分配:客服 10 轮对话拿到好评,该归功于第 2 轮的精准提问,还是第 7 轮的耐心解释?

单轮(GeneralPoints / AdaptThink)多轮(V-IRL 导航 / AWorld 工具)
信用分配即时反馈,每步可评估延迟反馈,要判断哪步贡献最大
状态管理无隐含状态部分可观测,需维护历史
奖励设计结果奖励即可(0/1)过程奖励 vs 结果奖励的权衡
探索成本单次生成整条轨迹(10–50 步)

图 8-15 · 终点的 +10 该记给哪一步

下方条形是每一步的“剩余回报”Σ γkR,即这一步之后还能拿到的总奖励,是信用分配的原料。书中的关键提醒:第 3 步犯错、第 4 步纠正,所以第 4 步的修正比第 1–2 步的正确更关键。过程奖励降低信用分配难度,但可能限制探索;结果奖励探索自由度最大,训练更难。多轮 LLM RL 通常取 γ = 1。

实验 8-12 · V-IRL-VL:真实街景导航

纽约路线训练,换城市测试,同时改变方向表达和视觉外观。RL 在规则和视觉 OOD 上都明显优于 SFT:多轮任务里策略要根据当前观测重新规划,而不是复现训练轨迹。带价值网络的 PPO,逐步反馈缓解了长时序信用分配。

实验 8-13 · SimpleVLA-RL:只用成败奖励

LIBERO · 每任务 1 条演示做 SFT 冷启动

还发现了演示里没有的“推切”动作。过程信号好定义时能加速学习;最优路径未知时,稀疏结果奖励反而保留更大的探索空间。

工具调用:把环境带进 Agent

动作从“移动或回答”变成搜索、执行代码、改文件、查数据库、组合多个 API。三层挑战:单工具掌握(何时调、怎么调、出错怎么办)→ 多工具选择(搜索 / 代码 / 文档解析选哪个)→ 工具链编排(依赖、互斥约束、成本)。Search-R1 让模型自己决定何时搜、搜什么;ReTool 把代码解释器嵌进思考循环;AWorld-train 提供 MCP 多工具沙盒。

环境返回的 token 不是策略生成的,算策略梯度时要屏蔽,只对模型自己的思考和工具参数回传梯度。否则模型会被训练去预测沙盒输出,而不是学会用工具。

实验 8-14 · ReTool:交织文本思考与代码执行

Qwen2.5-32B · PPO · SandboxFusion 128 并行 worker
SFT 冷启动~1 小时
RL 训练~9 天 / 400 步
每步32 题 × 16 候选 = 512
每条响应7–9 轮交互

数据来自 DAPO-Math-17k,优化仍是标准 PPO。相比纯文本 RL,代码反馈让模型更快学会精确计算和纠错:主动执行、读报错、自我修正。图中只有书给出的三个点。

实验 8-15 · AWorld-train:在 MCP 沙盒里学用工具

26 个 MCP 服务器 · 126 个工具函数
① 环境配置MCP Server 沙盒
→
② Agent 构建AgentLoop · 多轮对话 ≤ 32 轮
→
③ 适配器层统一 VeRL 接口 · 收集 rollout · 算奖励
→
④ 训练框架GRPO / PPO · 131K 上下文
分布式 rollout 数据收集14.6×(7 天 → 12 小时)
模型Qwen3-4B · 8×A100
配置batch 32 · 16 resp/prompt · lr 1e-6
GAIA 参考大模型约 32%

工具:Web 交互(搜索、智能浏览器、Playwright)、文档处理(CSV/DOCX/PPTX/PDF)、多媒体(转写、OCR、视频摘要)、代码执行(终端、E2B 沙箱、文件)、Excel(29 个操作)、知识检索(Wikipedia、ArXiv、Wayback)。重点不是刷 GAIA,而是跑通可重置、可重放的多工具训练链路。多轮 Agent 的难点不在优化器,而在环境反馈可不可靠、动作链可不可验证、终点奖励怎么归因到中间决策。

8.12

奖励设计:把任务目标变成学习信号

三个互补维度:奖励来自哪里、什么时候给、表达多少信息。再加一个问题:结果对了,路径合不合规。

来源

可验证奖励(RLVR):测试、数据库断言、状态差异、格式检查,最可靠、最便宜、最难钻空子。RLHF(背景):人工比较 → 奖励模型 → PPO,用 KL 锚在 SFT 附近防过度优化;DPO 跳过奖励模型直接学偏好对。模型评判:生成式奖励模型(GRM)给出诊断,DeepSeek-GRM 先归纳评价原则,再按原则评价,最后用可验证事实核查。

时机

结果奖励(ORM)只在终点判断,最简单,探索自由度最大,但难定位多步中的具体错误。过程奖励(PRM)检查身份验证、工具参数、测试通过数、导航动作,《Let's Verify Step by Step》证明了逐步验证的价值,但可能把模型锁在预设路径上,标注成本也更高。先用结果奖励建可靠基线,再只为真正可验证的中间事件加过程信号。

信息量

有确定答案或测试 → 二元标量;多个独立质量目标 → 向量或加权成标量;开放式、规则难穷举 → 生成式诊断,配事实校验和人工抽检。每加一个维度,就多一种被钻空子的可能,先确认它能在少量 rollout 里产生有意义的组内差异。

reward hacking vs reward seeking

hacking:钻规则或实现漏洞拿高分,比如只看长度就写冗长废话。seeking:模型先在心里建模“评判器会看什么”,再按猜测调整行为;不一定篡改测试,却可能自己设一个过于简单的检查,刚好通过就提前收工。通过了 grader 不等于任务完成了。评判器是意图的代理,训练越强,模型越可能把代理当目标。

“过早结束”的结果奖励怎么给

模型宣称完成时,Harness 在隔离工作区跑模型看不到的验收测试,通过给正奖励,不通过给负奖励。测试必须读真实文件或环境状态,不能只看模型有没有说“已完成”,否则模型会学会口头承诺验证。评估时要把“未完成的边界集”和“确实已完成的保留集”分开,否则会把模型训练得永远不敢结束。

结果正确还不够:RLVP 奖励结果、惩罚路径

改测试文件、跳过身份验证、执行破坏性命令,都能换来表面成功。真实环境是非对称验证器:检测“做了坏动作”便宜可靠,证明“这一步有意义地接近了目标”很难。于是写成 R = O + β·Φ:O 是结果,Φ 是确定性规则逐动作算出的路径信号;两路各自归一化再合并。它不改 PPO / GRPO,只改每步看到的奖励。

全败组里,惩罚能不能恢复组内差异

示例组 · 点格子切换结果,用下拉设违规次数

四条设计原则:只惩罚具体动作,不惩罚“不够努力”;结果奖励始终保留,免得模型学会什么都不做;每条惩罚最好配一条可达的合规路径;规则必须确定、难以钻空子。违规通常容易检测,所以惩罚几乎总能恢复差异;进展奖励只在部分进展可达时才有效。基础策略根本不会采样合规动作时,先用少量示范把这条路“种”出来。

TerminalBench

3.71 → 0.66

违规次数,成功率基本持平。

miniF2F

7.0 → 4.4

达到 0.9 成功率所需迭代,靠可达的部分奖励。

软件修复

无收益

所有 rollout 一个测试都过不了时,进展信号不可达。先测信号可达性,再决定加不加维度。

这些数字来自可控代理环境,不能直接外推到线上。机制性结论是:只要路径信号能在同一组 rollout 中区分行为,且规则不易被钻空子,它就能补上终点奖励看不见的信息。

8.13

蒸馏:提升样本效率

样本效率指每次昂贵的环境交互能带来多少有效参数更新。ReTool 的 RL 时间是 SFT 的 200 倍以上(9 天 vs 1 小时)。RL 低效的根本原因是反馈太稀疏:客服说“需要信用卡后四位”,模型只能从终点的 0/1 反复试错,可能要几百次交互才偶然学会,人听一次就记住了。蒸馏把一次 rollout 变成密集监督,同一条轨迹贡献大量梯度。

方法轨迹 / 状态由谁采样每条轨迹的主要监督
SFT / 离轨蒸馏人类或教师标注答案的逐 token 监督,密集
On-policy RL当前学生结果或过程奖励,通常稀疏
On-Policy Distillation当前学生教师在学生前缀上的逐 token 分布,密集

学生决定走到哪里,教师在学生已经走到的位置给出下一步的完整概率分布。比离轨 SFT 更贴近学生实际会犯的错,比纯 RL 反馈更密、方差更低;多花的是教师推理,不用再采环境轨迹。

一条 rollout 能产生多少学习信号

数学等任务上,达到同等性能所需步数约为纯 RL 的 1/10。

在“查询”这个位置,学生离教师多远

教师:查询 80% · 调用 15% · 其余 5%
# On-Policy Distillation
student_trajectory = rollout(student, task)
loss = 0
for state in student_trajectory:
    teacher_logits = teacher(state)
    loss += KL(student_logits(state), teacher_logits)
update_student(loss)
# OPSD:同一模型分饰两角
student_trajectory = rollout(model, task_without_answer)
for state in student_trajectory:
    privileged_state = add_verified_answer(state)
    teacher_logits = stop_gradient(model(privileged_state))
    loss += KL(model(state), teacher_logits)
update(model, loss + retention_regularizer)

“时间感”任务的验证

DPO 和四种 RL 分别受困于稀疏奖励、目标错位、rollout 形状不匹配和策略崩溃。换成冻结的 Qwen3-32B 教师在学生自己的多轮轨迹上逐 token 对齐后,训练平滑收敛,四种条件下通过率比同源 SFT 基线高 23–47 个百分点。瓶颈往往不是奖励不够复杂,而是信号不够密。

没有更强的教师:OPSD

教师版能看到“特权信息”(标准答案、已验证解答、人工示范、领域文档),学生版只看题目,却在自己的轨迹上向教师版对齐。对着答案解释学生刚走的路,比独立探索容易。不要求奖励能自动验证。特权信息只能在训练侧构造,不能泄露给部署时的 Agent。

都不能凭空造能力

学生要能进入教师可纠正的状态,教师不能离学生的有效支持太远;连目标语言或基本动作都没有,先 Mid-training 或离轨示范冷启动。拿着答案也讲不清过程,自蒸馏就没有额外信号;朴素 OPSD 可能丢失原有思考风格,需要正则。sampler/trainer 数值不一致时,名义上的在轨蒸馏同样会退化成离轨。

8.14

从问题案例到后训练

第七章基于生产问题案例建的评估集,在这里变成训练输入。不同类型的评估资产,对应不同的训练用法:

第七章的评估数据集第八章的训练用法
端到端回归任务(含验证器)RL rollout 任务与可验证奖励(RLVR);拒绝采样(RFT)的采样池
轨迹前缀回归任务DPO 偏好对、决策边界的 SFT 示范、On-Policy Distillation 的教师状态
失败归因记录(首个错误步骤与类别)过程监督的负标签(PRM)、RLVP 路径惩罚的规则来源
Rubric 多维评分与人工金标集向量奖励的各维度、生成式奖励模型(GRM)的训练与校准数据

案例 1 · Coding Agent 过早结束

测试没跑就宣称完成;要求改三个功能,改完两个就收尾;失败两次就宣布“不可能完成”。用户纠正、点踩、事后审计(宣称完成的轨迹里没有测试调用)都能捕获它。归因把首个错误定在“准备宣称完成”的决策边界:之前读代码、改代码可能都对,错在没有证据就下结论,正是 reward seeking 描述的行为。

实验 8-17 · 从问题案例到 DPO 修复

7B · LoRA · 小配比混入通用数据
失败归因24 条写实案例,4 类失败
→
轨迹前缀截到“准备宣称完成”
→
DPO 偏好对rejected:过早结束
chosen:教师生成 + 验证器过滤
→
LoRA 训练扩充成数百条
→
双集验证boundary 12 条 + retention 8 条

边界集

任务未完成时,模型是否选择继续验证,而不是宣称完成。

保留集

任务确实完成时,模型仍应正常收尾。只盯边界集,会把模型矫枉过正成永远不敢收尾,无限验证,延迟和成本崩溃。

四类失败:未跑测试就宣称完成、多目标只完成一部分、验收条件未满足、遇错放弃并宣称不可能,其中含删除失败测试这种更恶劣的 reward hacking 变体。生产中还要警惕新的作弊形态:口头声称去验证而不真的验证,所以奖励必须依赖模型写不了也改不了的隐藏测试。

案例 2 · 中文引号:作用域敏感的最小编辑

“中文文章里的直引号统一成弯引号”只是一句期望,不是可训练的规则。同一个引号在中文正文、英文原文、行内代码、代码块、注释、JSON、路径里角色完全不同。正确做法是先判断作用域,再做最小编辑;判断不了就保留原文。

先判断作用域,再动手

实验 8-18:Qwen3-8B,bf16 LoRA 训 2 个 epoch(256 次更新)。按 16 类片段、10 种体裁、9 种编程语言渲染 1024 条训练、256 条留出、256 条边界样本。SKILL.md 的作用域规则同时当生成标签、质量门禁和回归规范;模型只负责选作用域和生成最小编辑,生产侧的解析器与语法检查不撤。

案例 3 · edit_file 经常失败:先归因,再训练

edit_file(path, old_string, new_string) 按精确字符串匹配,差一个空格、换行、反斜杠、Unicode 组合字符或低频 token 都会失败。沿链路逐层比对,找到首个出现差异的环节。

点出第一个和原始字节不一致的环节

实验 8-19 · 特殊字符串的精确复制 SFT

Qwen3-8B · bf16 LoRA · 2 epoch
平均首次字节分歧位置54.0 / 54.2
Qwen3 与 Qwen2.5 tokenizer 无损 round-trip80.1%

三个可验证任务:直接逐字复述;在相似等长的多个字符串里选出完全相同的那个;把指定字符串完整抄进 old_string 的工具 JSON 参数。只对目标字符串或 old_string 字段提供逐 token 监督。用留出与边界共 512 条探针比较三个开源 tokenizer,round-trip 也是 80.1%,所以 80.1% 同时反映了模型复制能力和 tokenizer 上限。

8.15 · 8.16

实践要点与本章小结

模型学到什么,取决于训练信号教了它什么;信号的质量主要由数据和环境决定,不是由算法决定。

一、三种训练,三种缺口

Mid-training、SFT、RL 不是三档“微调力度”,分别处理底座、协议、策略。pass@k 近零先补底座;偶尔会做但不可解析先 SFT;只有当前策略能产生可评分、有奖励差异的轨迹时,RL 才能高效重分配概率。

二、数据和环境比算法重要

Mid-training 语料决定底座补到哪里,SFT 示范决定协议是否稳定,环境和奖励决定 RL 能探索并强化什么。造不出真实环境可以让模型模拟,但模拟器偏差就是天花板。很多场景下,底座和示范到位就不需要 RL。

三、瓶颈是样本效率与分布一致

On-Policy Distillation 把终点标量扩成逐 token 监督,RLVP 把浪费的环境反馈变成可学信号;真正 on-policy 的 rollout 减少修正偏差和方差。sampler/trainer 一致性要和奖励曲线同等重视。

十一个常见陷阱

01用 SFT 硬塞知识库稳定领域知识用 Mid-training,SFT 教访问和表达;要更新、引用、权限控制或删除的事实交给 RAG。
02格式没稳就上 RL生成不了奖励所需的 JSON,信号就稀疏或失真。可接受的解析失败率看任务,先小规模测出门槛,再用 SFT 或约束解码稳住。
03把标称窗口当有效窗口能输入 128K 不代表能在 128K 上检索、推理、规划。扩窗前过当前长度的门禁,保留短数据和前序 replay,用“能力 × 长度”矩阵查退化。
04pass@k 近零还直接 RL没有正向轨迹,GRPO 组内优势消失。先补能力、扩大有效支持,或构造可达的课程和部分奖励。
05奖励设计不当模型学会钻漏洞,比如只看长度就生成冗长废话。评估最终目标,不评中间指标。
06忽视仿真保真度客服总按固定模式回复、错误信息与生产不符,策略上线就失效。高保真环境可能比训练本身还贵。
07过度训练训练 loss 降、验证集变差就是在死记。Mid-training 会遗忘,SFT 会过拟合示范,RL 会过拟合奖励,三者都要独立保留集和早停。
08价值函数崩溃、探索不足PPO 价值估计不准导致优势有偏,曲线剧烈震荡;温度过低使 Agent 陷入局部最优。
09把数值失配当小噪声更新前概率比已偏离 1,on-policy 悄悄变 off-policy。监控 log prob 差异、近似 KL、裁剪比例、staleness。
10低估 RL 成本SFT 上表现好的任务转 RL 可能多花 10–100 倍时间。测试分布和训练高度一致时,SFT 可能已经够了。
11训练数据质量低Mid-training 吸收错误关联,SFT 学示范噪声,有系统偏差的奖励会把策略朝错误方向放大。
原则先小规模验证小批 Mid-training 语料看知识与遗忘曲线,少量 SFT 测格式能否稳定,小批 rollout 查 pass@k、奖励差异和 sampler/trainer 一致性。快速失败好过大规模失败。
放在哪里适合承载什么
ICL(上下文)示例、规则、当前状态,零参数即时适应;上下文越长,延迟和费用越高
RAG可动态更新、可追溯的事实与证据
程序确定性流程与硬约束,例如长期稳定的转账审批规则
Mid-training稳定的领域知识和基础能力
SFT / RL难以用外部规则完整表达的行为:高维感知(医疗影像识别)、生成风格(自然语气)、隐式决策策略

选择依据不只是任务是否长期稳定,更重要的是能力能否被外部符号充分表达。蒸馏还能把大模型行为迁到更便宜的小模型。下一章:参数只是知识、指令、程序、参数这四种 Agent 自我进化载体之一。

深度思考

思考题

1 ★★ 怎样进一步缓解微调带来的能力遗忘?

针对特定任务的微调会破坏通用能力(例如通用工具调用),Agent 场景尤其棘手。LoRA 冻结基座、风险更低,但并非免疫。还有哪些策略?(线索:8.4 的双重回放与多维门禁,8.14 的小配比混入通用数据、保留集。)

2 ★★ 一项能力该走后训练,还是上下文学习?

领域知识既能后训练学,也能用 few-shot 示例提供。你用什么标准决定走哪条路?(线索:本页“放在哪里”表,以及“能力能否被外部符号充分表达”。)

3 ★★ 蒸馏 Chat、Reasoning、Agentic 三类模型,难点有何不同?

提示:要蒸馏的到底是输出风格、完整思考轨迹,还是与环境交互的决策策略;轨迹里哪些 token 该学、哪些是环境返回不该学的;成败信号出现得多晚、多稀疏。

4 ★★★ 多轮交互中,你会如何设计奖励分配?

最终成败很难归因到第 3 轮还是第 7 轮。(线索:图 8-15 演示的过程 / 结果奖励、PPO 价值网络与 turn-level 优势、RLVP 路径信号。)

5 ★★★ 固定预算 $10,000 提升客服 Agent,怎么分?

在上下文与知识、Prompt/Skills、程序约束和参数训练之间如何分配?决策取决于哪些因素?

6 ★★★ 没有明确奖励、样本稀少下自主学习,还有多远?

这被一些人视为后训练的终极目标。当前 RL 距离它还有多远?下一个突破最可能来自哪个方向?

7 ★★ 给每个用户训练一个专属 LoRA,可行吗?

把用户记忆或企业知识写进参数,而不是像第三章那样存外部知识库。什么场景下“写入参数”更有优势,什么场景下适得其反?

8 ★★★ 能否“小模型教大模型”?

OpenAI 的 Weak-to-Strong Generalization 发现,弱模型的监督有时能激发强模型潜在而未被激活的能力。用在 Agent 训练上,能否实现逆向蒸馏?

9 ★★ 正确过程得错误结果,错误过程侥幸得正确结果,哪个更该奖励?

PRM 评每一步,ORM 只看结果。在多步工具调用场景中你会如何权衡?

10 ★★★ 评估集拿去训练,还算评估集吗?

SWE-Bench Verified、τ²-bench、AndroidWorld 既能评估也能训练。τ²-bench 的动态参数生成和 AndroidWorld 的参数化模板有所缓解,但模板结构仍是固定的。如何平衡训练价值与评估独立性?

11 ★★★ pass@1 很低,先做哪一步?

怎样联合 pass@k、格式解析率、部分进展率和失败归因,判断先做 Mid-training、SFT 还是直接 RL?指标达到什么条件才值得切换阶段?(可以用 8.1 的 pass@k 计算器和 8.7 的决策向导走一遍。)

12 ★★★ 长尾响应拖慢训练集群,怎么办?

ReTool 中少数超长响应显著拖长训练周期:一批 rollout 大多已生成完,却要等最长的几条收尾,GPU 利用率很低。如何提升资源利用率?(线索:8.9 的“一个 step 由最慢的 rollout 决定”。)

13 ★★★ 用 LLM 模拟环境时,会出现哪些 reward hacking?

钻空子的对象从真实环境的规则,变成了模拟器本身的偏见与漏洞。可能出现哪些具体行为,又该如何防范?