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 的思路可以拆成 三步:
-
proposer 出三件套,不是两件套:传统是 (question, answer),EVE 加一个 evidence span——“这道题的答案出自原文哪段”。类比:考研出题人不只给题和答案,还得标第几页第几行。这一步把 evidence 从”事后补的引用”提升成”出题时的硬约束”。
-
verifier 测边际增益,不测绝对正确:把 evidence 喂给模型 vs 不喂,看回答质量差多少。差距大 → 这段 evidence 有用 → 这条训练数据可用。差距 0 → 模型本来就会,evidence 是装饰 → 丢掉。这一步对应论文的 “marginal accuracy gain”,比传统 reward 更难被作弊。
-
训练信号天然可审计:每条进 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-instruct | EVE-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 四元组,模型不只是学”这答案是好的”,还学”哪段原文支撑了这答案”。这种结构化反馈对推理类任务尤其重要:单标量奖励学不到推理路径,只能学结果。
踩过的坑
- span 太长 verifier 失灵:evidence 取整段 paragraph 时,模型不加它也能从里面找答案,gain 偏低 → 训练信号噪声大;论文实测 ≤ 100 tokens 时 gain 分布最分明。
- proposer 偷懒抄 span 当问题:让 question 和 evidence 字面重合度过高,模型只是在做 copy,没学推理;要加去重检查(如 BLEU < 0.3)。
- verifier 用同一个模型自己测自己:scoring model 和 trained model 同源会循环偏差;论文建议用一个冻结的 reference model 作为 scorer,定期换不更新。
- 多文档场景 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 这个数据结构同时承担三个角色:训练样本、验证锚点、审计凭据
延伸阅读
- arXiv 2605.22905 — EVE-Agent 原论文
- self-evolving-agents-survey — 自演化 agent 综述,含 verifier 章节
- apex-policy-exploration — proposer-solver 框架的策略探索版
- evo-memory-2511 — agent 经验如何沉淀为长期记忆
- misevolution-2509 — verifier 失灵会让 self-evolving 反向退化
关联
- self-evolving-agents-survey —— 综述里把 EVE 归入”verifier-heavy”分支
- apex-policy-exploration —— 同样关注 proposer-verifier 不对称问题
- misevolution-2509 —— 反例:当 verifier 失灵时 self-evolving 如何崩
- evo-memory-2511 —— evidence span 可以进 long-term memory 当凭证
- code-as-agent-harness —— code agent 的 verifier 用的是执行结果不是 span
- exg-experience-graphs —— 经验图谱也用 marginal gain 做边权
- llm-wiki-retrieval-reasoning —— 把 retrieval 当 reasoning,evidence 也成一等公民
- memcoder-co-evolution —— memcoder 的 commit 也是另一种 evidence 锚点
反向链接
- agent-r1-2511 —— Agent-R1 — 把 LLM agent 当 RL 环境训练的模块化框架
- apex-policy-exploration —— APEX — 给自进化 agent 配一张”策略图”防止它走老路
- code-as-agent-harness —— Code as Agent Harness — 把代码当 agent 的”骨架”来重新看 agentic AI
- evo-memory-2511 —— Evo-Memory — 给”会自己长记性”的 agent 出一份统一考卷
- exg-experience-graphs —— EXG 经验图 — 把 agent 的成败拼成一张可复用的关系图
- llm-wiki-retrieval-reasoning —— LLM-Wiki — 把外部知识编译成 agent 自己的”维基”
- memcoder-co-evolution —— MemCoder — code agent 跟着你 git commit 一起成长
- misevolution-2509 —— Misevolution — 自进化 agent 也会”越改越坏”,连顶配模型也躲不过
- self-evolving-agents-survey —— 自进化 AI agent 综述 — 给”会自己升级”的 agent 画一张统一地图
- self-evolving-recsys-2602 —— Self-Evolving RecSys — 让 LLM agent 自己跑超参实验上线
- self-evolving-software-agents —— BDI-LLM Self-Evolving Agents — 让 agent 自己改自己源代码