Transformer提出大致时间线:

Transformer 分类:

目录


理想情况下,位置嵌入(Positional Encoding)的设计应该满足以下条件:
相对位置编码(Sinusoidal Position Encoding):可区别位置关系但无法区别前后关系
绝对位置编码(Learned Positional Embedding):不同位置随机初始化可学习参数编码
绝对位置编码展开:

一个基于局部敏感哈希(LSH)的注意力模型,引入了可逆的Transformer层,有助于进一步减少内存占用量。复杂度从 O(N^2) 降为 O(N logN),N 为句子长度。
模型的关键思想,是附近的向量应获得相似的哈希值,而远距离的向量则不应获得相似的哈希值,因此被称为“局部敏感”。
并且,标准残差 Layer 替换为可逆残差 Layer,使得训练中只存储一次激活值,而不是 N 次,N 为 Layer 数量。
这个模型通过使用基于核的自注意力机制、和矩阵产品的关联特性,将自注意力的复杂性从二次降低为线性O(N)。已经被证明可以在基本保持预测性能的情况下,将推理速度提高多达三个数量级。
Attention自注意力机制广义公式,Q 和 K 利用相似(sim)函数计算出一个分数,之后除以分数总和获得 Attention 权重,之后去 V 里取值:

接着用核函数 ,对 sim 函数进行处理,再利用结合律,将 Q 运算提出来

简化


这个模型利用正交随机特征(ORF),采用近似的方法避免存储和计算注意力矩阵。
Autoformer算法与代码分析_布川酷籽的博客-CSDN博客

Transformer-XL很有RNN的味道:设法利用之前的segment留下的信息eval时滚动向前,但每次要重新计算整个segment,eval的时候滚动向前,不用重复计算前面segment因为每次在滚动向前,这样就需要使用相对位置编码,而不能使用绝对位置编码。
围绕如何建模长距离依赖,提出Transformer-XL:
提出片段级递归机制(segment-level recurrence mechanism),引入一个记忆(memory)模块(类似于cache或cell),循环用来建模片段之间的联系。这部分输出是通过cache的机制传导过来,所以不会参与梯度的计算。原则上只要GPU内存允许,该方法可以利用前面更多段的信息。

在预测阶段:
如果预测 x4 我们只要拿之前预测好的 [x1, x2, x3] 的结果拿过来,直接预测。同理在预测 x5 的时候,直接在 [x1,x2,x3,x4] 的基础上计算,不用像Vanilla Transformer一样每次预测一个字就要重新计算前面固定个数的词。

在memory的循环计算过程中,避免时序混淆,需要位置编码可重用

其中:
表示的是i和j的相对距离,是sinusoid encoding matrix,没有额外的训练参数。实际上和vanilla的位置编码一样的,关键是这里的位置编码只给key用,而key的长度,在第一个片段和query的长度一样,之后的片段,key长度=上一个片段hidden state长度+当前片段key的长度,因此
是能够表示出key的相对距离的每个分项分别代表的含义如下:
这个模型是Transformer-XL的扩展,但不同于Transformer-XL,后者在跨段移动时会丢弃过去的激活,而它的关键思想则是保持对过去段激活的细粒度记忆。
压缩如下:
其中d是隐藏层的维度,c是压缩比例,c越大 压缩越多

首先 有 2个memory: 一个是存放正常的前几个segment的hidden state ,计做 m, 一个是存放压缩的记忆模块 cm。

计算复杂度
7. Infinite-transformer
A Survey of Transformers(2021),https://arxiv.org/abs/2106.04554
Efficient Transformers: A Survey(2020)
Transformers Meet Visual Learning Understanding: A Comprehensive Review(2022)