transform-xl翻译

 

1.介绍

语言建模是需要对长期依赖关系建模的重要问题之一,它具有成功的应用程序,如无监督的训练(Peters et al., 2018; Devlin et al.,2018)。然而,如何使神经网络具备在序列数据中建模长期依赖关系的能力,一直是一个挑战。递归神经网络(RNNs),尤其是LSTM(Hochreiter & Schmidhuber, 1997),已经成为语言建模的标准解决方案,并在多个基准上取得了很好的效果。尽管具有广泛的使用,RNNs由于梯度消失和梯度爆炸问题导致难以优化(Hochreiter et al., 2001),在LSTMs中引入控制门和提督裁剪技术(Graves,
2013; Pascanu et al., 2012)也许不能有效的解决这个问题。根据经验先前的工作经验,LSTM语言模型平均使用200个上下文词汇(Khandelwal et al.,2018),这表明了有进一步改进的余地。

另一方面,注意力机制中的长距离词对之间的直接联系可以简化优化,并使学习长期依赖关系成为可能(Bahdanau et al.,2014; Vaswani et al., 2017).。最近,Al-Rfou et al. (2018)设计了一套辅助损失用于训练深层transformer networks 用于字符级语言建模,它的表现远远超过了LSTM。尽管在Al-Rfou et al. (2018)的训练取得成功,但是是在几百个字符的分隔固定长度段上执行的,在segments之间没有任何信息流通。由于固定上下文长度,模型不能捕获任何长期依赖超过????。此外,固定长度的segments是在相关句子或者其它语义边界的情况下选择一些连续的字符来创建的。因此,模型预测前几个字符缺乏必要的上下文信息,导致模型优化没有效率和不好的执行效果。我们将这个上下文问题称为上下文碎片。

为了解决上述固定长度上下文的局限性,我们提出了一种新的体系结构,Transformer-XL (meaning extra long).我们在把这个概念引入深层的自我注意力网络。特别是,我们不再从零开始计算每个新段的隐藏状态,而是重用在以前的段中获得的隐藏状态。重用的隐藏状态用作当前段的内存,在这些段之间建立一个循环连接。因此,更长期的依赖关系建模成为可能,因为信息可以通过循环连接传播。同时,从前一段传递信息也可以解决上下文分割的问题。更重要的是,我们展示了使用相对位置编码而不是绝对编码的必要性,以便在不引起时间混乱的情况下启用状态重用。因此,作为一项额外的技术贡献,我们引入了一种简单但更有效的相对位置编码公式,它可以概括到比训练中观察到的更长的注意长度。

2.相关工作

3.模型

给一个预料库x = (x1; : : : ; xT ),这个language model是估计联合概率P(x),它通常被自动分解为

通过这个分解的公式,我们可以看出这个问题归结为对每个条件概率的求解。在本论文中,我们坚持用标准的神经元来建模求条件概率。具体而言,一个可训练的神经网络将上下文x

3.1 VANILLA TRANSFORMER LANGUAGE MODELS

为了将transform或self-attention应用于语言建模,核心问题是如何训练一个Transformer,能够有效地将任意长的上下文编码成固定大小的表示。给定无限的内存和计算条件,一个简单的解决方案是使用一个无条件的Transformer decorder来处理整个上下文序列,类似于前馈神经网络。然而,在实际资源有限的情况下,这通常是不可行的。

transform-xl翻译_第1张图片

一个可行但粗略的近似方法是将整个语料库分割成较短的可管理大小的片段,并且只在每个片段中对模型进行训练,而忽略了来自前几个片段的所有上下文信息。这个想法被Al-Rfou et al. (2018).采用。我们可以称它为Vanilla模型并且在图片1(a)中将它可视化。在这种训练模式下,无论向前或向后传递,信息都不会跨段流动。使用固定长度上下文有两个关键限制:首先,最大可能的长期依赖长度是以segment长度为上限的,在字符级别的建几百个模型。因此,虽然self-attention机制与Rnns相比,受消失梯度问题的影响较小,但是Vanilla model没有充分利用这个优势。其次,虽然可以使用填充句子或者其它语义边界,在实践中,由于效率的提高,简单地将长文本块成固定长度序列已成为标准做法(Peterset al., 2018; Devlin et al., 2018; Al-Rfou et al., 2018).。但是,如果简单地将序列分块到固定长度的序列中,就会导致在部分中讨论的上下文碎片问题。

在评估中,在每一步,vanilla model也同样用一个与训练长度相同的的segment,仅仅只在最后一个位置做了一个预测。然后,在下一个步骤中,segment只向右移动一个位置,而新segment必须从头开始处理。如图1b展示,这个过程确保在训练过程中,每个预测使用最长暴露的上下文,并且缓解在训练过程中遇到的上下文碎片问题。然而这种评价过程代价是很大的。我们将展示我们提出的体系结构能够大大提高评估速度。

3.2 SEGMENT-LEVEL RECURRENCE WITH STATE REUSE

为了解决使用固定长度的上下文的局限性,我们建议引入在transformer体系结构中引入一种循环机制。在训练期间,为前面的segment计算的隐藏状态序列是固定的并被缓存的,以便在模型处理下一个新segment时作为扩展上下文重用,如图2a所示.虽然梯度仍然保持在segment内,但是这个额外的输入允许网络利用历史上的信息,从而能够建模更长期的依赖关系和避免上下文碎片。在形式上,这两个连续segment的长度L是,用表示第四segment产生的第n层隐状态序列,其中d是隐藏层维度。transform-xl翻译_第2张图片

然后,segment的 第n层隐藏状态生成过程如下:

这里的SG(·)函数代表stop-gradient,表示沿着长度维度连接两个隐层序列,W为模型的参数。与标准的Transformer相比,关键的区别在于Key 和value 是以扩展上下文缓存前面segment信息。我们通过图中2a的绿色路径来强调这个特殊的设计。这种递归机制应用于语料库的每两个连续segment,本质上是在隐藏状态下创建分段级递归。因此,所使用的有效语境可以远远超过两个部分。但是,注意这个循环依赖在之间,每一段向下移动一层,这与传统的RNN-LMs从相同的层循环不同。因此最大可能的依赖长度在层数和segment长度上呈线性增长w.r.t,,在图2b中展示。这类似于截断的BPTT(Mikolov et al., 2010),一种训练RNN-LMs的技巧。然而,我们的方法是不同于RNN-LMs,它是缓存隐状态的序列来代替RNN-LMs中只保留最后一个隐状态的,它被一起应用于相关位置编码技术通过3.3部分来阐述。

除了解决超长上下文记忆和上下文碎片问题之外,提出循环这个方案的另一个好处是大大加快了评估速。尤其是在评估期间,来自前面的segment的表示可以重用,而不是像vanilla model那样从头开始计算。在enwiki8实验中,Transformer-XL是Vanilla model的1800+倍。

最后,请注意,递归方案不需要仅限于前一段。理论上,我们可以在GPU内存允许的范围内缓存尽可能多的以前segment,并在处理当前segment时将它们作为额外的上下文重用。因此,由于与内存增强神经网络(Graves et al.,2014;Weston et al., 2014)的明确连接,我们可以缓存一个预先定义长度-M的旧隐藏状态跨越(可能)多个segment的,并将它们称为内存 

在我们的实验中,我们训练的时候,设置M等于segment长度,并且在评估过程中将其增加了多次。

3.3 RELATIVE POSITIONAL ENCODINGS

虽然我们发现上一小节中提出的想法非常有吸引力,但是为了重用隐藏的状态,我们还没有解决一个关键的技术挑战。也就是说,当我们重用状态时,如何保持位置信息的一致性?回想一下,在标准的Transformer中,序列顺序的信息由一组位置编码提供。符号为,这里第i行Ui是对应segment中第i个的绝对位置,Lmax规定要建模的最大可能长度。然后,Transformer的真正输入是按元素添加word embedding和positional encodings。如果我们简单地将这种位置编码与上面介绍的递归机制相适应的话,隐藏的状态序列将按照下图展示计算:

 

你可能感兴趣的:(自然语言)