论文笔记:Beyond I.I.D.: Three Levels of Generalization for Question Answering (中)

259 阅读7分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情

导语

4 建模

在本节中,我们将讨论非i.i.d设定带来的一些泛化挑战和潜在的解决方案。本文所提出的模型,通过在GrailQA上进行实验,使我们能够评估和比较不同的策略,以获得更强的泛化能力。

与独立泛化(i.i.d.)相比,组合泛化和零样本泛化提出了两个独特的挑战:巨大的搜索空间和语言-本体对齐(large search space and language-ontology alignment)。第一个挑战是巨大的搜索空间。在i.i.d.假设下,模型只需要考虑训练过程中观察到的本体部分。然而,对于零样本泛化,不能假设schema在测试时保持不变,需要考虑整个本体。仅从训练数据中构建词汇表的模型几乎肯定会在零样本泛化方面失败。因此,针对特定问题的搜索空间修剪比i.i.d.设置更重要。其次,KBQA中的一个主要挑战是在自然语言和本体中的模式项之间建立精确的对齐,以便理解每个问题所询问的内容。虽然这对于i.i.d的推广已经很重要了,但对于非i.i.d泛化来说就更加重要:对于零样本泛化,显然需要理解未见过的模式项,以便可能处理相应的问题。即使对于组合泛化,模式项在训练中被覆盖,精确的语言-本体对齐仍然是至关重要的,以便模型生成新的组合,而不是在训练中记忆的东西。传统方法使用web挖掘从自然语言短语到知识库模式项构建词典,可能会偏向于流行模式项。BERT等预训练上下文嵌入的出现为构建语言本体对齐提供了另一种解决方案。本文提出了一个基于bert的KBQA模型,使我们能够检查非i.i.d中预训练的上下文嵌入的泛化有效性。

4.1 模型概览

我们的目标是将输入问句q=x1,×,xqq=x_1,\times,x_{|q|}转化为对应的逻辑形式a=y1,×,yaa=y_1,\times,y_|a|,整个模型基于Seq2Seq,该模型在许多语义解析任务中常用。Seq2Seq包括一个将输入𝑞编码为向量的编码器和一个根据输入表示自回归输出一个标记𝑦'∈V的解码器,其中V是解码词汇表。具体地,条件概率𝑝(𝑎|𝑞)可分解为:

image.png

其中y<t=y1,×,yt1y_{<t} = y_1, \times, y_{t-1}。编码器和解码器是两个不同的LSTM。它在每个时间步递归地处理一个token,如下所示:

image.png

其中gtg_ttt-th步骤中输入令牌的表示,ht1h_{t−1}是上一个时间步骤的隐藏状态。在编码期间,gt=f(q,V,t)g_t=f(q,V,t),𝑓是一个函数,将q,V,tq,V,t作为输入并返回xtx_t的嵌入;解码时gt=[W]ytg_t = [W]_{y_t},表示嵌入矩阵WRV×dW \in R^{|V| \times d}yty_t对应的嵌入。我们将在下一小节中详细说明如何使用BERT来定义𝑓和W。

在解码过程中,模型根据当前隐藏状态hth_t和W计算每个输出token的概率:

image.png

这意味着我们在Seq2Seq术语中使用W来共享输入和输出嵌入。通过这种方式,我们可以从预训练的嵌入中为单词分配语义含义,这可以促进开放词汇学习。

4.2 BERT编码

现在我们讨论如何使用BERT来计算W和f(q,V,t)f(q,V,t)。BERT已经证明了它在跨领域文本到sql解析中利用上下文表示学习良好对齐的有效性。具体来说,在text-to-SQL中,Hwang等人通过将问题和所有词汇项连接在一起来构建BERT的输入,成功地应用了BERT。然而,KBQA中的词汇量要大得多。直接这样做会超过BERT的最大输入长度(512个token)。为了解决这个问题,我们将V中的项目分割为块,然后将每个块与𝑞独立连接,并将它们一个接一个地提供给BERT。图3描述了一个示例,其中每个块有来自v的2项。具体来说,𝑞与每个块由特殊标记“[SEP]”分隔,同一块内的项由“;”分隔。然后f(q,V,t)f(q,V,t)可以简单地定义为第一个块的BERT输出tt-th。对于W,通过对BERT的输出进行平均来计算每行对应项的单词。例如,W中architecture.venue.capacity对应的行是通过对第一个分块中单词“architecture”、“venue”和“capacity”的BERT输出进行平均来计算的,如图3所示。

image.png

构建词表:我们还没有讨论VV的组成部分。最简单的方法就是从知识库本体中包含所有的模式项来处理零样本泛化。然而,这不仅会在解码过程中导致巨大的搜索空间,使预测变得非常困难,还会使训练变得非常耗时,因为我们需要为每个问题创建大量的块来提供给BERT。为了减小VV的大小,我们利用从𝑞中识别的实体作为知识库中的anchor,并选择只包含在知识库中2跳内至少一个anchor entity可访问的KB项。我们将其称为词汇修剪(VP,vocabulary pruning),在训练和推理过程中都应用。这意味着我们有一个动态VV用于不同的输入𝑞。请注意,所有标识的实体、函数和s表达式中使用的语法常量也包括在内。类似地,我们根据BERT的输出得到实体的表示,该实体对应于其表面形式。

4.3 实体链接

在现有的大多数KBQA数据集上,实体链接并不是一个主要的挑战,穷举的模糊字符串匹配足以达到合理的性能。然而,GrailQA中的实体跨越了所有的流行范围,并且以从web中挖掘的表面形式出现,这更加真实,但也使得实体链接更加具有挑战性。我们使用基于BERT的NER系统,并在我们的训练集上训练它。对于实体消歧,我们基于FACC1简单地选择了最流行的一个(多个)。作为对比,我们还尝试了Aqqu,这是一种基于规则的实体链接器,结合了语言和实体流行度特征,在WebQSP上取得了较高的准确率,在GrailQA上的实体链接结果如下:

image.png

基于BERT的实体链接器在召回率方面略差,但在精度方面要好得多。因此,我们将使用基于bert的实体链接器。

4.4 推断

提出了两种不同的推理模式,即T推导和R排序。对于T推导,我们只是以正常的方式使用模型,即使用模型来在每个时间步从V中自回归预测一个token,直到模型预测出停止token。对于排序,我们不使用Seq2Seq作为生成器,而是使用它作为排序器,对每个候选逻辑形式进行评分,并返回排名最高的候选。我们采用了一种简单而有效的策略来生成候选逻辑形式:从问题中标识的每个实体开始,在2跳内枚举所有逻辑形式,可选地使用计数函数,这种方式在GrailQA中的召回率为80%。最高级和比较级的问句通常没有主题实体,因此不涉及。排序可以更有效地对搜索空间进行剪枝,而递推则更灵活,可以处理更多类型的问题。

对现有数据集的有效性:在我们的GrailQA数据集上进行实验之前,我们在现有的数据集GraphQ上进行了实验,以显示我们的模型的竞争性能。所提出的排序模型达到了25.0%的F1值,明显优于现有的SOTA方法SPARQA 3.5%。有了这种优越的性能,我们相信新模型是合理的,可以作为GrailQA的强大基线,并支持在三个泛化水平上的后续调查。