AAAI 2019 Gaussian Transformer 一种自然语言推理方法

电子说

1.3w人已加入

描述

自然语言推理 (Natural Language Inference, NLI) 是一个活跃的研究领域,许多基于循环神经网络(RNNs),卷积神经网络(CNNs),self-attention 网络 (SANs) 的模型为此提出。尽管这些模型取得了不错的表现,但是基于 RNNs 的模型难以并行训练,基于 CNNs 的模型需要耗费大量的参数,基于 self-attention 的模型弱于捕获文本中的局部依赖。为了克服这个问题,我们向 self-attention 机制中引入高斯先验 (Gaussian prior) 来更好的建模句子的局部结构。接着,我们为 NLI 任务提出了一个高效的、不依赖循环或卷积的网络结构,名为 Gaussian Transformer。它由用于建模局部和全局依赖的编码模块,用于收集多步推理的高阶交互模块,以及一个参数轻量的对比模块组成。实验结果表明,我们的模型在SNLI 和 MultiNLI 数据集上取得了当时最高的成绩,同时大大减少了参数数量和训练时间。此外,在 HardNLI 数据集上的实验表明我们的方法较少受到标注的人工痕迹(Annotation artifacts) 影响。

1 引言

1.1 任务简介

自然语言推理 (Natural Language Inference, NLI) ,又叫文本蕴含识别 (Recognizing Textual Entailment, RTE), 研究的是文本间的语义推理关系, 具体来讲, 就是识别两句话之间的蕴含关系,例如,蕴含、矛盾、中性。形式上是,NLI 是一个本文对分类问题。

1.2 动机

这里简要介绍一下我们提出 Gaussian Self-attention 的动机。我们观察到,在句子中,与当前词的语义关联比较大的词往往出现在这个单词的周围, 但是普通的 Self-attention, 并没有有效地体现这一点。如图1所示,在句子 ”I bought a newbookyesterday with a new friend in New York. ” 中,共出现了三个 ”new”,但对于当前词 book 来说,只有第一个new 才是有意义的。但是普通的 self-attention(在不使用 position-encoding 的情况下),却给这三个 ”new” 分配了同样大小的权重,如图1(a)所示。我们的想法是,应当鼓励 self-attention 给邻近的词更大的权重,为此,我们 在原始的权重上乘以一个按临近位置分布的高斯先验概率,如图 1(b),改变 self-attention 的权重分布,如图 1(c),从而更加有效地建模句子的局部结构。

神经网络

图 1. Gaussian self-attention 示例

事实上,RNNs 和 CNNs 能够自然而然地赋予临近的单词更大的权重,例如,RNNs 会倾向忘记远处的单词,CNNs 会忽略所有不在当前窗口内的单词。在这篇文章中,我们把 Gaussian self-attention 应用到了 Transformer 网络上, 并在自然语言推理 (Natural language Inference)这一任务上进行了验证,实验表明我们所提出的基于 Gaussian self-attention 的 Gaussian Transformer 效果优于许多较强的基线方法。同时,该方法也保留了原始 Transformer 的并行训练,参数较少的优点。

2 模型简介

在实现上, 我们可以通过一系列化简 (具体细节请参看我们的论文原文), 把 Gaussian self-attention 转化为 Transformer 中的一次矩阵加法操作, 如图 2 所示, 从而节省了运算量。 此外,我们发现,与使用原始的 Gaussian 分布作为先验概率相比,适当的抑制到单词自身的 attention可以对最终的实验结果有少许的提升,如图 3(b) 所示。

神经网络

图 2. Attention 示例: (a) 原始的 dot-product attention;(b)&(c) Gaussian self-attention 的两种实现

神经网络

图 3. 先验概率示例: (a) 原始的 Gaussian prior;(b) 抑制到自身的 Gaussian prior 变种

图 4 展示了我们模型的整体框架。 如图所示, 模型自底向上大致分为四个部分:Embedding模块、编码 (Encoding) 模块、交互 (Interaction) 模块和对比 (Comparison) 模块。

神经网络

图 4. Gaussian Transformer 整体框架

Embedding 模块的作用是把自然语言文本转化为机器方便处理的向量化表示, 我们使用了单词和字符级别的 Embedding,以及 Positional Encoding。

Encoding 模块与原始的 Transformer 的 Encoder 非常类似,只是我们增加了前文引入的 Gaussian self-attention 以便更好的建模句子的局部结构。 但事实上, 句子中也存在长距离依赖, 仅仅建模句子的局部结构是不够的。为了捕获句子的全局信息,我们堆叠了 M 个 Encoding 模块。这种方式类似于多层的 CNNs 网络,层数较高的卷积层的 receptive field 要大于底层的卷积。

Interaction 模块用于捕获两个句子的交互信息。 这一部分与原始的 Transformer 的 Decoder 部分类似, 区别是我们去掉了 Positional Mask 和解码的部分。 通过堆叠 N 个 Interaction 模块,我们可以捕获高阶交互的信息。

Comparison 模块主要负责对比两个句子,分别从句子的 Encoding 和 Interaction 两个角度对比,这里我们没有使用以前模型中的复杂结构,从而节省了大量的参数。

3 实验与分析

3.1 实验结果

首先,我们验证各个模块的有效性,如图 5 所示,采用多层的 Encoding 模块和多层的 Interaction 模块的效果要优于使用单层的模型,证明了前面所提到的全局信息和高阶交互的有效性。其次,我们想要验证一下 Gaussian prior 的有效性。如表 1 所示,我们发现 Gaussian prior 及其变种的性能要优于其他诸如 Zipf prior 等方法,也要优于原始的 Transformer。最后, 我们在 SNLI、MultiNLI 和 HardNLI 的测试集上与其他前人的方法进行了横向比较。如表 2、 3、4、5 和 6 所示,我们的方法在 Accuracy、模型参数量、训练与预测一轮同样的数据的时间上都优于基线方法。

神经网络

图 5. MultiNLI 开发集上的 Accuracy 热图。

表1. MultiNLI 开发集上各 Gaussian transformer 变种的 Accuracy

神经网络

表2. SNLI 测试集上 Gaussian Transformer 与其他模型的横向比较

神经网络

表3. MultiNLI 测试集上 Gaussian Transformer 与其他模型的横向比较

神经网络

表4. 在 SNLI 数据集上训练或预测一轮所需的时间对比

神经网络

表5. 当引入外部资源时,各个模型的性能比较

神经网络

表6. HardNLI 上的对比结果

神经网络

3.2 分析

Q:原始的 Transformer 中已经有了 Positional encoding,已经能够捕获单词的位置信息,为什么还要用 Gaussian Prior ?

A:Positional Encoding 仅仅使模型具有了感知单词位置的能力;而 Gaussian Prior 告诉模型哪些单词更重要,即对于当前单词来说,临近的单词比遥远的单词更重要,这一先验来自于人的观察。

Q:为什么 Gaussian Transformer 在时间和参数量上优于其他的方法? 

A:Gaussian Transformer 没有循环和卷积结构,从而能够并行计算,同时我们在设计模型时,尽量保持模型简化,摒弃了以往方法中的复杂结构 (例如,在 Comparison block 中的简化),使我们的模型更加轻量。 

4 结论

针对自然语言推理任务的前人工作的不足,我们提出了基于 Gaussian self-attention 的 Gaussian Transformer 模型。实验表明所提出的模型在若干自然语言推理任务上取得了State-of-the-Art的实验结果。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分