一种完全基于注意力机制的翻译模型 – Transformer,最近在不同语言对上的翻译任务上都取得了最好的效果,引起了工业界和学术界的极大兴趣。 由腾讯AI Lab主导,与来自南京大学、澳门大学、香港中文大学的实习生合作完成的三篇论文中,作者从多层表示融合,自注意力模型,和多头注意力模型三个方面改进Transformer模型。以下是技术详细解读。
论文:Exploiting Deep Representations for Neural Machine Translation
http://ai.tencent.com/ailab/nlp/papers/emnlp2018_deep_representations.pdf
论文:Modeling Localness for Self-Attention Networks
http://ai.tencent.com/ailab/nlp/papers/emnlp2018_localness_modeling.pdf
论文 :Multi-Head Attention with Disagreement Regularization
http://ai.tencent.com/ailab/nlp/papers/emnlp2018_disagreement_regularizations.pdf
Transformer模型介绍
Transformer仍然是经典的编码器-解码器框架。其中编码器是由L层神经网络组成,每层网络中包含:
1. 多头自注意力层 (Multi-Head Self-attention)
2. 全连接的前向网络层 (Feed Forward)
3. 多头源注意力层 (Multi-Head Attention)
受益于更强大的模型表达能力,该新型网络结构在机器翻译任务上超过了过去基于递归神经网络(RNN)和卷积神经网络(CNN)的翻译模型。
多层表示融合
本文由腾讯AI Lab主导,与南京大学合作完成。如上所述,神经机器翻译系统通常由多层编码器和解码器构成,这允许系统对于复杂函数进行建模并捕获复杂的语言结构。最近研究工作表明,不同网络层会捕获不同层次的句法和语义信息。 然而,通常情况下,翻译过程仅利用了编码器和解码器的顶层,这错过了利用在其他层中的有用信息的机会。在这项工作中,研究人员提出用层聚合和多层注意力模型的方法同时利用不同网络包含的信息。
a.标准架构 b.层聚合 c.多层注意力模型
以Transformer编码器为例,其架构如图(a)所示。具体计算过程如下:
其中ATT是指自注意力模型,FFN指前向连接网络,LN指层归一化函数。是由第(l-1)层的编码器表示转化得到的。
层聚合模型如图(b)所示,聚合节点(绿色圆圈)的计算公式如下:
其中聚合函数AGG定义为:
多层注意力模型如图(c)所示,在构建第l层网络时,我们允许注意力模型可以查询所有低层网络,而不是只查询第(l-1)层:
对比提出的两种方法,其中层聚合模型将不同网络层同一位置的表示融合起来,而多层注意力模型则允许融合不同层不同位置的表示,但代价是计算复杂度更高。
自注意力模型的局部性建模
本文由腾讯AI Lab主导,与澳门大学合作完成。自注意力模型的一个优势在于通过直接注意所有输入元素,从而捕获长距离依赖关系。但是该过程是通过加权平均操作完成的,我们认为会导致其忽视相邻元素间关系。本文通过为自注意力模型进行局部建模,增强其学习局部上下文的能力。
相邻元素的关系通常对应短语的概念,在机器翻译中起着重要作用。以下图为例,当“Bush”对齐到“held”时,我们希望自注意力模型能同时将更多注意力放到其邻近的词“a talk”上。这样,模型能捕获短语“held a talk”。
针对该问题,本文将局部建模设计为一种可学习的高斯偏差,这种高斯偏差表示了需要得到更多关注的局部范围的中心Pi和尺寸Di:
如上图中,P在单词“talk”位置处,而D则为2。我们通过不同的策略(如利用不同的模型中间表示)来计算pi和zi。
随后,高斯偏差被用于修正原始注意力分布以得到局部强化的的权重分布:
上图中,通过引入学习到的高斯偏差,自注意力模型更多关注于短语“held a talk”。为了保持原模型捕获长距离依赖性的能力的同时增强其学习短距离依存关系的能力,本文仅将局部性建模应用于较低层的自我关注网络中。
具有差异性约束的多头注意力模型
本文由腾讯AI Lab主导,与香港中文大学和澳门大学合作完成。多头注意力机制是Transformer中的一个重要组件,优势在于能在不同子空间学习不同表征。以下图为例,绿色和红色代表了不同的注意力头(attention head),对于查询词“Bush”,它们分别对齐到“talk”和“Sharon”,对应着不同的语言学关系。
多头注意力模型将Q, K, V转换到H个子空间中:
其中是第h个注意力头的查询向量、键向量和值向量。每个注意力头通过标准注意力机制计算输出向量:
所有注意力头的输出向量通过拼接操作得到最终向量表示。
在这个工作中,我们引入一种差异性约束来显式地鼓励多个注意力头的多样性:
具体地,本文提出了3种差异性约束,分别鼓励每个注意力头在输入子空间、对齐矩阵、输出表示上跟其他的注意力头不一样:
输入子空间差异化约束:
对齐矩阵差异化约束:
输出表示差异化约束: