Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
ReadingList
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
zengxin
ReadingList
Commits
539c46de
Commit
539c46de
authored
Jun 05, 2022
by
zengxin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
new
parent
c540b4c2
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
17 行增加
和
108 行删除
+17
-108
长序列transformer/SELF-ATTENTION DOES NOT NEED O(n2).pdf
+0
-0
长序列transformer/readme.md
+17
-80
长序列transformer/~$复杂度分析.docx
+0
-0
长序列transformer/总结.md
+0
-28
没有找到文件。
长序列transformer/SELF-ATTENTION DOES NOT NEED O(n2).pdf
deleted
100644 → 0
查看文件 @
c540b4c2
File deleted
长序列transformer/readme.md
查看文件 @
539c46de
#### transformer
Transformer针对长序列问题的改进,主要有两种思路,一种是通过分段递归机制维护长序列的上下文信息,另一种是使用更高效的注意力机制。第一类方法比较有代表性的工作有transformer-xl(2019),该方法虽然为模型赋予了处理长序列的能力,但是此类方法的时间和空间复杂度依然较高。
#### transformer
Transformer针对长序列问题的改进,主要有两种思路,一种是通过分段递归机制维护长序列的上下文信息,另一种是使用更高效的注意力机制。第一类方法比较有代表性的工作有transformer-xl(2019),该方法虽然为模型赋予了处理长序列的能力,但是此类方法的时间和空间复杂度依然较高。
*
代码
:
第二类方法,即针对注意力机制的改进又可以分为
:
https://www.bilibili.com/video/BV1vf4y1n7k2?spm_id_from=333.337.search-card.all.click
*
使用低秩矩阵或核函数的思想构建复杂度更低的注意力机制,相关工作有 Linformer(2020)、Linear Transformer(2020)和 Random Feature Attention(2021)。Softmax 注意力机制的复杂度$O (n^2)$来源于softmax函数,因此这类方法的主要思想是使用别的方法来替代softmax函数,降低注意力机制的复杂度。其中 Linformer 对 K 和 V 应用核方法降低序列维度,但该操作同时也把整个序列的信息柔和在了一起,因此没办法对未来信息进行 Mask,无法做语言模型、seq2seq 等任务。而 Random Feature Attention 没有这方面的问题,该方法采用循环神经网络的思想,在模型的每个时间步都维护一个蕴含历史信息的隐层向量,以此达到只使用 prefix 信息的目的【与Mask效果相同】。
*
改进注意力的计算过程,相关工作有 luna (2021) 和 less memory (2022) 。其中 luna 将注意力的过程拆分为两个阶段,第一个阶段先使用一个注意力得到一个固定长度的结果(长度小于句长n,类似于压缩的思想),第二个阶段再使用一次注意力计算对压缩的结果进行注意力计算,该方法可以与别的注意力改进方法相结合。less memory 将 QKV 拆分成子片段,依次对这些片段进行注意力计算,再将结果合并,以降低注意力所需要的内存,该方法的不足是其时间复杂度仍然为$O (n^2)$。
*
此外还有其他改进方法,相关工作有 Reformer(2020) 和 Big bird(2020) 。其中 Reformer 使用局部哈希敏感注意力机制,该方法复杂度高,复现困难,只有当序列长度大于 2048 时才会有效率提升。与Reformer 相较而言,Big bird 更加优秀。
*
论文解析
https://s3.us-west-2.amazonaws.com/secure.notion-static.com/501fb338-a6b0-484a-8a16-713dd40251de/Attention_is_All_You_Need.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20220528%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20220528T025015Z&X-Amz-Expires=86400&X-Amz-Signature=0b05cc2d12e341759809fda198f1dacfeb2dbafa2465a2203d2956f955ee251b&X-Amz-SignedHeaders=host&response-content-disposition=filename%20%3D%22Attention%2520is%2520All%2520You%2520Need.pdf%22&x-id=GetObject
*
面临问题:
*
处理长序列时效率低,主要原因是 self-attention的计算(n^2
* d)和内存复杂度(参数量:4 *
d^2 + 相关性矩阵 T
*
T)较高。改进方法包括轻量级注意力模块(例如稀疏注意力),和分而治之的方法(例如循环和分层机制)
-
| 论文 | 时间复杂度 | 空间复杂度 | 性能 | 不足 | 思想 |论文信息 |
| :--------: | :--------: | :--------: | :--------: | :--: | :--: | :-----: | ------- |
| softmax-attention | $O (n^2)$ | $O (n^2)$ | / | 相关性矩阵计算的时间与空间复杂度高,序列长度较长时,模型所需要的计算时间会变长,且容易OOM | / |Attention is all you need|/|
| Transformer-xl | $O (n^2)$ | $O (n^2)$ | 可以处理比transformer长4.5倍的序列。在长序列和短序列中的效果都很好。 | 维护上下文会带来额外的计算成本 | 使用分段递归机制增加self-attention的context长度,以此来更好的处理长序列 |ACL 2019, 引用量1728|
| Reformer | $O(nlogn)$ | $O(nlogn)$ | 内存效率更高,对长序列处理时速度更快 | 1) 方法复杂,复现的难度大。 2) 只有当长度大于2048时,才会有效率提升。 | 使用局部敏感哈希(LSH)注意力机制,降低注意力的计算复杂度 |Google research,ICLR 2020,引用量698||
| Linformer | $O(n)$ | $O(n)$ | 相较于Transformer而言,可大大降低长序列所需推理时间 | 没办法对未来信息进行Mask,无法做语言模型、seq2seq等任务 | 使用低秩矩阵近似self-attention |Facebook AI,arxiv 2020,引用量377||
| Linear Transformer | $O(n)$ | $O(n)$ | 在长序列自回归推断时,速度比transformer快了4000倍 | / | 将自我注意表示为核特征映射的线性点积 | ICML 2020,引用量326 ||
| Big bird | $O(n)$ | $O(n)$ | 该方法使得相同硬件可以处理的序列长度增加八倍 | / | 稀疏注意力(同时结合了Random attention、Window attention和Global Attention) | Google research,NeurIPS 2020,引用量461 ||
| Random Feature Attention | $O(n)$ | $O(n)$ | 对于长度为2048的序列,推断速度可提升12倍。该方法适用于需要加速或长序列的任务中。 | / | 使用随机特征函数对softmax进行近似 | ICLR 2021,引用量87 ||
| Luna | $O(n)$ | $O(n)$ | 可以与别的改进注意力的方法叠用 | / | 拆分整个注意力的计算为两个部分,以此达到降低复杂度的目的。先使用一个注意力得到一个固定长度的结果(长度小于句长n,类似于压缩的思想),再使用一次注意力计算对压缩的结果进行注意力计算。 | NeurIPS 2021,引用量19 ||
| Less memory | $O(n^2)$ | $O(logn)$ | 对于长度为16384的序列,自注意机制所需要的内存减少了59倍 | 时间复杂度较高 | 分段式计算,有点归并计算的感觉 |Google research,arxiv 2022,引用量4||
### 注意力改进方面
#### Linformer,2020,arxiv,引用377,Facebook AI
*
低秩注意力机制,o(n)的时间和空间复杂度
*
#### Linear Transformer,2020【**Transformers are RNNs:**Fast autoregressive transformers with linear attention】,326引用,Idiap Research Institute, Switzerland,ICML
*
O(N)
*
https://zhuanlan.zhihu.com/p/157490738?from_voters_page=true
#### big bird,2020,461引用,NeurIPS,Google Research
*
稀疏注意力机制,降低注意力机制的存储【原注意力存储为n^2,这个稀疏注意力的存储为线性】
#### Random Feature Attention ,2021,ICLR,87引用,华盛顿大学**Hao Peng**
*
线性时间复杂度
*
#### luna,**Linear Unified Nested Attention**,2021,19个引用,NeurIPS,美国南加州大学ISI实验室
*
只产生线性的时间和空间复杂度
#### ABC: Attention with Bounded-memory Control,ACL,2022,华盛顿大学**Hao Peng**,3个引用
#### Long-range Sequence Modeling with Predictable Sparse Attention,ACL,2022,0 引用,中国三星研究院
#### SELF-ATTENTION DOES NOT NEED O(n 2 ) MEMORY, arxiv,2021,google research,4引用
*
提出了一个简单的注意力算法,只需要o(lgn)的内存,对于长度为16384的序列,自注意机制所需要的内存减少了59倍
*
分段式计算
### 模型结构改进方面
#### transformer-xl,2019,ACL,
*
背景(别人怎么做的,有什么局限)
*
具体方法
*
分段递归机制
*
新的位置编码策略
*
效果
*
依赖距离比RNN长80%,比transformer长450%
*
在长序列和短序列中的效果都很好
*
评估时比transformer快1800倍
*
下一步优化方向是什么
#### reformer,2020,ICLR
*
使用局部敏感哈希注意力机制,降低注意力的计算复杂度,时间复杂度和空间复杂度都是O(nlogn)
*
使用可逆的残差网络(可减少参数)
*
内存效率更高,对长序列处理时速度更快
*
Linformer,2020描述了该方法的缺点【只有当长度大于2048时,才会有效率提升,此外Reformer的多轮哈希方法实际上增加了顺序操作的数量,这进一步削弱了它们最终的效率收益】
*
为了能够使用LSH, Reformer将key约束为与query相同,因此该方法不能用于解码Key与query不同的任务
#### informer
*
ProbSparse注意力机制,将时间和空间复杂度都降低至O(nlogn)
*
自注意力蒸馏(进一步降低参数)
*
生成式decoder
长序列transformer/~$复杂度分析.docx
deleted
100644 → 0
查看文件 @
c540b4c2
File deleted
长序列transformer/总结.md
deleted
100644 → 0
查看文件 @
c540b4c2
Transformer针对长序列问题的改进,主要有两种思路,一种是通过分段递归机制维护长序列的上下文信息,另一种是使用更高效的注意力机制。第一类方法比较有代表性的工作有transformer-xl(2019),该方法虽然为模型赋予了处理长序列的能力,但是此类方法的时间和空间复杂度依然较高,模型处理长序列的能力受限制于硬件环境。
Transformer针对长序列问题的改进,主要有两种思路,一种是通过分段递归机制维护长序列的上下文信息,另一种是使用更高效的注意力机制。第一类方法比较有代表性的工作有transformer-xl(2019),该方法虽然为模型赋予了处理长序列的能力,但是此类方法的时间和空间复杂度依然较高,模型处理长序列的能力受限制于硬件环境。
第二类方法,即针对注意力机制的改进又可以分为:
*
使用低秩矩阵或核函数的思想构建复杂度更低的注意力机制,相关工作有 Linformer(2020)、Linear Transformer(2020)和 Random Feature Attention(2021)。Softmax 注意力机制的复杂度$O (n^2)$来源于softmax函数,因此这类方法的主要思想是使用别的方法来替代softmax函数,降低注意力机制的复杂度。其中 Linformer 对 K 和 V 应用核方法降低序列维度,但该操作同时也把整个序列的信息柔和在了一起,因此没办法对未来信息进行 Mask,无法做语言模型、seq2seq 等任务。而 Random Feature Attention 没有这方面的问题。
*
改进注意力的计算过程,相关工作有 luna(2021) 和 less memory(2022) 。其中 luna 将注意力的过程拆分为两个阶段,第一个阶段先使用一个注意力得到一个固定长度的结果(长度小于句长n,类似于压缩的思想),第二个阶段再使用一次注意力计算对压缩的结果进行注意力计算,该方法可以与别的注意力改进方法相结合。less memory 将 QKV 拆分成子片段,依次对这些片段进行注意力计算,再将结果合并,以降低注意力所需要的内存,该方法的缺点是其时间复杂度仍然为$O (n^2)$。
*
此外还有其他改进方法,相关工作有 Reformer(2020) 和 Big bird(2020) 。其中 Reformer 使用局部哈希敏感注意力机制,该方法复杂度高,复现困难,只有当序列长度大于 2048 时才会有效率提升,并且为了能够使用局部哈希敏感,Reformer 将 key 约束为与 query 相同,因此该方法不能用于解码 Key 与query 不同的任务。相较之下,Big bird 更加优秀。
-
| 论文 | 时间复杂度 | 空间复杂度 | 性能 | 不足 | 思想 |论文信息 |
| :--------: | :--------: | :--------: | :--------: | :--: | :--: | :--: |
| softmax-attention | $O (n^2)$ | $O (n^2)$ | / | 相关性矩阵计算的时间与空间复杂度高,序列长度较长时,模型所需要的计算时间会变长,且容易OOM | / |Attention is all you need|
| Transformer-xl | $O (n^2)$ | $O (n^2)$ | 可以处理比transformer长4.5倍的序列。在长序列和短序列中的效果都很好。 | 维护上下文会带来额外的计算成本 | 使用分段递归机制增加self-attention的context长度,以此来更好的处理长序列 |ACL 2019, 引用量1728|
| Reformer | $O(nlogn)$ | $O(nlogn)$ | 内存效率更高,对长序列处理时速度更快 | 1) 方法复杂,复现的难度大。 2) 只有当长度大于2048时,才会有效率提升。 3)为了能够使用LSH, Reformer将 key 约束为与 query 相同,因此该方法不能用于解码 Key 与 query 不同的任务 | 使用局部敏感哈希(LSH)注意力机制,降低注意力的计算复杂度 |Google research,ICLR 2020,引用量698|
| Linformer | $O(n)$ | $O(n)$ | 相较于Transformer而言,可大大降低长序列所需推理时间 | 没办法对未来信息进行Mask,无法做语言模型、seq2seq等任务 | 使用低秩矩阵近似self-attention |Facebook AI,arxiv 2020,引用量377|
| Linear Transformer | $O(n)$ | $O(n)$ | 在长序列自回归推断时,速度比transformer快了4000倍 | / | 将自我注意表示为核特征映射的线性点积 | ICML 2020,引用量326 |
| Big bird | $O(n)$ | $O(n)$ | 该方法使得相同硬件可以处理的序列长度增加八倍 | / | 稀疏注意力(同时结合了Random attention、Window attention和Global Attention) | Google research,NeurIPS 2020,引用量461 |
| Random Feature Attention | $O(n)$ | $O(n)$ | 对于长度为2048的序列,推断速度可提升12倍 | / | 使用随机特征函数替代softmax | ICLR 2021,引用量87 |
| Luna | $O(n)$ | $O(n)$ | 可以与别的改进注意力的方法叠用 | / | 拆分整个注意力的计算为两个部分,以此达到降低复杂度的目的。先使用一个注意力得到一个固定长度的结果(长度小于句长n,类似于压缩的思想),再使用一次注意力计算对压缩的结果进行注意力计算。 | NeurIPS 2021,引用量19 |
| Less memory | $O(n^2)$ | $O(logn)$ | 对于长度为16384的序列,自注意机制所需要的内存减少了59倍 | 时间复杂度较高 | 分段式计算,有点归并计算的感觉 |Google research,arxiv 2022,引用量4|
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论