大模型的幻觉问题,又有新的解决方法了!
Meta AI 实验室提出了一种“分而治之”的解决方案。
有了这个方案,Llama-65B 输出的信息准确率提升了一倍,甚至超过了 ChatGPT。
所谓大模型幻觉,就是输出一些看似合理但完全不对的内容。
Meta 此次提出的“验证链”,是与“思维链”(CoT)相似的一种链式方法。
区别在于,“step-by-step”的思维链更关注逻辑推理,而验证链更注重事实信息。
有网友看了之后发现,这个验证链很像是自己用 ChatGPT 写代码时的一种科学方法:
那么“验证链”究竟是个什么方法,“验证”的又是什么呢?
拆解答案,分而治之
验证链的核心思想,是把要验证的一大段内容,拆解成一个个小的问题,具体流程是这样的:
首先,模型会根据用户提出的问题照常生成回复。
接着,根据生成的回复内容,针对其中的各项信息,生成一系列的验证问题。
然后让模型自行回答其所提出的这些问题,并根据结果对初始答案进行调整,得到最终结果。
举个简单的例子,假如想询问模型 19 世纪美墨战争的主要原因是什么。
模型回答了事件发生的时间,以及在这之前都发生了什么事。
之后针对这一系列事件,逐一询问它们是什么时候发生的。
于是,模型发现自己提到的一项内容时间相差太远,调整后给出了最终的答案。
其中,问题的生成和验证是最关键的一环,对此,研究人员一共提出了四种具体的方式:
-
Joint,即将生成问题和回答的指令写入同一段提示词
-
2-Step,即先让模型生成提问,然后开启新的对话回答提出的问题
-
Factored,在 2-Step 的基础上,对提出的每一个问题分别开启新对话
-
Factor+Revise,在 Factored 的基础之上加入一致性检验,让模型重点关注前后不一致的内容
这四种模式越来越细化,准确率也是越来越高。
那么为什么拆分提问就能提高模型的准确性呢?
首先是因为拆解后的问题比整体任务更容易,论述题变成了问答甚至选择、判断题,问题简单了,准确率也就提升了。
此外,把问题分解可以让模型真正重新思考,而不是反复地重复错误答案。
那么,验证链方式的效果究竟如何呢?
信息准确率超过 ChatGPT
为了探究这一问题,研究人员用 Llama 进行了测试,测试任务一共有三项。
首先是信息列举,比如列举出出生于某地、从事某行业的名人。
这项任务中,研究人员一共测试了两个数据集 —— 简单一些的 Wikidata 和从难一些的 Wiki-Category list。
结果发现,65B 参数的 Llama,在 two-step 模式的验证链加持下,简单问题的准确度从 0.17 提升到了 0.36,增加了一倍还多,复杂问题准确度也接近翻番。
接下来是“闭域问答”题,研究人员从 MultiSpanQA 数据集中抽取多个不连续信息进行挖空提问。
比如“谁在哪一年创建了世界上第一家出版社”。
结果,Cove 也为 Llama 带来了 20% 左右的准确度提升。
第三项任务是“长段文本传记生成”,问题就是“Tell me a bio of ”,使用 FactScore 数据集进行评价。
结果在 Factor+Reviese 模式下,准确率不仅比无验证链模式大幅提高,还超过了 ChatGPT。
对这项研究感兴趣的朋友,可以到论文中了解更多细节。
论文地址: