生物序列智能分析平台(博客八)

2021SC@SDUSC

Transformer-based模型在众多领域已取得卓越成果,包括自然语言、图像甚至是音乐。然而,Transformer架构一直以来为人所诟病的是其注意力模块的低效,即长度二次依赖限制问题。随着输入序列长度的增加,注意力模块的问题也越来越突出,算力和内存消耗是输入序列长度的平方。

如何让Transformer-based模型应对长输入序列?

比较早期的是从内存方面入手,Transformer-XL和内存压缩的Transformer,再到近年来频频上头条的各种稀疏注意力机制。稀疏注意力机制不再暴力地计算所有token之间的注意力,而仅仅计算出有限token对之间的相似度得分。这些需要重点attend的稀疏注意力项可以是人工指定,也可以是通过优化方法找到的,还可以是通过学习学到的,甚至可以是随机的。

目前的这些稀疏注意力方法仍然有以下局限:

(1)需要高效的稀疏矩阵乘法运算,而这些运算并不是所有加速器都能提供。比如Longformer的实现采用TVM技术将计算自注意力的代码编译为CUDA核。

(2)通常缺乏严格的理论保证。这点Big Bird是有的。

(3)主要针对Transformer模型和生成式预训练进行优化。

(4)通常需要堆叠更多的注意力层来补偿稀疏表征,这使得它们很难与其他预训练模型一起使用,因此需要进行再训练,这就很费时费力。完全不符合低碳的主流。。。

除了上述这些缺点之外,稀疏注意机制往往还无法解决常规注意方法所应用的全部问题,比如如 Pointer Networks。此外,还有一些操作是无法进行稀疏化的,比如softmax操作。

Performer

Performer是一个Transformer架构,其注意力机制可线性扩展,一方面可以让模型训练得更快,另一方面也能够让模型处理更长的输入序列。这对于某些图像数据集(如ImageNet64)和文本数据集(如PG-19)来说定然是很香的。Performer使用了一个高效的(线性)通用注意力框架,在框架中使用不同的相似度测量(即各种核方法)可以实现各种注意力机制。该框架由FAVOR+(Fast Attention Via Positive Orthogonal Random Features,通过正交随机特征实现快速注意力)算法实现,该算法提供了可扩展、低方差、无偏估计的注意力机制,可以通过随机特征图分解来表达。该方法一方面确保了线性空间和时间复杂度,另一方面也保障了准确率。此外,该方法可以单独用于softmax 运算,还可以和可逆层等其他技术进行配合使用。

通用注意力机制

常规的注意力机制中,对应矩阵行与列的 query 和 key 相乘,再通过 softmax 计算出注意力得分矩阵。但是这种方法,不能将query-key传递到非线性 softmax 操作之后的结果分解回原来的key和query,但是可以将注意力矩阵分解为原始query和key的随机非线性函数的乘积,也就是所谓的随机特征(random features),这样就可以更有效地对相似性信息进行编码。

常规的 softmax 注意力(softmax-attention)可以看作是由指数函数和高斯投影定义的非线性函数的一个特例。在这里也可以反向推理,首先实现一些更广义的非线性函数,在query-key 结果上隐式定义其他类型的相似性度量或核函数。文章中所定义的通用注意力(generalized attention)是基于早期的核方法(Random Features for Large-Scale Kernel Machines)。尽管大多核函数闭式解并不存在,但是由于Performer的使用并不依赖于闭式解,所以这一机制仍然适用。

生物序列智能分析平台(博客八)_第1张图片

FAVOR+

通过上述的分解可以得到线性(而非二次)空间复杂度隐式注意力矩阵。同样,通过分解可以获得线性时间的注意力机制。原有的方式是注意力矩阵与value输入相乘得到最终结果,但在分解注意力矩阵之后,可以重新排列矩阵乘法来近似常规注意力机制的结果,而无需显式地构建二次方尺寸的注意力矩阵。最终生成了新算法 FAVOR+。

生物序列智能分析平台(博客八)_第2张图片

上述分析是双向注意力(即非因果注意力),并没有区分 past 和 future的部分。那么如何做到让输入序列中只注意到其中一部分,即单向的因果注意力?只需使用前缀和计算(prefix-sum computation),在计算过程只存储矩阵计算的运行总数,而不存储完整的下三角常规注意力矩阵。

生物序列智能分析平台(博客八)_第3张图片

总结

Performer有助于改进基于非稀疏注意力和基于核方法的Transformer,这种方法也可以与其他技术如可逆层一起搭配使用。研究人员不仅开放了Reformer的代码,还将[Reformer集成到FAVOR中,此外还提供了蛋白质语言模型的代码。Performer在Attention、Transformer架构甚至Kernel开辟了一条新的研究思路,对后续进一步的改进有巨大的启示作用。

你可能感兴趣的:(2021SC-SDUSC,深度学习,机器学习,人工智能)