目录
参考谷歌、CMU重磅论文:Transformer升级版,评估速度提升超1800倍!
Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context
github:https://github.com/kimiyoung/transformer-xl
Transformer网络具有学习较长期依赖关系的潜力,但是在语言建模的设置中受到固定长度上下文(fixed-length context)的限制。
Transformer-XL使Transformer能够在不破坏时间一致性的情况下学习固定长度以外的依赖性。它由一个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。
Character-level language modeling with deeper self-attention
这篇论文在char-level的语言模型中,用了很深的transformer(64层)…
不再从头开始计算每个新的段(segment)的隐藏状态,而是重用(reuse)在前一段中获得的隐藏状态。被重用的隐藏状态用作当前段的memory,这就在段之间建立一个循环连接。提出了一个简单但更有效的相对位置编码公式,该公式可以推广到比训练中观察到的更长的attention lengths。
因此:
为了将Transformer或self-attention应用到语言建模中,核心问题是如何训练Transformer有效地将任意长的上下文编码为固定大小的表示。
给定无限内存和计算,一个简单的解决方案是使用无条件Transformer解码器处理整个上下文序列,类似于前馈神经网络。然而,在实践中,由于资源有限,这通常是不可行的。
一种可行但比较粗略的近似方法是将整个语料库分割成可管理大小的更短的片段,只在每个片段中训练模型,忽略来自前一段的所有上下文信息。这是上面讲到的对比论文提出的想法,我们称之为原始模型(vanilla model),它的图示如图1a。
在评估过程中,vanilla 模型在每个步骤都消耗与训练期间相同长度的一个segment,但是在最后一个位置只是进行一次预测。然后,在下一步中,这个segment只向右移动一个位置,新的segment必须从头开始处理。
如图1b所示,该过程保证了每个预测在训练过程中利用的上下文尽可能长,同时也缓解了训练过程中遇到的上下文碎片问题。然而,这个评估过程成本是非常高的。
为了解决固定长度上下文的局限性,我们在Transformer架构中引入一种递归机制(recurrence mechanism)。
在训练过程中,对上一个segment计算的隐藏状态序列进行fixed和cached,并在模型处理下一个新的segment时将其缓存为可重用的扩展上下文,如图2a所示。
这种递归机制应用于整个语料库的每两个连续的segment,它本质上是在隐藏状态中创建一个segment-level的递归。因此,所使用的有效上下文可以远远超出两个segments。
除了实现超长的上下文和解决碎片问题外,这种递归方案的另一个好处是显著加快了评估速度。
具体地说,在评估期间,可以重用前面部分的表示,而不是像普通模型那样从头开始计算。在enwiki8数据集的实验中,Transformer-XL在评估过程比普通模型快1800倍以上。