©作者 | 李文

单位 | 中南大学

研究方向 | 自然语言处理

最近读了一篇 ICLR 2022 的论文,对于 attention-softmax 的计算复杂度有了一定的了解,下面是对论文的翻译和笔记,如有理解错误,还请海涵指正。

论文标题:

cosFormer: Rethinking Softmax in Attention

论文链接

https://arxiv.org/pdf/2202.08791.pdf

代码链接

https://github.com/OpenNLPLab/cosFormer

摘要

Transformer 在自然语言处理、计算机视觉和音频处理,已经取得了巨大的成功。作为核心组件的 attention-softmax,可以有效捕捉长距离的特征,但是计算复杂度是序列长度的平方;核方法的提出就是为了减少其计算的时间复杂度,但是这是一个近似方法,受语料和任务场景影响,并且有一定的误差。

这篇论文提出 cosformer 的一种方法,媲美标准 attention 甚效果更好。COFORMER 基于两个关键 softmax注意力的属性,第一个:注意矩阵的非负性, 第二个:非线性的权重转换(re-weighting)方案,放大局部的注意力权重值。

INTRODUCTION

Figure 1:上图中,y 轴表示性能,x 轴表示计算速度,圆圈的大小表示显存占用,可以看到 cosFormer 在保持长距离任务下,与左上角的任务相比:不仅保持了性能,提升了计算速度,显存占用也减少了。

transformer 及其变体在过去几年对文本、音视频任务产生了很大的影响,相较于 cnn 和 rnn,这一类模型可以学习长度不一的数据集,适用范围更大,并且有利于捕捉其全局信息,刷爆了多个任务。点乘的 attention+softmax 机制是其捕捉长距离任务的关键,遗憾的是,其空间和时间复杂度,受到了序列长度的限制,尤其是在长距离任务下影响比较明显一些。

为了解决这个问题,多种方法被提出,比如,2020 年提出的稀疏 attention 矩阵,低秩表达,核方法等等,这些方法都是为了解决标准 attention 的计算复杂度。然而这些线性时间复杂下的变体,通常存在一定的假设前提,并且是一个近似值,自带约束,换句话说,这些方法可能并不能适应所有场景,尤其是在 GLUE benchmark 上,通常效果没有标准(香草)的 attention 要好。另外不适用于 AR 语言模型的的 causal attention 注意力,也不适用 Linformer 和 BigBird 的交叉注意力。

softmax 是优化复杂度的主要难点所在(如果没有 softmax,利用矩阵的乘法结合律(AB)C=A(BC),可以看下面的图),我们(下文都指:作者们认为)很那去逼近它,因此作者提出疑问:“我们要得到一个关键的权重信息时,能否适用一个线性方法去替代 softmax”,这样既保留了 attention 的关键特性,又可以利用结合律,先算 KV,通过深入挖掘。

我们找到了两个关键信息:1、attention 中的权重元素是非负的,2:将权重进行 re-weigthing 的转化是为了模型的稳定性,比如,(Katharopoulos et al., 2020)提出的线性 Transformer 使用了 的指数激活函数,来保证 Q、K 非负(这样乘出来的 A 注意力矩阵也是非负的), 然而,由于缺少一个 softmax 去 re-weigthing 权重, 模型表现不尽人意。

这篇 paper 中,我们提出了一个新的线性 Transformer 变体,命名为“COSFORMER”,满足上面的两个性质,在计算内积之前,我们先使用 relu 进行激活,强制将 K、Q 变成非负;另外我们使用了一个新的方法 将 K、Q 得到的 A 矩阵进行缩放 re-weigthing,来保障稳定性。这可以帮助模型关注局部上下文信息,通常局部上下文在 NLP 任务中比较重要。

由于 Ptolemy 定理的存在,attention 的计算可以分解,让计算可以变成线性复杂度(先算 K、V),我们使用了 AR 和 AE 模型预训练模型,在很多任务上进行了实验,结果显示 cosformer 使用更小的显存,更快的速度就可以媲美标准的 Attention。并且刷新了 Long-Range Arena benchmark。

OUR METHOD

这一节主要讲 COSFORMER 详细的技术实现,最关键的点就是如何替换掉标准 Attention 中,非线性的并且不可拆分的 softmax 函数,使用一个非线性的可以拆分成线性操作进行替换;我们的方法适用范围比较广,causal 和 cross attentions 都支持,并且是线性的时间空间复杂度(说的都是跟输入序列长度 N 成线性),在长文本上表现较好。

标准Attention

标准的 Attention 通常是给定一个输入长度为  的序列 ,然后通过  embedding 层表示为 的矩阵形式,然后经过一个 encoder 的 self-attention 模块 :,公式如下:

其中 F 是一个包含残差的前向连接,A 表示的是 attention 计算结果,A 的计算时间和空间复杂度为 ,所以对于长文本而言,这个公式就会存在一个瓶颈。 中有三个重要的权重 ,用于计 、、,,这里使用 表示一个矩阵的第 行,用 来表示 A 函数的输出,那么有如下公式成立:

其中 表示的是一个 token 的向量,来自于多个 的加权和, 表示点乘,可以理解为相似度,计算每一个 的时间复杂度为 O(N),这里就可以看到时间复杂度与输入序列长度 成平方关系。如果 ,就是 softmax 了。

线性复杂度的self-attention

根据上面的公式,我们可以使用一个相似的方法,去计算 attention 矩阵,我们的目的是希望,、 的计算式可以拆分的成线性的,而不是跟 softmax 一样不可拆分,所以对 进行如下表示:

其中 是将 和 映射到另外一个隐空间,我们重写上一节的公式得到了:

因为矩阵乘法的结合律,我们就可以得到如下公式是成立的:

这样就解决了计算复杂度的问题,可以参见下面的图:

上图已经很明显的标出了其复杂度,当 ,时间复杂度与输入序列长度的关系显而易见。那么之前的解法有哪些呢,综上所以,核心点是寻找一个可以拆分的 方法,一种方法是希望找到 softmax 的一个近似值,比如 RFA 和 Performer。

另外一种是进行替换,比如 linear transformer 直接替换了 softmax,先使用 将 、 的分量变成非负的,然后直接 得到非负的 Attention 矩阵。但是在我们的实验中,我们发现这种方法对于长距离任务而言,效果并不好(见上图),本论文也是提出了另外的方法替换 softmax 实现了更好的性能。

softmax attention的分析

在标准的 self-attention 中,,实际上是在 矩阵的行上面做了一个 re-weighting,换句话说,是对一个 token 和其他 token 的关联关系权重做了一个 re-weighting,然而抛开之前的论文和经验,softmax-attention 的关键和必要特征是什么呢?(作者的意思应该是,这里要抛开之前的解释,只谈这个矩阵的特征,我对这句话的理解是深度学习本身也不需要解释,即使解释不了,也可以拟合得到好的效果,欢迎指正)。


这里很容易得到两个重要的特征,1、 矩阵是非负的 2、提供了一个非线性的 re-weighting 机制,拟合权重的分布,增加训练稳定性。为了验证上面的猜想,设计了一些实验,实验结果在下面表格中。

上图中 表示对 、 都乘以单位阵,值没有任何变化, 对 、 激活后负数会变小,正数不变。 对 、 进行激活,这样所有分量就非负了, 表示标准的 attention 权重计算,上面的实验是依次增加我们总结的关键点。


首先验证非负的的重要性,上图中 表示单位阵,即不对输入进行任何转化,对比 和其他中实验的结果可以看到非负是比较重要额,其次验证 re-weighting 的重要性,其中 softmax 是唯一进行了 re-weighting 的,同其他三个进行比较也可以看到其区别。

对比 和 可以看到,softmax 可以让模型更快收敛,对于很多下游任务更好(图里面有两个都更好一些),这可能是因为 softmax 会放大数值,模型会更加关注一些敏感的模式。

COSFORMR

针对之前的观察,我们提出了 COSFORMER,保留了 Attention 矩阵的非负性和 re-weighting 权重。COSFORMER 包含了两个重要的模块:线性的映射核函数 ,用于保证非负性;cos-Based re-weighting 机制,线性核函数 呼应了最开始的 ,定义如下:

负责将 映射到 , 是一个可以拆分的的相似度计算方法。本文定义了一方面保证 非负,另外又是非线性的转换。因此我们可以得到 的表示如下:

,继续进行变换得到下面的等式:

这样子就已经让时间复杂度降下来了,换句话说就是本来标准的 self-Attention: = [(向量·向量=标量)]*向量 ,换成了一个 Q、K、V 三个矩阵点乘,这个满足结合律,可以交换计算的先后顺序,没懂可以看上面的图,Linear Transfomer 就是这么干的,做完这个还不够,还需要对权重进行 re-weighting,加速收敛,增强稳定性。

而 re-weighting 设计的目标也是必须可以拆分的函数,作者在设计这个函数的时候,首先分析了 softmax 起到的作用,然后构思了一个可以拆分的 cos-Based Re-weighting。

cos-Based Re-weighting Mechanism

进行非线性的 re-weighting 去拟合分布,可以加速收敛,稳定训练过程。我们同样发现,由于 其收缩放大的属性,可以惩罚远距离的 token 权重,增大近距离的局部上下文权重。可以参考下面的两张图:

针对这两点,提出了 cos-Based Re-weighting 方法,

根据 Ptolemy 定理,我们可以进行拆分:

其中 表示位置,,M 是一个超参,代码中通常用的就是 seq_length(causal attention 对应的是 query 和 key 中最长的), 表示的就是距离,距离越远, 越大, 上面的值就小;令

, 得到下面的公式:

推导过程如下:

最终,在不损失标准 Tansformer 优势的情况下,我们的到 COSFORMER 公式如下:

与位置编码的关系

上面的公式中,我们可以看到公式中存在 这样的位置关系,cosformer 提出了一种新的想法,可以解释为相对位置偏差。相较于 Rotary Position Embedding(2021 RoFormer),参考苏神:Transformer升级之路:博采众长的旋转式位置编码,膜拜下苏神。相较于 Stochastic Positional Encoding(2021),它是利用采样策略近似 softmax,并且使用了相对位置编码。

代码

代码作者已经实现了,自己大概看了下,长距离下对计算速度是有提升的,总结起来就是论文的第一张图。有兴趣可以自己看下,cosFormer 论文内的伪代码贴在下面了。

作者的 Pytorch 实现 Github:

https://github.com/OpenNLPLab/cosFormer

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

ICLR 2022 | 在注意力中重新思考Softmax,商汤提出cosFormer实现多项SOTA相关推荐

  1. 【ICLR 2022】在注意力中重新思考Softmax,多个任务达到SOTA

    来源:机器之心 来自商汤.上海人工智能实验室等机构的研究者用线性 COSFORMER 来取代 transformer 中的 softmax 注意力机制,在多项任务上达到最优. Transformer ...

  2. ICLR 2022 | 商汤提出cosFormer:在注意力中重新思考Softmax

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 转载自:机器之心  |  编辑:杜伟.陈萍 来自商汤.上海人工智能实验室等机构的研究者用线性 COSFORM ...

  3. 在注意力中重新思考Softmax:分解非线性,这个线性transformer变体实现多项SOTA

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨机器之心 编辑丨极市平台 导读 来自商汤.上海人工智能实验室等 ...

  4. 港中文商汤提出SMCA:用于DETR快速收敛的空间调制协同注意力

    为了加速DETR收敛,本文提出了一种简单而有效的方案来改进DETR框架,即空间调制协同注意(SMCA)机制.即插即用,让DETR涨点明显.性能优于可变形DETR.DETR等网络. 注1:文末附[Tra ...

  5. SEPC:商汤提出使用3D卷积从FPN中提取尺度不变特征,涨点神器 | CVPR 2020

    论文提出PConv为对特征金字塔进行3D卷积,配合特定的iBN进行正则化,能够有效地融合尺度间的内在关系,另外,论文提出SEPC,使用可变形卷积来适应实际特征间对应的不规律性,保持尺度均衡.PConv ...

  6. 【深度好文】ICLR 2022 | cosFormer:重新思考注意力机制中的Softmax

    关注公众号,发现CV技术之美 导读:Transformer在自然语言处理.计算机视觉和音频处理方面取得了巨大成功.作为其核心组成部分之一,Softmax Attention模块能够捕捉长距离的依赖关系 ...

  7. 博客文章也能中顶会:ICLR 2022开设博客投稿通道,还有机会跟经典论文原作者直接battle...

    兴坤 发自 凹非寺 量子位 报道 | 公众号 QbitAI 盆友们,ICLR今年有新的打开方式了--博客文章征集. 非正式讨论的自由平台,往往更容易发现问题.激发新的思考.因此新一届ICLR计划增加论 ...

  8. 特斯拉AI高管都推荐的张量工具,开源了三年后终于中顶会了! | ICLR 2022 Oral

    博雯 发自 凹非寺 量子位 | 公众号 QbitAI 那个在GitHub标星4.3k的张量操作工具Einops,在开源三年后终于中了顶会! 这是一个统一的.通用的操作张量结构的方法,基于爱因斯坦求和约 ...

  9. ICLR 2022 | 基于对抗自注意力机制的预训练语言模型

    ©作者 | 曾伟豪 单位 | 北京邮电大学 研究方向 | 对话摘要生成 论文名称: Adversarial Self-Attention For Language Understanding 论文来源 ...

最新文章

  1. RasberryPi快速启动(适合首次接触树莓派学习者)
  2. 用python开发的网站多吗-django可以开发大型网站吗
  3. [AI开发]目标跟踪之行为分析
  4. java 之选择排序与冒号排序的详解
  5. 记-纯前端excle下载
  6. Android软件开发之盘点自定义View界面大合集(二)
  7. x265-bitstream.h
  8. ubuntu apache配置负载均衡篇(一)
  9. php中file对象实例,AJAX_File, FileReader 和 Ajax 文件上传实例分析(php),File FileReader 可以干什么? Ajax - phpStudy...
  10. 酒店客房管理系统任务汇报1
  11. Python——集合与字典练习
  12. 京东搜索排序在线学习的 Flink 优化实践
  13. 快速查找文件的神器Listary
  14. java实现Tomasulo算法_并行计算机组成与设计pdf
  15. 开宗明义—UEFI介绍 (二)
  16. 异方差及stata命令
  17. css样式后面显示点点点
  18. chm 已取消到该网页的导航,打不开
  19. matlab 使用c2d的离散化笔记
  20. hp服务器装2012系统还原,用HP GEN8+WIN2012+Hyper V+黑群晖5.2组建家庭NAS中心 篇四:WIN 2012 安装 存储池调试及修复...

热门文章

  1. Altium designer--变压器封装图
  2. 高并发解决方案_高并发提交订单的解决方案
  3. python人脸识别训练模型_开源 | 基于Python的人脸识别:识别准确率高达99.38%!
  4. JZOJ5906 传送门
  5. SSM启动服务时将数据存入缓存
  6. MSSQL系统常用视图命令及其作用
  7. 车位预定查询html格式,停车场车位预定方法
  8. python里pai_关于python如何调用win32pai操作cmd的方法
  9. 基类的构造函数也可以被继承_「C++ Primer plus 心得」13.类继承
  10. numpy 若干行和列_Numpy的轴,pandas的行和列