再看大模型幻觉问题如何缓解 :Chain-of-Verification-一种基于链式验证思想的自我修正工作解读

680次阅读
没有评论

今天是2023年9月30日,星期六,北京,天气晴,今天是中秋-国庆假期的第二天。

我们借着这个时机,来继续看看一些关于大模型幻觉的问题【这一块我们已经讲了多个工作,包括如何进行评估,如何进行缓解】,假期充电。

最近看到一个较好的工作,Meta的《Chain-of-Verification Reduces Hallucination in Large Language Models》,该工作提出了一种链式验证(CoVe)方法,通过该方法模型首先起草初始回答,然后计划验证问题来核实起草结果,独立回答这些问题以避免受到其他回答的影响,最终生成验证后的回答。

从本质上来说,这是一种通过审议大型语言模型自身的回答并对其进行自我修正来减少幻觉的方法,通过将验证分解为一系列更简单的问题,模型能够以比回答原始查询更高的准确率回答验证问题。

实验证明CoVe方法降低了在各种任务中出现的幻觉,包括基于Wikidata的列表问题,闭书型MultiSpanQA和长文本生成等。

地址:https://arxiv.org/pdf/2309.11495

本文从实现方案、评估方法以及实验结论三个方面进行介绍,供大家一起参考。

一、实现方案

CoVe包含生成基准响应、计划验证、执行验证和生成最终响应4个步骤,如下所示:

再看大模型幻觉问题如何缓解 :Chain-of-Verification-一种基于链式验证思想的自我修正工作解读

其中:

1、生成基准回复

给定一个查询,使用LLM生成回复,采用few shot提示学习来让LLM生成基础回复。

再看大模型幻觉问题如何缓解 :Chain-of-Verification-一种基于链式验证思想的自我修正工作解读

2、计划验证

给定查询和基准回复,生成一个验证问题列表,以帮助自我分析原始回复中是否有任何错误。

以原始查询和基线回复为条件,模型会被提示生成一系列验证问题,以检验原始基线回复中的事实主张。

例如,如果长格式模型回复的一部分包含”美墨战争是1846年至1848年美国和墨西哥之间的武装冲突”,那么检查这些日期的一个可能的验证问题可能是”美墨战争何时开始,何时结束?

此处需要注意,验证问题并不是模板化的,语言模型可以自由地以任何形式提出这些问题,而且这些问题也不必与原文的措辞完全一致。所以,在具体实现上,通过向LLM提供(回答、验证)演示的少量提示来执行此类验证规划。

再看大模型幻觉问题如何缓解 :Chain-of-Verification-一种基于链式验证思想的自我修正工作解读

采用的提示信息如上。

3、执行验证

依次回答每个验证问题,然后对照原始回复检查答案,检查是否存在不一致或错误。有了计划中的验证问题,下一步就是回答这些问题,以评估是否存在任何幻觉。

有趣的是,虽然在这一过程中可以使用检索增强等技术,例如通过搜索引擎进行验证,该工作只考虑在CoVe的所有步骤中使用LLM本身,因此模型是用来检查自身工作的。

改工作研究了验证执行的几种变体,分别称为联合、两步、因子和因子+修订。

首先,在联合方法中,规划和执行(第2步和第3步)是通过使用单个LLM提示来完成的,其中的少量演示包括验证问题及其紧随问题之后的答案。这种方法不需要单独的提示。

再看大模型幻觉问题如何缓解 :Chain-of-Verification-一种基于链式验证思想的自我修正工作解读

这类方法的潜在缺点是,由于验证问题必须以LLM上下文中的基线反应为条件,而且该方法是联合的,因此验证答案也必须以初始反应为条件。这可能会增加重复的可能性,也意味着验证问题可能会产生与原始基线回复类似的幻觉,这就失去了意义。

因此,2步的思想在于,将计划和执行分为不同的步骤,这两个步骤都有各自的LLM提示。规划提示以第一步中的基准回答为条件。规划生成的验证问题在第二步中回答,关键是LLM提示的上下文只包含问题,而不包含原始基准回复,因此不能直接重复这些答案。

再看大模型幻觉问题如何缓解 :Chain-of-Verification-一种基于链式验证思想的自我修正工作解读

因子的思想在于,将所有问题作为单独的提示独立回答,不过这可能会增加计算成本,在具体实现上,将计划验证阶段生成的问题集解析为单独的问题,以逗号分隔的列表形式生成,然后将它们拆分成单独的LLM提示。

再看大模型幻觉问题如何缓解 :Chain-of-Verification-一种基于链式验证思想的自我修正工作解读

因子+修订思想在于在回答了验证问题后,通过额外的LLM提示将其作为一个有意的步骤来执行,检查这些答案是否与原始答案不一致。

4、生成最终校验回复

根据发现的不一致之处(如有),生成包含验证结果的修订回复,通过最后的few shot提示来执行。

二、实验数据集

在实验设置上,使用各种实验基准来衡量CoVe在减少幻觉方面的性能,并与一些基线进行比较。

首先是WIKIDATA数据集,首先使用WikidataAPI在一组自动生成的问题上对CoVe进行测试。

创建了”出生在[城市]的[职业]有哪些?等类似的实体,例如,”有哪些政治家出生在波士顿?这些问题的答案是一组实体,列表是从维基数据知识库中获取的。这就产生了一个包含56个测试问题的数据集,每个问题通常包含600个已知的实体,但通常LLM会生成一个短得多的列表。使用精确度指标(微观平均值)来衡量性能。

其次,QUEST数据集,维基分类列表问题,包括例如”说出一些墨西哥恐怖动画片的名字”或”说出一些越南特有兰花的名字”,整理了数据集中所有不需要逻辑运算的示例,创建了一组55个测试问题,每个问题有8̃个答案。使用精确度指标(微观平均值)来衡量性能。

然后,阅读理解基准MultiSpanQA数据集。 MultiSpanQA包含有多个独立答案的问题,从文本中一系列多个不连续的跨度中得出。使用了由418个问题组成的测试集,每个跨度的答案较短。例如,问:谁在哪一年发明了第一台印刷机?答:约翰内斯-古腾堡(JohannesGutenberg),1450年。使用精确度指标(微观平均值)来衡量性能

最后,长篇传记的生成数据集,模型需根据提示生成所选实体的传记,例如:”告诉我<实体>的传记”。评估指标采用FACTSCORE指标,该指标使用检索增强语言模型对回复进行事实检查(Instruct-Llama,”Llama+Retrieval+NP”)。

在对比模型上,

首先,使用Llama65B作为基础LLM,并对所有模型使用贪婪解码,由于Llama65B没有经过指令微调,采用针对每个任务的少量实例来衡量每个基准的性能。

其次,与Llama指令微调模型进行了比较,使用Llama2

三、实验结论

1、CoVe提高了基于列表的答案任务的精确度

CoVe在基于列表的任务中提高了大量精确度,例如,在维基数据任务中,CoVe的精确度比Llama65B fewshot 基线提高了一倍多(从0.17提高到0.36)。

再看大模型幻觉问题如何缓解 :Chain-of-Verification-一种基于链式验证思想的自我修正工作解读

从正负分类中发现,幻觉答案的数量大幅减少,而非幻觉答案的数量仅有相对较小的减少。

2、CoVe提高了闭卷质检的性能

CoVe在一般质检问题上也有所改进,这是在MultiSpanQA上测得的结果。观察到,F1比很少的基线(0.39→0.48)提高了23%,提高的原因是精确度和CoVe提高了长式生成的精确度。

再看大模型幻觉问题如何缓解 :Chain-of-Verification-一种基于链式验证思想的自我修正工作解读

FACTSCORE比很少的基线提高了28%(55.9→71.4),而所提供事实的平均数量也只有相对较小的减少(16.6→12.3)。还在图2中显示了不同事实的改进情况,可以看出CoVe对罕见事实和更常见事实的结果都有改进。

3、指令微调和CoT并未减少幻觉

在所有任务中,采用预训练Llama模型的少量实例基线优于指令调整模型Llama2Chat。fewshot的示例会引导模型给出符合任务预期的输出结果,而一般的指令调整则会产生更多幻觉或错误输出。

标准的思维链(CoT)提示也未能改善这些任务的结果。虽然事实证明,CoT对推理任务有帮助,但它似乎不太适合在这项工作中测量的幻觉问题。

4、因子式CoVe和两步式CoVe可提高性能

与联合CoVe相比,采用因子式CoVe方法可在所有任务中持续提高性能。例如,在长表生成中,FACTSCORE的性能从60.8提升到63.7。

再看大模型幻觉问题如何缓解 :Chain-of-Verification-一种基于链式验证思想的自我修正工作解读

同样,在维基数据和维基分类列表任务的测试中,两步法也优于联合法,其中两步法在维基数据中的结果最好,而在维基分类中的结果最好。

5、进一步明确推理有助于消除幻觉

在长表生成任务中,CoVe”因素+修订”方法中更复杂的推理步骤,该方法明确交叉检查验证答案是否表明存在不一致。通过这种进一步的明确推理,FACTSCORE指标从63.7(因子)→71.4(因子+修正)有了大幅提高。

再看大模型幻觉问题如何缓解 :Chain-of-Verification-一种基于链式验证思想的自我修正工作解读

这进一步表明,在LLM中进行适当和明确的推理可在减少幻觉方面带来改进。

6、基于CoVe的Llama优于InstructGPTChatGPT和PerplexityAI

在长表单生成任务中,的基线Llama65B在FACTSCORE指标方面优于ChatGPT和PerplexityAI模型。

然而,将CoVe应用于基线Llama65B后,其性能不仅超过了ChatGPT和PerplexityAI,还超过了InstructGPT。

与PerplexityAI相比,这一点尤其令人印象深刻,因为PerplexityAI是一个可以通过检索增强来支持其事实的模型,而CoVe仅使用基础语言模型本身,并通过验证来改进推理。

然而,可以从图2中看到,在检索非常重要的罕见事实方面,PerplexityAI的表现仍然优于CoVe,但在更高频的事实方面,CoVe的表现优于PerplexityAI

7、短式验证问题比长式查询回答得更准确

在长式回答中,LLM很容易产生一些幻觉。然而,通常情况下,如果专门针对个别事实进行询问,LLM本身就会知道这些幻觉是错误的,与长表生成的其他部分无关

这可以从维基数据任务中定量看出,在基于列表的问题中,只有∼17%的Llama少量基线答案实体是正确的。然而,当通过验证问题对每个实体进行查询时,发现有70%的实体得到了正确回答。

8、基于LLM的验证问题优于启发式方法

在CoVe中,验证问题是由LLM根据任务生成的。对于答案中包含元素X的基于列表的问题,将LLM问题替换为”X是否回答了问题”形式的是/否模板问题,可以将这些问题的质量与启发式方法生成的问题进行比较,以衡量其质量。

再看大模型幻觉问题如何缓解 :Chain-of-Verification-一种基于链式验证思想的自我修正工作解读

表4所示的维基类别任务结果显示,基于规则的验证问题的精确度有所降低,这种差异在长表生成中会更大,因为在长表生成中,所需的验证问题类型可能更加多样,基于LLM的验证变得更加必要。

9、开放式验证问题优于基于”是/否”的问题

该试验使用了预期答案为真实事实的验证问题,或者将事实作为验证问题的一部分,并以”是/否”的回答格式提出。

再看大模型幻觉问题如何缓解 :Chain-of-Verification-一种基于链式验证思想的自我修正工作解读

表4中评估了这一差异,表明是/否类型的问题在事实版本的CoVe中表现较差,无论事实是对是错,模型都倾向于同意”是/否”问题格式的事实。

总结

本文主要介绍了《Chain-of-Verification Reduces Hallucination in Large Language Models》这一工作,其中通过模型内部自我修正的方案,值得我们借鉴,该方法旨在让大型语言模型通过花费更多时间思考来识别自身错误,从而产生更好的回复。

不过,我们需要注意的是,虽然的验证链(CoVe)方法旨在减少幻觉,但并不能完全消除幻觉。

此外,CoVe生成的各代推理都带有验证,如果用户查看这些验证,就能为其决策增加更多可解释性,但这是以增加计算量为代价的,因为要在输出中生成更多token,这与Chain-of-Thought等其他推理方法类似。

虽然已经证明这能带来明显的改进,但改进的上限显然受限于模型的整体能力,例如在识别和了解其已知内容方面,因此,借助外部知识库增强的方法,让语言模型使用外部工具,以获得其权重存储之外的更多信息,将是一个可以互相增强和融合方案。

参考文献

1、https://arxiv.org/pdf/2309.11495

关于我们

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。

对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。

​​​       

 

Read More 

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 
评论(没有评论)
Generated by Feedzy