12 · Agent 优化与训练:从失败证据到参数更新¶
助手上次引用了旧政策,读完一段反思后改对了。有人说它已经“自我训练”,另一个人提议马上上 RL。先别急着申请显卡:这次究竟改了输入、文件、工具,还是模型参数?
本章先定位失败,再选择运行时改进、提示与技能优化或参数训练,并分清 SFT、偏好优化和 Agent RL。建议先读评测闭环与性能与预算。
先确认你在优化哪一层¶
政策研究助手总把旧版本当有效规则。可能是索引未更新、上下文没带日期、工具描述含糊,也可能是模型在充分证据下仍不会比较适用条件。只有先区分原因,才能决定改数据、运行时、提示还是参数。
| 改动 | 改变的对象 | 需要的证据 |
|---|---|---|
| 修索引、过滤和工具 | 环境与执行合同 | 文档是否可见、版本是否有效、结果是否正确 |
| 改提示、技能或记忆 | 推理时可读取的信息与程序知识 | 相同任务上的行为变化、失败与回归 |
| SFT | 参数对示范行为的拟合 | 高质量示范、独立集合表现 |
| 偏好优化 | 参数对候选相对质量的偏向 | 同任务可比较的偏好数据和评价规则 |
| Agent RL | 参数在环境交互与奖励下的策略 | 完整轨迹、奖励、行为概率和训练稳定性 |
模型读了反思文字后改变回答,不足以证明权重更新;一次自动修改提示也不等于 RL。讨论“自进化”时,先指出被修改的文件、参数、工具或策略,再说明如何验收和回滚。
用一条轨迹理解训练样本¶
把“检索→发现版本冲突→再次检索→比较→生成草稿”这条轨迹拆开看:哪些 token 是模型做出的动作,哪些是工具返回的观察,哪些消息由运行时插入,奖励又从哪里来?先标清角色,训练目标才有依据。
工具回包可以是模型决策的条件,却不能因为出现在同一份日志里就都变成待生成目标。像排练时演员要学习自己的台词,不必把舞台管理员的报时也背成角色独白。
给每次调用记录任务/轨迹/请求 ID、模型与采样版本、输入、输出、工具观察和奖励来源。若只保存最终漂亮回答,就失去工具选择、错误恢复和行为概率的上下文;若无区分拼接全部日志,又可能把工具回包当成模型动作。
清洗时检查错误证据、敏感信息、重复模板、近重复任务以及可被模型修改的评分结果。训练与测试应按任务、文档或环境场景分组切分,不能把同一轨迹的不同切片随意分到两边。
SFT、偏好与强化学习怎么选¶
有稳定成功轨迹时,可以用 SFT 学习工具选择与输出行为,但要保留失败条件和场景覆盖。只训练最短的成功样本,可能让模型学会忽略边界或不再澄清。
同一请求下有两个可比较候选时,可以建立偏好对。先说清为什么一个更好:是引用有效、条件完整,还是只是语言更顺?“引用完整但稍慢”和“很快却缺证据”怎样排序,应由任务标准决定,不能交给字符串长度投票。
DPO 用偏好数据与参考策略关系优化参数,不需要按经典 PPO 流程单独训练一个奖励模型。省去这个组件并不会省掉数据判断:候选质量与偏好标准仍决定学习方向。DPO 原论文
Agent RL 进一步让策略与环境交互后接受奖励。长任务可能只有最终奖励,导致一次失败究竟该归因给检索、计划还是汇总难以判断;这就是信用分配问题的一部分。工具不可用、评测规则错误或环境状态变化,也会污染奖励解释。
GRPO 的组内相对信号¶
GRPO 的原始设计使用同一问题的一组输出作为比较基准,减少对单独价值模型的依赖。DeepSeekMath 看一个简化的标准化步骤:同题四条轨迹奖励为 [0,0,1,1],均值 0.5、总体标准差 0.5,得到相对值 [-1,-1,1,1]。
这一步像看同场选手相对组均值的位置,得到的是比较信号,还没有完成训练。真正更新参数时,还要计算策略概率比、裁剪、正则以及具体实现使用的归一化。把四个奖励标准化,不能称为已经跑通 GRPO。
若同组全为 0,相对差异也为零,说明这组样本没有提供区分信号;其他损失项仍需单独分析,不能由此推断全部梯度为零。此时先检查任务是否过难、奖励是否失灵,比机械增加采样更有信息。
有时更该修任务难度与奖励:题目全部过难、工具全失败,增加采样只会得到更多相同失败。组内输出长度差异、不同轨迹的调用数和 token 数,也影响如何公平归一化与分配最终奖励。
新方向:让部署时的 Harness 参与训练¶
Agent Lightning 原始论文强调将执行与训练解耦,并把复杂轨迹转换为可训练的交互数据。原始论文 v1.0 则进一步围绕 harnessed agentic RL:部署用的 harness 继续拥有工具、上下文与环境交互循环,训练系统通过请求/响应边界获取样本,而不是另写一套完全不同的交互循环。v1.0 论文
这让训练更接近实际使用,也带来新的数据问题:重新分词可能破坏 token 前缀一致性;多次模型调用怎样合并为训练样本;同题不同轨迹如何算优势与损失。重试时还要区分同次实际推理的重复日志与新推理尝试:前者按事件去重,后者保留独立输入输出及是否被 harness 采用的状态,再按轨迹和奖励合同决定入训,不能只按逻辑调用 ID 合并。仓库主分支说明 v1.0 已重构,旧版示例需要按对应分支阅读。Agent Lightning
学习这类系统时,应同时看运行时和训练端:调用代理怎样关联 rollout,控制器怎样管理任务生命周期,训练器怎样消费轨迹。接入一个代理只提供数据通路,还需要任务环境、奖励、模型后端和评测来形成可解释训练。
防止模型学会“骗过检查”¶
设一条轨迹“正确且引用充分”得 1 分,否则 0 分。若评分器只检查是否包含 [source],模型就可能增加无效引用来得分。若只奖励工具返回成功,模型可能创建无用对象;若只惩罚调用数,它可能在证据不足时过早结束。
把最终结果、证据支持、禁止副作用和成本拆开记录。关键规则由隔离的验证器检查,训练中的 Agent 不应修改测试或评分逻辑。对高风险错误可设硬约束,再在允许集合里优化成功率与资源消耗,避免用微小的成本奖励抵消严重错误。
每轮训练产物与其模型、分词器、工具、数据、奖励和 harness 版本绑定。先在保留任务和坏例集合上比较,再做小范围部署;参数训练、技能更新与索引变更最好有各自可定位的版本,便于判断收益来自哪一层。
动手练习¶
为同一个政策任务写四条轨迹:正确引用、旧版引用、缺条件却结论明确、正确澄清。先定义各自终态,再分别设计 SFT 选择规则、偏好对与最终奖励。故意制造一个“格式很好但证据错误”的样本,检查评分器是否会上当。最后列出日志中哪些 token 属于模型动作,哪些只是环境观察。
其中的组内奖励标准化用于复算相对信号;训练参数更新应在选定框架和环境中另行实现。
自检¶
1. 反思后回答更好,证明发生训练了吗?
没有;上下文改变也会影响输出,应看参数是否被实际更新。
2. 最终奖励为 0,是否应该惩罚轨迹中每一步?
不能直接这样归因;部分步骤可能正确,需要结合信用分配与环境证据。
3. 训练集分数提高,下一步先扩大部署吗?
先检查保留任务、奖励漏洞、能力回归和成本,再按发布策略推进。
参考资料¶
DPO · DeepSeekMath / GRPO · Agent Lightning 原论文 · Agent Lightning v1.0 · 项目仓库