
研究者用五个本地小模型做验证投票实验,Claude 更快更便宜但仍选择慢路线
来源标题:Claude was faster and cheaper. We took the scenic route anyway
研究团队让 Llama 3.2 3B、Mistral 7B、Gemma 2 2B、Phi-3 mini 和 Qwen 2.5 3B 五个小模型在单台 Apple M3 Pro 上回答相同问题,先核查各自引用的来源再用固定规则选出答案,并将此方法称为 Verify, Then Vote。整个流程运行约八小时,首篇论文报告了哪些方面变好、一项失败的安全测试,以及如何在不重新询问模型的情况下复现决策。团队指出模型可能共享同一错误,简单投票无法发现。
以下正文由 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 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。