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