【论文浅尝】KBLLaMA: A Learn-Then-Reason Model Towards Generalizationin Knowledge Base Question Answering

引言:

        许多研究受益于预先训练的语言模型(PLM),如BERT、BART 和T5 ,以增强KBQA模型的泛化能力。通常,基于检索器的模型,如FC-KBQA 使用检索器来识别与问题最相关的关系和类。然后,检索到的元素与问题一起被输入到PLM中,以产生逻辑表达式。最近,受大型语言模型(LLM)显著成功的推动,一些方法将检索到的元素输入LLM以生成逻辑表达式。广泛的模型参数和庞大的训练语料库使LLM能够获取大量的知识,并在知识推理方面表现出良好的能力。然而,这些先检索后推理的方法受到了复杂的多模块框架的阻碍。更重要的是,即使是高级的法学硕士和检索师也有知识边界,尤其是在金融和医学等特定领域。现有的方法忽略了将新的/看不见的知识库知识结合到它们的模型参数中,从而限制了它们的泛化能力,特别是在跨知识库设置中。

        为了解决这个问题,我们提出了一种先学习再推理的方法,旨在将新的知识库知识结合到端到端知识库的LLM模型参数中(如下图)。更具体地说,我们将有关KBQA任务的新知识组织为< question,logical_expression >训练对,这些训练对随后用于微调流行的开源LLaMA2-7B ,以派生出我们命名为KBLLaMA的KBQA模型。

 主要贡献:

  • 我们提出了一种先学习后推理的知识库问答方法,该方法将新的知识库知识加入到模型参数中,从根本上提高了模型的泛化能力。(微调)
  • 我们提出了一个知识库感知数据构建策略,用于确定和组织要学习的新知识,确保生成数据的多样性和质量,同时保持效率和有效性之间的平衡。(聚类)

相关工作:

        大量的研究集中在知识库的泛化问题上,根据是否使用LLMs,这些研究可以分为传统的知识库问答方法和基于LLM的知识库问答方法。

基于SP的KBQA

        基于SP的KBQA是目前最有效和最流行的KBQA框架,它首先将问题翻译成逻辑表达式,然后通过在KBs上执行逻辑表达式来产生答案。为了适应非分布问题,一些基于SP的方法,如GrailQA-Rank和QGG ,采用了基于PLM的Rank模块,用于问题和逻辑表达式之间的语义匹配。这些方法列举与知识库相关联的逻辑表达式候选或查询图(查询图可以被转换成逻辑表达式),并根据它们与给定问题的相关性对它们进行排序。除了基于排序的模型之外,另一系列基于SP的方法通过生成模型产生逻辑表达式。这些方法使用基于排名的模型作为检索器来获取相关的知识库信息,然后将其用作输入到生成模型中的扩充。例如,RNG-KBQA采用排名前k的候选逻辑表达式作为扩充。

通过检索知识库组件,如关系、类和逻辑框架,提出了更细粒度的扩充。特别是,ChatKBQA 采用了一个生成然后检索的框架,该框架首先微调LLaMA模型以生成原始逻辑表达式候选项,然后检索关系候选项以细化逻辑表达式。虽然上述方法可以减轻KBQA中的泛化问题,但是它们没有将关于KBQA任务的新知识嵌入到模型参数中,从而限制了它们的能力,特别是在跨KB设置中。这项工作提出了另一种观点,通过将新的知识库知识注入到模型参数中来增强模型在知识库内和跨知识库设置中的性能。

基于LLM的KBQA

        为了扩展KBQA模型的知识,利用了ChatGPT或LLaMA等LLM。例如,Tan等人直接采用GPT-3.5来生成响应自然问题的答案,并结合答案匹配策略来提高预测准确性。为了处理更复杂的问题,StructGPT构建了专门的接口来从结构化数据(如知识库)中检索相关证据。考虑到LLM在代码生成任务上表现良好,KB-coder 引入了代码风格的上下文学习方法,将KB逻辑表达式生成过程转化为类似Python的代码生成过程。

        除了上面的免训练模型,一些方法将复杂的问题推理分解成多个步骤,并利用训练过的检索器来增强每个步骤。KD-CoT [30]通过制定CoT基本原理过程来实现检索器-阅读器-验证器框架,从而将问题解耦。或者,Keqing基于预定义的模板分解复杂问题,检索每个子问题的候选实体,并最终生成带有推理路径的响应。FlexKBQA 从LLM中提取知识,以进一步优化传统的KBQA模RNG-KBQA。

KBLLAMA:learn-then-reason model

  •  知识组织:我们将关于KBQA的未知知识构建为<问题,逻辑表达式>对,以扩充我们的训练数据。为此,我们创建了多个逻辑表达式,并将它们的关键元素馈入GPT-3.5,通过KB约束的上下文学习生成相应的问题。希望增加的数据包括查询的知识库中的所有关系。然而,枚举关于被查询的知识库的所有可能的逻辑表达式在计算上是低效的。为了确保增加的数据的多样性而不穷举所有的逻辑表达式,我们设计了一种基于聚类的策略来创建一组不同的逻辑表达式。此外,我们引入了反向检查策略,以消除低质量生成的问题,提高我们的增强数据的质量。
  • 知识学习: 我们利用有组织的新知识,即扩充的<问题,逻辑表达式>训练对来微调开源的LLaMA2-7B以导出KBLLaMA。为了促进KBLLaMA的学习,我们遵循思维链COT的思想,通过加入被查询的KB的名称和逻辑表达式的解释来精炼扩充的<问题,逻辑表达式>对。此细化过程会生成<问题,知识库名称;解释;逻辑表达式>对。KBLLaMA被训练生成实体提及而不是实体id,实体id是没有语义信息的数值,不利于KBLLaMA的学习。因此,我们使用一个可训练的实体链接器来匹配实体提及和特定的实体id。

知识组织:

基于聚类的多样化逻辑表达式创建
关系是逻辑表达式中的基础,反映了逻辑表达式的主要含义。保持逻辑表达式多样性的关键在于确保一组不同的关系。

<关系选择>。为了构造一跳逻辑表达式,我们采用知识库中的所有关系。为了构造多跳逻辑表达式,我们设计了一种基于聚类的策略来选择关系的组合,而不是进行穷举。更清楚地说,我们利用BERT 通过对最后一个隐藏层中的关系token的表示进行平均来计算每个关系的embedding。然后,我们使用经典的K-Means算法来基于它们的嵌入对关系进行聚类,其中聚类的数量被设置为知识库本体中的类的数量。聚类之后,我们从每个聚类中随机选择一个关系子集,创建一个候选关系池。随后,从这个池中,我们对多个关系进行采样,以构建关系的组合。

<逻辑表达式构造>。对于每个关系或关系组合,我们通过添加其连接的类、实体和逻辑运算符,将其扩展为最终的逻辑表达式。具体来说,给定一个本体为O = {(C × R × C)},对于一个关系r ∈ R,我们首先选择一个表示答案实体类型的类c,然后我们选择一个实体作为逻辑表达式中的主实体。为了保证逻辑表达式的可执行性,类 c 选自关系 r 的主要类集合,并且满足其属于一个本体,实体e从范围实体集中选取,满足来自同一实体集的某实体存在关系r。如果e的类型是literal,我们从值运算符集合{ARGMAX,ARGMIN,GT,GE,LT,LE,EQ}中选择一个逻辑函数,否则从实体运算符集合{COUNT,AND,TOP,NONE}中选择。结合这些组件(即,关系、类、实体和逻辑运算符),我们将关系r扩展为一跳逻辑表达式s。对于具有多个关系的复杂逻辑表达式,我们通过增量生成一跳逻辑表达式并将其串联来构造它们。例如,给定两个关系(r1,r2 ),其中r1和r2在知识库中是有链接的,我们首先对于关系r1和r2来构造逻辑表达式s1和s2,然后,我们将=s2附加到s1,以导出多跳逻辑表达式。

<通过多样化演示生成问题>。我们设计了一个KB约束的提示来指示GPT-3.5生成自然语言问题。提示由一条指令和一个逻辑表达式组成。指令是“只给出下面的信息,按照例子,根据给定的模式提示问一个事实问题”。逻辑表达式由一个提示“relation“,class,entity,logical Operator;对于每个提示,上下文学习(ICL)演示都放在提示之前。

除了传统的方法,如随机演示选择或在所有目标提示中统一使用相同的演示,我们引入了多样化的演示选择策略,以鼓励GPT-3.5产生更多样化的问题。

为了实现这一策略,我们首先构建一个问题池,其中的问题是从现有的通用KBQA基准数据集中抽取的,然后利用BERT将问题分别嵌入到池中和目标提示中。为了确保演示的多样性,我们使用经典的K-Means算法根据问题的嵌入性对问题进行聚类。聚类的数量被设置为知识库本体中的类的数量。然后,我们计算目标提示的嵌入和每个聚类中心之间的余弦相似度。我们从最相关的群中选择푘问题,确保它们有独特的句子结构。这是通过将集群中的问题再次聚类到k类中并从每组中随机选择一个问题实现。所选问题及其相应的逻辑表达式构成了目标提示的相关演示。值得注意的是,我们屏蔽了每个问题中的实体提及,使得聚类算法专注于相关信息的语义,而不是特定的实例。

<反向检查>。考虑到GPT-3.5潜在的错误生成,我们采用反向检查策略过滤掉生成的低质量问题。给定一个问题和logical_expression对,我们首先将s-expression形式转换为SPARQL并执行它以从KB中获得答案集A。然后,我们让GPT-3.5判断获得的答案A是否与生成的问题一致,使用以下提示:“A是问题q的答案集吗?”请回答YES或NO。”需要注意的是,在答案集包含大量答案的情况下,我们随机抽取5个答案进行检查。任何收到“NO”响应的对都将被丢弃。

此外,一些生成的问题使用自然语言很流利,但用户可能不经常问。一个典型的例子是,“谁和奥巴马的女儿是同性?”为了过滤掉这些非典型问题,我们利用GPT-3.5来评估每个问题由用户提出的可能性,通过提示:“得分1-10,其中1表示该问题不太可能被问到,10表示该问题经常被问到。请给问题q打分: ”。得分低于3分的问题被认为不可能被用户查询。因此,我们从增强数据中排除了这些问题的训练对。

知识学习:

<知识细化>。由于LLaMA2的主要目标是理解自然语言而不是逻辑表达式,我们通过添加查询的知识库名称并提供逻辑表达式的自然语言解释来细化训练数据中的每个响应,将形式的训练对扩展为<问题,知识库名称,解释,逻辑形式>。解释包括与查询相关的关系、类和实体,以及逻辑表达式的描述。考虑到实体id缺乏作为数值的语义信息,我们提示KBLLaMA生成实体提及。这些提及是在自然语言格式,加强学习过程。因此,我们用训练数据中的逻辑表达式中相应的提及替换实体id。此外,我们将逻辑运算符转换为更容易理解的描述,例如将ARGMAX替换为MAX。这种适应允许KBLLaMA有效地处理具有不同本体的多个KBs。

<模型的训练>。利用组织好的知识,我们对LLaMA2-7B进行微调,将自然语言问题作为输入,然后输出相应的逻辑表达式并进行解释。由于输出的是实体提及而不是ID,因此我们训练了一个实体链接器来识别每个生成的实体提及的实体ID。给定一个问题q和KBLLaMA相应的输出逻辑表达式,我们从逻辑表达式中提取实体提及,并搜索名称或别名与提及有令牌重叠的候选实体。我们将问题q和每个候选实体的描述连接,并将其输入到预训练的LLaMA2 (7B)中,得到最后一个密集层的归一化logits z。与T5-rank类似,使用特殊令牌“<extra_id_10>”的logit来分类候选实体是否与问题一致。实体ID的基本真值标签是从增强的问题逻辑形式对中获得的,其中我们可以从逻辑表达式中获得基本真值实体ID。我们采用经典的分类目标——交叉熵来训练实体链接器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是饿梦啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值