跳转到内容

EVE-Agent — 自我训练前先把证据钉在桌上

是什么

EVE-Agent 是一种**让 agent 自己出题自己学,但每道题必须附”出处证据”**的训练方法。日常类比:像律师写辩词,每一句结论后面都得贴一份证据卷宗的页码——没卷宗的话即使说得头头是道也不算数。

self-evolving search agent 之前的玩法是:proposer 编一个问题,solver 回答,分对错。问题在于 proposer 可能编一个听起来很合理但根本没出处的问题,solver 也跟着编一个听起来对但没来源的答案。两边互相加强,结果训出一个会讲故事但讲不出依据的 agent。这种”自我喂养”会随轮次累积偏差,最后越训越偏。

EVE 改的事很小:proposer 出题时必须同时给一个 evidence span——文档里的那一段原话。verifier 不再问”答案对不对”,而是问”加上这段证据,模型回答的边际增益有多大”。能涨分的 span 得高分,没用的 span 直接 0 分。整套机制不需要 oracle 答案,也不需要人工标注,全程自驱。

为什么重要

不理解 EVE-Agent,下面这些事都没法解释:

  • 为什么很多 self-evolving agent 论文报告”训练后效果更好”,但实际部署后幻觉变多了
  • 为什么 RLHF / self-instruct 都会面临”自我喂养崩塌”(model collapse)的隐忧
  • 为什么 search-agent-2510 这类工作开始把 retrieval 看成 reasoning 的一等公民,而不是后处理
  • 为什么”可审计”(auditable)正在变成 agent 训练数据的硬要求,不只是合规话术

核心要点

EVE 的思路可以拆成 三步

  1. proposer 出三件套,不是两件套:传统是 (question, answer),EVE 加一个 evidence span——“这道题的答案出自原文哪段”。类比:考研出题人不只给题和答案,还得标第几页第几行。这一步把 evidence 从”事后补的引用”提升成”出题时的硬约束”。

  2. verifier 测边际增益,不测绝对正确:把 evidence 喂给模型 vs 不喂,看回答质量差多少。差距大 → 这段 evidence 有用 → 这条训练数据可用。差距 0 → 模型本来就会,evidence 是装饰 → 丢掉。这一步对应论文的 “marginal accuracy gain”,比传统 reward 更难被作弊。

  3. 训练信号天然可审计:每条进 batch 的样本都带着原文 span,出问题时可以查到根。类比:数据库 audit log——不只记结果,还记凭据。这让训练后的 agent 有”我说这话因为见过这段”的 trace ability。

三步加起来叫 evidence-grounded curriculum——核心思想是把”凭据”从输出阶段前移到输入阶段。

实践案例

案例 1:proposer 出题三件套(伪代码)

def proposer(doc):
span = pick_random_span(doc, min_tokens=20, max_tokens=80)
q = llm.ask(f"基于这段:{span},出一道需要这段才能答对的题")
a = llm.ask(f"题目:{q}\n依据:{span}\n用一句话作答")
return {"question": q, "answer": a, "evidence": span}

注意:evidence 必须是原文 verbatim,不是摘要。否则 verifier 没法测”加这段 vs 不加”。span 边界要切在句号上,不要切在词中间——否则模型会被 cut-off 误导。

案例 2:verifier 算边际增益

def verifier(item, model):
score_with = score(model.answer(item["question"], ctx=item["evidence"]))
score_without = score(model.answer(item["question"], ctx=""))
return score_with - score_without

如果 gain < 0.1,这条样本对训练几乎没用——丢。如果 gain > 0.5,这条是好教材——保。中间区段需要做样本权重,按 gain 加权进 batch,比硬阈值更平滑。

案例 3:和传统 self-instruct 对比

维度self-instructEVE-Agent
proposer 输出(q, a)(q, a, evidence span)
训练信号answer 是否正确evidence 的边际增益
有无 oracle 数据不需要不需要
可审计难(要事后回溯)天然可审计
抗幻觉累积弱(错误会自我强化)强(无依据样本被滤掉)

EVE 不增加人工标注成本,但把”凭空生成的训练样本”问题堵死了。它的成本主要在 verifier——每条样本要做两次推理(带 evidence + 不带),相当于训练吞吐减半。

案例 4:HotpotQA 上的训练曲线(论文报告)

EVE 在 HotpotQA 上对比 self-instruct baseline,前 5 个 epoch 性能持平,但第 8 个 epoch 之后开始拉开——baseline 因为 OOD 幻觉缓慢退化,EVE 因为 evidence 滤掉了脏数据反而稳定上升。这说明 EVE 的优势是长期累积而不是短期 boost:训练得越久,差距越明显。

案例 5:边际增益不为 0 也未必有用

考虑这种情况:模型不带 evidence 时随机猜对了 50%,带 evidence 时升到 55%。gain=0.05,看似有信号但太弱——可能只是 evidence 引导了某个表面线索(如关键词匹配),不是真在用证据推理。论文建议在 gain 上设 hard threshold(如 0.2),而不是把所有正 gain 样本都收。

案例 6:和 RLHF 的训练信号对比

RLHF 的 reward 来自人类偏好,单一标量信号,无法追溯具体哪段证据起作用。EVE 的训练信号是结构化的——question / answer / evidence / gain 四元组,模型不只是学”这答案是好的”,还学”哪段原文支撑了这答案”。这种结构化反馈对推理类任务尤其重要:单标量奖励学不到推理路径,只能学结果。

踩过的坑

  1. span 太长 verifier 失灵:evidence 取整段 paragraph 时,模型不加它也能从里面找答案,gain 偏低 → 训练信号噪声大;论文实测 ≤ 100 tokens 时 gain 分布最分明。
  2. proposer 偷懒抄 span 当问题:让 question 和 evidence 字面重合度过高,模型只是在做 copy,没学推理;要加去重检查(如 BLEU < 0.3)。
  3. verifier 用同一个模型自己测自己:scoring model 和 trained model 同源会循环偏差;论文建议用一个冻结的 reference model 作为 scorer,定期换不更新。
  4. 多文档场景 span 来源歧义:同一答案在多份文档里都有依据,evidence span 该取谁?目前论文只示范单文档情形,多文档时建议按 retrieval rank 取 top-1,但这是开放问题。

适用 vs 不适用场景

适用:

  • search / RAG agent 训练,需要从大语料自动生成监督信号
  • 高合规要求场景(医疗、法律、金融)——审计追溯是硬要求
  • 想避免幻觉随训练放大的 self-evolving 流水线

不适用:

  • 数学 / 代码 agent——证据不是”原文 span”而是”运行结果”,机制不一样,需要换成执行验证
  • evidence span 难以定位的任务(如总结、创作)——没有 verbatim 锚点
  • 单步 QA 任务——不需要 self-evolving,直接 SFT 更快也更便宜
  • 训练资源紧张时——双倍推理成本不划算,先用 self-instruct 起步再升级

历史小故事(可跳过)

  • 2022:self-instruct 让 LLM 自己造训练数据,开启 self-evolving 路线
  • 2023:constitutional AI 引入”自我打分”,但 scorer 与被训模型同源问题暴露
  • 2024:多篇论文报告 self-instruct 训出来的 agent 在 OOD 上幻觉变多
  • 2025:apex-policy-exploration 等开始把 verifier 拆出来作为独立角色
  • 2026:EVE-Agent 把 verifier 的判别标准从”绝对对错”改成”证据带来的边际增益”

学到什么

  • 自训练流水线的瓶颈不是 proposer 而是 verifier 信号是否可信
  • 让模型对自己负责的方法:要求它给出处,不只是给答案
  • “边际增益”是比”绝对分数”更鲁棒的训练信号——抗作弊
  • 可审计 ≠ 性能损失;EVE 在 ablation 中显示带 evidence 检查反而更稳
  • evidence span 这个数据结构同时承担三个角色:训练样本、验证锚点、审计凭据

延伸阅读

关联

反向链接