这是 PyTorch 中用于远程序列建模的压缩转换器的实现。
这是 Transfor mer XL 的扩展,它压缩了过去的记忆以提供更长的注意力范围。也就是说,最远的内存被压缩到内存中,压缩率在哪里。
压缩操作定义为。本文介绍了多种选择,我们只实现了一维卷积,这似乎可以给出最佳结果。每个层都有单独的压缩操作,其中是层号。
由于使用 BPTT 训练压缩需要维护非常大的计算图(许多时间步长),因此该论文提出了自动编码损失和注意力重建损失。自动编码丢失对压缩存储器中的原始存储器进行解码并计算损失。注意力重建损失计算压缩内存和未压缩内存上的多头注意力结果,并得出两者之间的平均平方误差。我们在这里实现了后者,因为它可以提供更好的结果。
该实现使用层前标准化,而论文使用层后归一化。前层范数在 FFN 和自我注意力之前对层进行范数,并且残差连接中的直通未标准化。在标准变压器设置中,这应该更稳定。
以下是用于在 Tiny Shakespeare 数据集上训练压缩变压器模型的训练代码和笔记本。