谷歌、CMU 重磅论文:Transformer 升级版,评估速度提升超 1800 倍!

157 阅读7分钟

【新智元导读】 CMU、谷歌大脑的研究者最新提出万用 NLP 模型 Transformer 的升级版——Transformer-XL。这个新架构在 5 个数据集上都获得了强大的结果,在评估中甚至比原始 Transformer 快 1800 + 倍。研究人员公开了代码、预训练模型和超参数。

Transformer 是谷歌在 2017 年提出的一个革新性的 NLP 框架,相信大家对那篇经典论文吸睛的标题仍印象深刻:Attention Is All You Need

自那以来,业内人士表示,在机器翻译领域,Transformer 已经几乎全面取代 RNN。总之 Transformer 确实是一个非常有效且应用广泛的结构,应该可以算是自 seq2seq 之后又一次 “革命”。

最近,CMU 的 Zihang Dai,Yiming Yang,Jaime Carbonell,Ruslan Salakhutdinov,以及谷歌的 Zhilin Yang(杨值麟),William W. Cohen 和 Quoc V. Le 等人提出了 Transformer 的升级版——Transformer-XL。这篇论文最初投给 ICLR 2019,最新放在 arXiv 的版本更新了更好的结果,并公开了代码、预训练模型和超参数。

论文地址:

arxiv.org/pdf/1901.02…

Transformer 网络具有学习较长期依赖关系的潜力,但是在语言建模的设置中受到固定长度上下文 (fixed-length context) 的限制。

作为一种解决方案,这篇论文提出一种新的神经网络结构——Transformer-XL,它使 Transformer 能够在不破坏时间一致性的情况下学习固定长度以外的依赖性

具体来说,Transformer-XL 由一个 segment-level 的递归机制和一种新的位置编码方案组成。这一方法不仅能够捕获长期依赖关系,而且解决了上下文碎片的问题。

实验结果表明, Transformer-XL 学习的依赖关系比 RNN 长 80%,比 vanilla Transformer 长 450%,在短序列和长序列上都获得了更好的性能,并且在评估中比 vanilla Transformer 快 1800 + 倍

此外,Transformer-XL 在 5 个数据集上都获得了强大的结果。研究人员在 enwiki8 上将 bpc/perplexity 的最新 state-of-the-art(SoTA) 结果从 1.06 提高到 0.99,在 text8 上从 1.13 提高到 1.08,在 WikiText-103 上从 20.5 提高到 18.3,在 One Billion Word, 上从 23.7 提高到 21.8,在 Penn Treebank 上从 55.3 提高到 54.5。

他们公布了代码、预训练模型和超参数,在 Tensorflow 和 PyTorch 中都可用。

Transformer-XL 模型架构

为了解决前面提到的固定长度上下文的限制,Transformer-XL 这个新架构 (其中 XL 表示 extra long) 将递归 (recurrence) 的概念引入到 self-attention 网络中

具体来说,我们不再从头开始计算每个新的段 (segment) 的隐藏状态,而是重用 (reuse) 在前一段中获得的隐藏状态。被重用的隐藏状态用作当前段的 memory,这就在段之间建立一个循环连接。

因此,建模非常长期的依赖关系成为可能,因为信息可以通过循环连接传播。同时,从上一段传递信息也可以解决上下文碎片 (context fragmentation) 的问题。

更重要的是,我们展示了使用相对位置编码而不是绝对位置编码的必要性,以便在不造成时间混乱的情况下实现状态重用。因此,我们提出了一个简单但更有效的相对位置编码公式,该公式可以推广到比训练中观察到的更长的 attention lengths。

原始 Transformer 模型

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

图 1:一个 segment 长度为 4 的 vanilla model 的图示

一种可行但比较粗略的近似方法是将整个语料库分割成可管理大小的更短的片段,只在每个片段中训练模型,忽略来自前一段的所有上下文信息。这是 Al-Rfou et al(2018) 提出的想法,我们称之为原始模型 (vanilla model),它的图示如图 1a。

在评估过程中,vanilla 模型在每个步骤都消耗与训练期间相同长度的一个 segment,但是在最后一个位置只是进行一次预测。然后,在下一步中,这个 segment 只向右移动一个位置,新的 segment 必须从头开始处理。

如图 1b 所示,该过程保证了每个预测在训练过程中利用的上下文尽可能长,同时也缓解了训练过程中遇到的上下文碎片问题。然而,这个评估过程成本是非常高的。

接下来,我们将展示我们所提出的架构能够大大提高评估速度。

Transformer-XL

为了解决固定长度上下文的局限性,我们建议在 Transformer 架构中引入一种递归机制 (recurrence mechanism)。

在训练过程中,对上一个 segment 计算的隐藏状态序列进行修复,并在模型处理下一个新的 segment 时将其缓存为可重用的扩展上下文,如图 2a 所示。

图 2:一个 segment 长度为 4 的 Transformer-XL 模型

这种递归机制应用于整个语料库的每两个连续的 segment,它本质上是在隐藏状态中创建一个 segment-level 的递归。因此,所使用的有效上下文可以远远超出两个 segments。

除了实现超长的上下文和解决碎片问题外,这种递归方案的另一个好处是显著加快了评估速度。

具体地说,在评估期间,可以重用前面部分的表示,而不是像普通模型那样从头开始计算。在 enwiki8 数据集的实验中,Transformer-XL 在评估过程比普通模型快 1800 倍以上。

实验和结果

我们将 Transformer-XL 应用于单词级和字符级语言建模的各种数据集,与 state-of-the-art 的系统进行了比较,包括 WikiText-103 (Merity et al., 2016), enwiki8 (LLC, 2009), text8 (LLC, 2009), One Billion Word (Chelba et al., 2013), 以及 Penn Treebank (Mikolov & Zweig, 2012).

实验结果表明, Transformer-XL 学习的依赖关系比 RNN 长 80%,比 vanilla Transformer 长 450%,在短序列和长序列上都获得了更好的性能,并且在评估中比 vanilla Transformer 快 1800 + 倍。

表 1:在 WikiText-103 上与 SoTA 结果的比较

表 2:在 enwiki8 上与 SoTA 结果的比较

表 3:在 text8 上与 SoTA 结果的比较

表 4:在 One Billion Word 上与 SoTA 结果的比较

表 5:在 Penn Treebank 上与 SoTA 结果的比较

Transformer-XL 在 5 个数据集上都获得了强大的结果。 研究人员在 enwiki8 上将 bpc/perplexity 的最新 state-of-the-art(SoTA) 结果从 1.06 提高到 0.99,在 text8 上从 1.13 提高到 1.08,在 WikiText-103 上从 20.5 提高到 18.3,在 One Billion Word 上从 23.7 提高到 21.8,在 Penn Treebank 上从 55.3 提高到 54.5。

评估速度

最后,我们将模型的评估速度与 vanilla Transformer 模型进行了比较。

如表 9 所示,与 Al-Rfou et al. (2018). 的架构相比,由于 state reuse 方案,Transformer-XL 的评估速度加快了高达 1874 倍。

表 9:评估时间比较

结论

我们提出了一种新的架构,Transformer-XL,这是一个超出了固定长度的上下文限制的 self-attention 的语言建模架构。

我们的主要技术贡献包括在一个纯粹的 self-attentive 模型中引入递归的概念,并推导出一种新的位置编码方案。这两种技术形成了一套完整的解决方案,因为它们中的任何一种单独都不能解决固定长度上下文的问题。

Transformer-XL 是第一个在字符级和单词级语言建模方面都取得了比 RNN 更好结果的 self-attention 模型。Transformer-XL 还能够建模比 RNN 和 Transformer 更长期的依赖关系,并且与 vanilla Transformers 相比在评估过程中取得了显著的加速。

论文地址:

arxiv.org/pdf/1901.02…

(本文首发于微信公众号新智元:AI_era,欢迎关注!)