Fastformer:简单又好用的Transformer变体!清华&MSRA开源线性复杂度的Fastformer!

Fastformer是清华和MSRA提出的 Transformer 变体,采用加性注意力实现线性复杂度的上下文建模,解决了标准 Transformer 在长序列处理上的效率问题。在多个数据集上的实验表明,Fastformer在保持高效的同时,能与现有Transformer模型竞争甚至超越。
摘要由CSDN通过智能技术生成

关注公众号,发现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矩阵

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值