压缩变压器

这是 PyTorch用于远程序列建模的压缩转换器的实现。

这是 Transfor mer XL 的扩展,它压缩了过去的记忆以提供更长的注意力范围。也就是说,最远的内存被压缩到内存中,压缩率在哪里。

压缩操作

压缩操作定义为。本文介绍了多种选择,我们只实现了一维卷积,这似乎可以给出最佳结果。每个层都有单独的压缩操作其中是层号。

训练压缩操作

由于使用 BPTT 训练压缩需要维护非常大的计算图(许多时间步长),因此该论文提出了自动编码损失注意力重建损失。自动编码丢失对压缩存储器中的原始存储器进行解码并计算损失。注意力重建损失计算压缩内存和未压缩内存上的多头注意力结果,并得出两者之间的平均平方误差。我们在这里实现了后者,因为它可以提供更好的结果。

该实现使用层前标准化,而论文使用层后归一化。前层范数在 FFN 和自我注意力之前对层进行范数,并且残差连接中的直通未标准化。在标准变压器设置中,这应该更稳定。

以下是用于在 Tiny Shakespeare 数据集上训练压缩变压器模型的训练代码和笔记本。

Open In Colab