解决的问题
Transformer的自注意力机制可以让长距离的单词直接联系,可以很容易地学习到句子之间的长距离依赖。但是在将Transformer应用在语言模型时,核心的问题在于如何将任意长度的context编码成固定长度的上下文变量。
普遍的做法是将整个语料库划分成较短的片段,在每个片段上训练模型。但是这么做很有几个问题:
- 最大可能依赖长度不会超过片段的长度
- 语料库按照固定长度而不是按照语义或者句子的分界划分进行分片,导致分片之间无法共享信息。这样情况下训练的语言模型会丢失一部分上下文信息,导致收敛速度和性能不符合预期。论文把这个问题成为上下文碎片问题。
贡献
- 在Transformer的基础上提出segment-level recurrence mechanism、新的位置编码模式两种方法使得Transformer-XL能够在不破坏时间一致性的情况下,学习固定长度之外依赖关系并且解决上下文碎片问题
结果
- 学习依赖的范围比RNN(LSTM)高出80%,比Transformer高出450%,
- evaluation过程速度比Transformer提高1800倍。
- 在5个语言模型数据集上取得SOAT成绩。
Recurrent mechanism机制
前一个分片的隐藏状态被保存下来作为计算下一个分片隐藏状态的扩展输入。这种方法能够在计算当前分片隐藏状态的时候使用到上文的信息,进而可以有效的避免上下文碎片并且增加依赖的长度。具体来说,前一个分片第n-1层的隐藏状态被保存下来,与当前分片的第n-1层的隐藏状态一起作用生成当前分片第n层的隐藏状态。这种“循环”利用上个分片的隐藏状态的方法能够有效加长期依赖的范围。
其中,下标 τ + 1 和 τ \tau+1和\tau τ+1和τ分别表示分片的编号,上标 n 和 n − 1 n和n-1 n和n−1表示当前计算的隐藏状态在模型中的层数, q 、 k 、 v q、k、v q、k、v分别表示计算注意力需要的查询(query)、键(key)和值(value)向量, W W W表示模型的参数矩阵。首先第 τ \tau τ个分片第n-1层的隐藏状态 h τ n − 1 h_{\tau}^{n-1} hτn−1