Fact-Checking Complex Claims with Program-Guided Reasoning

论文简要 :
本文提出了一种使用程序引导的推理进行事实核查的模型,该模型将复杂声明分解为简单的子任务,并使用专门的函数库来解决这些子任务,从而提供了解释性和数据效率,并在两个具有挑战性的事实核查数据集上取得了优于七个基线模型的结果。
背景信息:
论文背景: 随着虚假信息的泛滥,自动化事实核查成为自然语言处理领域的重要应用。现有的事实核查方法往往只需要从单一文档中获取信息来支持或反驳声明,而对于复杂声明,需要进行多步推理和收集多个证据,这使得事实核查变得更加困难。
过去方案: 过去的研究提出了一些模型来处理复杂声明的事实核查,如基于图的模型,但这些模型在解释性和数据效率方面存在问题。
论文的Motivation: 本文的动机是提出一种既具有解释性又具有数据效率的事实核查模型,通过生成推理程序来解释推理过程,并利用大型语言模型的能力进行少样本学习。
方法:
a. 理论背景:
本文提出了一种名为Program-Guided Fact-Checking (PROGRAMFC)的事实核查模型,将复杂的主张分解为更简单的子任务。它使用大型语言模型生成推理程序,并通过将每个子任务委托给相应的子任务处理程序来执行它们。该模型既具有解释性又具有数据效率,清晰地解释其推理过程,并且需要最少的训练数据。在两个具有挑战性的事实核查数据集上,它优于七个事实核查基线模型。
b. 技术路线:
本文提出了一种名为PROGRAMFC的事实核查框架,将复杂的主张分解为更简单的子任务,并清晰解释其推理过程。它利用大型语言模型进行上下文学习,并且需要最少的训练数据。
假设您想要验证这个陈述:“美国是世界上面积最大的国家。”可以输入这个陈述,然后会生成一个推理程序,即一系列的子任务函数调用,来指导验证过程。例如,可能会生成这样的一个程序:
answer_1 = Question(“美国的面积是多少?”) answer_2 = Question(“世界上哪个国家的面积最大?”) fact_1 = Verify(“{answer_1}大于{answer_2}。”) label = Predict(fact_1)
这个程序包含了四个子任务函数:Question, Verify, Predict和Label。Question函数用于回答一个问题,Verify函数用于验证一个简单的陈述,Predict函数用于根据逻辑表达式预测陈述的真假,Label函数用于输出最终的真假标签。每个函数都有一个输入参数和一个输出变量,例如Question(“美国的面积是多少?”)的输入参数是"美国的面积是多少?",输出变量是answer_1。
在生成了推理程序之后,会执行这个程序,通过调用相应的子任务函数来完成每一步。例如,在执行第一步时,会调用Question函数,并将"美国的面积是多少?"作为输入参数传递给它。然后,会使用内部知识或外部知识源(如维基百科)来查找答案,并将答案存储在变量answer_1中。在执行第二步时,会以同样的方式调用Question函数,并将"世界上哪个国家的面积最大?“作为输入参数传递给它。然后,会将答案存储在变量answer_2中。在执行第三步时,会调用Verify函数,并将”{answer_1}大于{answer_2}。"作为输入参数传递给它。这里,会将变量answer_1和answer_2替换为它们实际的值,例如“983万平方公里大于1700万平方公里。”然后,会根据内部知识或外部知识源来判断这个陈述是否正确,并将结果存储在变量fact_1中。在执行最后一步时,会调用Predict函数,并将fact_1作为输入参数传递给它。然后,会根据fact_1的值来预测陈述的真假,并将结果存储在变量label中。
在完成了推理程序的执行之后,会输出最终的真假标签和推理过程的解释。例如,对于上面的例子,输出可能是:
这个陈述是错误的。 推理过程如下:
首先回答了问题“美国的面积是多少?”,并得到了答案“983万平方公里”。
然后,回答了问题“世界上哪个国家的面积最大?”,并得到了答案“俄罗斯”。
接着,验证了陈述“983万平方公里大于1700万平方公里。”,并得到了结果“错误”。
最后,根据结果“错误”来预测陈述的真假,并得到了标签“错误”
结果:
a. 详细的实验设置:
作者在两个数据集HOVER和FEVEROUS上评估了他们的模型,这些数据集包含需要多步推理的复杂主张。
HOVER数据集包含需要在多个维基百科文章上进行整合和推理的主张,并根据验证主张所需的跳数将其分为子集。
FEVEROUS数据集侧重于对非结构化和结构化数据进行事实核查的复杂主张,证据以来自维基百科的句子形式呈现。
作者使用这两个数据集的验证集进行评估。
b. 详细的实验结果:
PROGRAMFC在8个评估中有7个取得了最佳性能,证明了其有效性。
PROGRAMFC在更深层次的主张上表现更好,随着所需推理深度的增加,性能也更高。
使用推理程序进行分解比一步预测更有效,提高了复杂主张的准确性。
聚合推理程序改善了性能,表明多个推理链可以导致更准确的结果。