一张抄错了重点的小抄
上下文学习(in-context learning,ICL)有点像允许学生带一张小抄进考场。学生(大语言模型)不改动任何一个参数,只是读几道例题,然后照葫芦画瓢。
所以一切都取决于小抄上抄了哪些例题。常见做法是检索与问题最相似的示例:成本低,效果也常常不错。但回头看看上面的东京例子:三个最近邻都提到了东京,却没有一个是“多少”类的问题。模型看到的是 DESC、LOC 和 HUM,而最诱人的答案 LOC 恰恰是错的。
多放几个示例并不能可靠地解决问题。上下文窗口有限,长提示会消耗显存和算力,无关或重复的示例还会分散模型的注意力。我们需要的是恰到好处的那几个。
在大规模场景下精确找出最优子集几乎不可能:从 n 个候选中挑出 k 个是组合爆炸问题,而评价一个子集唯一可靠的方式,就是一遍又一遍地询问目标模型。查询目标模型的方法以高昂代价换来准确率;不查询的方法速度快,却只能依赖相似度之类的代理指标来评判示例。
两种思考方式
丹尼尔·卡尼曼在《思考,快与慢》中把人的思维分成两种模式。系统 2 缓慢、费力、深思熟虑:列竖式做长除法,逐字推敲合同条款。系统 1 快速而凭直觉:瞥一眼就知道对方生气了,读一句话就觉得哪里不对劲。
我们的论文把这种划分落到了实处。大型目标模型是系统 2:昂贵、能力强,真正负责作答。Jev-LDE 则是挡在它前面的一个小小的系统 1,经过训练后,只需快速看一眼查询和检索到的示例,就能说出:“那个会误导人,换成这个。”
系统 1:Jev-LDE
- 读取查询、检索到的示例以及少量候选
- 从不亲自回答查询,只判断哪些示例有帮助
- 只做一步操作:保留(Keep)、删除(Delete)或替换(Replace)
- 一次贪心生成,决策过程中不调用目标模型
系统 2:目标大语言模型
- 参数冻结,可以是 API 背后的黑盒
- 负责阅读示例、预测答案这项真正的工作
- 每个查询只基于编辑后的示例集调用一次
- 不重新训练,也不为打分而反复查询
这种分工很关键。判断哪些示例有帮助,比解决任务本身容易得多,就像一位好助教即使自己做不出前沿研究,也能一眼挑出令人困惑的例题。正因如此,一个比目标模型小好几倍的模型,依然能为它掌舵。
为什么一次编辑就足以带来改变
动手之前,我们先问了一个直白的问题:从检索到的示例集出发,如果最多只允许改动一个示例,能挖出多少准确率?
在 4-shot 的 TREC 上,我们对每个测试查询尝试了所有合法的单步编辑。如果有一个能偷看真实标签、为每个查询挑出最佳编辑的 Oracle,它相对普通的 Semantic TopK 能让 Llama-3-8B 提升 26.0 个百分点,让 Qwen2.5-7B 提升 16.8 个百分点。相比之下,随机编辑平均几乎毫无作用,最坏情况下甚至是灾难性的。
这张图就是整项工作的动机。单步编辑邻域足够小,可以处理;又足够大,蕴藏着显著收益。在候选池为 16、4-shot 的设置下,它只有 53 种选择;而在大小为 3 或 4 的子集上做全局搜索,则有 2,380 种。诀窍在于学会一种直觉,一眼挑中对的那一个。
试着当一回系统 1
还是那个东京的例子,这次把它的整个单步编辑邻域都摆了出来:1 个保留、3 个删除和 9 个替换。点击任意一种编辑,看看它会怎样改动小抄。然后,让 Jev-LDE 来选。
<think> 查询问的是人口数量。S2 和查询都提到了“东京”,但它的标签是 LOC,正是最具迷惑性的错误答案。C1 同样是“……有多少人口”的句式,标签为 NUM。用 C1 替换 S2。</think><answer>{"action":"Replace","selected_id":"S2","candidate_id":"C1"}</answer>
这是对机制的示意,并非真实的模型输出。这里目标模型的回答是手工编写的,只为说明思路;本文其余部分的数字均来自论文。
13 种编辑中只有 3 种能纠正这个查询。注意这些好编辑的共同点:它们没有加入更多“东京”,而是加入了类型对、标签也对的问题。这正是 Jev-LDE 的提示词要求它做出的判断:匹配任务类型、推理模式、标签边界和答案格式,并警惕那些表面相似、却带着误导性标签的示例。
直觉从何而来
系统 1 并非生来就懂,它靠经验练成。Jev-LDE 也是如此,通过基于可验证奖励的强化学习来学习。奖励简单到极致:编辑之后,冻结的目标大语言模型答对了吗?答对得 1 分,答错得 0 分。
- 设定一个情境。取一个训练查询,用 Semantic TopK 检索出前 k 个示例,并把前 16 名中剩下的示例作为替换候选。
- 让编辑器尝试八种编辑。Jev-LDE 采样八个输出,每个输出都以一个保留、删除或替换操作结尾。
- 每种编辑各问一次目标模型。每个编辑后的示例集都交给冻结的 Meta-Llama-3-8B-Instruct。预测正确得 1 分;预测错误或输出无法解析得 0 分。
- 向优于平均水平的编辑靠拢。GRPO 把每种编辑与组内平均水平比较,将概率向表现更好的编辑倾斜。
有两个设计选择让这一切行之有效。第一,用强化学习而非监督标签:往往有好几种编辑同样有效,并不存在唯一的“正确操作”可供模仿,而强化学习让编辑器去探索,而不是死记一个答案。第二,只在选择真正重要的地方训练:如果某个状态下所有编辑的结果都一样,就没什么可学的,因此只保留那些试探性编辑有成有败的训练状态。
在 AGNews、TREC、DBPedia 和 GSM8K 上经过 752 次更新,编辑器的平均奖励从前 100 次更新的 0.475 上升到最后 100 次的 0.713。
最能说明问题的,是没有这种训练时会发生什么。下面是在 one-shot TREC 上做编辑的五种方式,目标模型都是 Llama-3-8B:
未经训练的小模型,凭直觉还不如什么都不做。经过强化学习后,同一个模型比什么都不做高出 12.8 个百分点。
未经训练的 Qwen3-1.7B 只有 31.2%,远低于直接保留检索示例的 52.8%。即便让大得多的 Llama-3-8B 刻意挑选一种编辑,也只能达到 57.8%。经过后训练,这个 1.7B 的编辑器达到了 65.6%。换句话说,直觉与模型大小无关;它来自“什么真正对目标模型有帮助”的反馈。
快速的一次编辑换来了什么
测试时的流程很短:检索,让 Jev-LDE 用一次贪心生成做出一个编辑,再调用一次目标模型。无需反复为上下文打分,也无需子集搜索。
耗时图最能体现“系统 1”这一设计的价值。像 TopK+ConE 这样借助目标模型为示例排序的方法,耗时是两倍多。Jev-LDE 的开销与纯检索方法相当,准确率却位居榜首。示例预算越紧,收益越大(one-shot 时每个示例都至关重要);在更大的预算下,平均收益依然为正:即使在 8-shot 和 16-shot,一次编辑也在 24 个设置中的 18 个里带来了提升。
一种可以迁移的直觉
Jev-LDE 只从一位“老师” Llama-3-8B 那里、在四个训练基准上获得过反馈,我们也从未重新训练它。但它依然能帮助其他模型、其他数据集和其他检索器:
| 设置 | 新在哪里 | 结果 |
|---|---|---|
| Qwen2.5-7B、Qwen3-8B、Qwen3.5-9B | 未见过的目标模型 | 36 个中 35 个提升 |
| Banking77 意图分类 | 未见过的基准 | 16 个中 14 个提升 |
| SST-2 情感分类 | 未见过的基准 | 全部设置均提升 |
| DeepSeek-V4-Flash,TACRED | 未见过的模型和基准 | +0.3 至 +2.2 |
| DeepSeek-V4-Flash,TREC-50 | 未见过的模型,50 个细粒度标签(与 TREC 领域相近) | +2.4 至 +4.4 |
| 以 BM25、CASE、TopK+ConE 作为检索器 | 不同的初始示例集和候选池 | 24 个中 24 个提升 |
检索器上的结果很好地体现了“即插即用”。在 TREC、Qwen2.5-7B 上,把 Jev-LDE 接在 BM25 之后,各示例预算平均提升 9.8 个百分点;接在 CASE 之后提升 10.2;接在 TopK+ConE 之后,更是提升了惊人的 22.9。不管是谁交出了小抄的初稿,它都知道如何改得更好。
为什么能迁移?我们最好的解释正是“系统 1”:Jev-LDE 不是在解题,而是在判断相关性、冗余度和标签区分,而这些判断在不同的分类问题之间是相通的。需要说明的是,实验并未单独拆分这些因素各自的贡献,因此请把它看作一个合理的解释,而非已被证实的机制。
一点理论,用大白话讲
论文中的两个结果为“局部编辑”的直觉提供了支撑。
就近修复是常态。在一个简化模型中,假设每个检索到的示例指向正确方向的可能性大于指向错误方向,那么一次失败的检索需要超过 h 次替换才能修复的概率,会随 h 呈几何级数下降。检索出错时,通常只错在一处。
动作空间越小,学起来越省。学到一个接近最优的编辑策略所需的反馈量,随可用动作的数量线性增长。在 53 种局部编辑上学习,远比在成千上万个全局子集上学习容易。
系统 1 的下一步
推理任务需要另一根杠杆。在数学题上,编辑示例几乎没有带来变化:GSM8K 上的平均变化不超过一个百分点;在未参与训练的 AQuA-RAT 上,Qwen2.5-7B 和 Llama-3-8B 的准确率分别下降了 0.8 和 1.9 个百分点。我们的理解是:对推理密集型任务而言,在推理阶段给目标模型更多算力,比调整它的示例更划算。与其把小抄写得更好,不如给它更多思考的时间。
但这并不意味着系统 1 就此出局,而是它的职责变了。如今用来决定“展示哪些示例”的那份快速、轻量的判断力,同样可以用来决定“一个查询值得多少推理”:在难题上多花思考 token,在简单题上把它们省下来。让一个小小的系统 1 为更大的系统 2 分配算力,是顺理成章的下一步,也是我们期待探索的方向。
一步操作,一个候选池。Jev-LDE 无法从候选池之外找来示例,也无法修复需要多处协同修改的示例集。候选池也并非越大越好:在 one-shot TREC、Qwen2.5-7B 上,大小为 16 的候选池达到 80.6%,而大小为 32 的只有 79.4%。
结语
想让上下文学习变得更好,并不需要搜索整个提示空间。从检索器给出的结果出发,让一个直觉敏锐的小模型做一次谨慎的编辑,然后只问大语言模型一次。一个快速的系统 1 搭配一个能干的系统 2,事实证明是一种简单、便宜且出人意料地强大的组合。
引用本文
@article{wen2026yoeo,
title = {You Only Edit Once: Incentivizing In-Context Capability
of LLMs via Local Demonstration Refinement},
author = {Wen, Jiarong and Wang, Qi and Qu, Yun and Mao, Yixiu and
Zou, Heming and Chi, Haoang and Cai, Lizhou and Lv, Yiqin and
Zhang, Kaiyu and Jiang, Yuhang and Ji, Xiangyang},
journal = {arXiv preprint arXiv:2609.33609},
year = {2026}
}