关注公众号,发现CV技术之美
0
写在前面
Transformer是一个强大的文本理解模型。然而,由于其对输入序列长度呈二次计算复杂度,Transformer是效率是比较低下的。虽然Transformer加速有很多方法,但在长序列上要么效率低下,要么不够有效。
本文提出了一种基于加性注意的Fastformer模型。在Fastformer中,作者首先使用加性注意机制来建模全局上下文,然后根据每个token表示与全局上下文表示的交互作用,进一步转换token的表示。
这样,Fastformer可以实现具有线性复杂度的上下文建模的方式。在5个数据集上进行的大量实验表明,Fastformer比许多现有的Transformer模型要高效得多,同时可以实现类似甚至更好的长文本建模性能。
1
论文和代码地址
Fastformer: Additive Attention Can Be All You Need
论文:https://arxiv.org/abs/2108.09084
代码:https://github.com/wuch15/Fastformer
2
Motivation
Transformer及其变体在许多领域都取得了巨大的成功。例如,Transformer是NLP中许多SOTA的预训练语言模型的主干网络,如BERT和GPT。Transformer在CV任务中也展现了非常好的性能,如:ViT。Transformer模型的核心是自注意机制,它允许Transformer对输入序列中的上下文进行建模。
然而,由于自注意计算每对位置的输入表示之间的点积,它的复杂度与输入序列长度是二次相关的。因此,标准的Transformer模型很难有效地处理长输入序列。
在本文中,作者提出了Fastformer,这是一种基于加性注意的Transformer,可以在线性复杂度下实现有效的上下文建模。在Fastformer中,作者首先使用加性注意机制将输入query矩阵总结为一个全局query向量。
接下来,通过元素级乘积对key与全局query向量之间的交互作用进行建模,以学习全局上下文key矩阵,并通过加性注意将其进一步总结为全局key向量。
然后利用元素级乘积对全局key向量和value矩阵进行聚合,通过线性变换进一步处理,计算全局上下文感知的value。
最后,将原始query和全局上下文感知value相加,形成最终输出。作者在五个数据集上证明了Fastformer的有效性。结果表明,Fastformer比许多Transformer模型要有效得多,并且在长文本建模中可以取得相当有竞争力的结果。
3
方法
3.1 Self-Attention
Transformer模型建立在Multi-head Self-Attention的基础上,通过捕获每对位置的输入之间的交互作用,有效地建模序列内的上下文。一个有h个head的Self-Attention机制可以表示如下:
每个注意力head学习到的表征表述如下:
从这个公式可以看出,Self-Attention的计算复杂度与序列长度N呈二次关系。它成为了Transformer处理长序列的瓶颈。
3.2 Architecture
Fastformer结构如上图所示,Fastformer首先将输入的嵌入矩阵转换为query、key和value序列。输入矩阵记为 ,其中N为序列长度,d为通道维数,可以记为一系列向量的组合 。
与Transformer一样,Fastformer首先用三个参数不共享的线性层将输入矩阵转换为query、key和value矩阵