
研究用五个本地小模型验证来源后再投票选答案
来源标题:Claude was faster and cheaper. We took the scenic route anyway
一项名为「Verify, Then Vote」的研究让五个本地小模型对同一问题检索并作答,先核查各自引用的来源、再用固定规则选出答案,而非简单投票。实验使用 Llama 3.2 3B、Mistral 7B、Gemma 2 2B、Phi-3 mini 和 Qwen 2.5 3B,在 36GB 内存的 Apple M3 Pro 上通过 Ollama 运行约八小时完成。论文报告了哪些方面有所改善、一项安全测试未通过,以及如何在不重新询问模型的情况下复现决策。
以下正文由 AI 翻译自 Hacker News(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
Claude更快也更便宜。我们还是绕了远路
我们让五个小型本地模型回答同样的问题,并在选定答案前核查了它们的引用来源。我们的第一篇论文报告了哪些方面有所改善、一项失败的安全测试,以及我们如何在不重新询问模型的情况下重跑决策。
我们想看看几个小模型在一台机器上能跑多远。我们让五个模型回答同一个问题,允许它们查阅资料,然后比较它们的答案。它们经常给出不一致的答案。显而易见的解决办法是投票,但模型可能犯同样的错误,而投票无法发现这一点。
于是我们尝试了另一种方法:核查每个模型引用的来源,然后用固定规则选出答案。我们把这篇论文称为Verify, Then Vote。我们始终保持回答、核查和选择是分开的步骤,并保存每一步的结果,这样我们就可以回溯并复用它们。
我们使用了Llama 3.2 3B、Mistral 7B、Gemma 2 2B、Phi-3 mini和Qwen 2.5 3B,通过Ollama运行在一台配备36 GB内存的Apple M3 Pro上。我们让它运行了一整夜,大约八小时完成。
每个模型写出一条搜索查询,并得到五段文本:一般性问题来自Wikipedia,科学论断来自研究摘要。然后它给出一个答案,说明自己的置信度,并引用最多三段文本。我们在选定任何答案之前保存了所有内容。
为了核查来源,我们使用Claude Sonnet 5.5作为单独托管的模型。它只看到一句陈述答案的话和一段被引用的文本,并判断该文本是支持该答案、与之矛盾,还是信息不足。它从未看到正确答案。
如果一段文本说悉尼是澳大利亚的首都,它就支持“悉尼”这个答案,尽管首都是堪培拉。我们的核查问的是该文本是否支持该答案,而不是该文本是否真实。
我们的规则从得票最多的答案开始,并以相同方式打破平局。只有当核查器表示某段被引用的文本支持另一个答案时,它才会切换到该答案。每次切换都会记录相关文本和背后的核查,因此我们可以看清切换的原因。
我们还用Lean 4(一种检查数学证明的软件)证明了关于该规则的一件事:如果该规则把正确答案换成错误答案,那一定是某次来源核查支持了错误答案。这告诉我们出问题时应从哪里查起。它并不证明来源是真实的,也不证明核查器正确理解了它。
我们在一个单独的练习集上调整了设置,然后在1,000道主题目上运行该规则。准确率从简单多数投票的77.1%提升到我们规则的85.0%。
在其中526道题上,模型给出了正确和错误答案的混合。在那里,该规则纠正了投票答错的91个答案,破坏了投票答对的12个答案,将准确率从71.5%提升到86.5%。有一点需要注意:投票是随机打破平局的,而我们的规则总是以相同方式打破平局,因此部分提升来自平局处理方式的不同。
在开始之前,我们设定了该规则最多可以破坏多少个正确答案的上限。在投票答对的376个答案中,该规则弄错了12个(3.2%)。考虑到随机因素,真实比例可能高达5.5%,高于我们5%的上限。因此,原始规则未能通过我们的测试。我们在收集数据之前写下了计划和分析,不过我们并未将它们提交到公共登记处。
我们还想知道核查器是否真的在阅读那些文本。于是我们把被引用的文本移除或替换为无关文本后再次运行。无论哪种方式,91个纠正中有76个消失了。文本确实起了作用,不过当正确的文本摆在面前时,Sonnet可能仍然依赖它已经知道的内容。
这一结果提示了一条更谨慎的规则:如果起始答案已经有来源支持,就保留它。我们在从五个不同模型收集同一批问题的答案之前写下了这一改动,并在答案和文本相同的地方复用了已有的核查。
使用新模型时,547道题有正确和错误答案的混合。修订后的规则纠正了73个,破坏了3个,将准确率从73.1%提升到85.9%。在投票答对的400个答案中,有3个变成错误(0.75%),最坏情况比例为2.2%,远低于我们5%的上限。
因此,修订后的规则在一组新模型上通过了测试。由于问题相同,而且我们是在看到第一批结果之后才设计这一改动的,这表说明该规则可以沿用到其他模型,而不是说它适用于新问题。
我们也尝试了后者。给定相同的答案和文本,Sonnet在第一组526道混合题上以93.9%的正确率选出了正确答案,而我们规则的这一比例为86.5%。它还更便宜:每题约$0.014,而核查来源为$0.021。这两个数字都不包括模型撰写答案的成本。
所以Sonnet更擅长做第一判断。我们的方法则在之后发挥作用。由于每次核查都被保存,我们可以准确看到某个答案为何被选中,并尝试不同的规则而无需为新核查付费。你也可以记录评审模型的选择,但要求它重新选择意味着另一次调用。
在全部1,100道题(包括来自TruthfulQA的单独100道题)中,模型在702道题上存在分歧。为了了解每个模型的影响程度,一个Python脚本每次移除一个模型,并将剩余的已保存答案交给我们的Rust程序重新选择。每道题重跑五次,总共3,510次。
所有这些仅耗时23秒,且没有新的模型调用。被选中的答案有9.4%的时间发生了变化,这表明结果在多大程度上取决于哪些模型参与。重跑全部1,100个原始决策得到了完全相同的输出。
这之所以可行,是因为回答、核查和选择保持分离。我们可以在已保存的答案和核查不变的情况下改变答案的选择方式。新的答案或来源则需要新的核查。
接下来我们需要新问题,而不仅仅是新规则。由于我们保留了每一次运行,我们可以深入分析某个决策、修改规则并在花钱收集更多答案之前衡量其效果。
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。