【论文笔记2】Long-Short Transformer: Efficient Transformers for Language and Vision
2021/7/29 23:10:19
本文主要是介绍【论文笔记2】Long-Short Transformer: Efficient Transformers for Language and Vision,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
论文原文:https://arxiv.org/abs/2107.02192
论文笔记:百度网盘提取码:nzsi
1. Summary Contributions:
- (1)提出了一种长短时Transformer模型:Long-Short Transformer (Transformer-LS):
- Short:利用滑动窗口获取短序列(局部)attention
- Long:基于动态投影获取长序列(全局)attention
- (2)在Long-Transformer中提出动态投影方法
- (3)提出 DualLN(双向归一化)来解决不同term下维度不一致的问题
- (4)可以很好加入视觉Transformer模型中取得好效果
2. 基于滑动窗口计算Short-term Attention(双向模型)
-
Step1:图中每一行表示一个序列,长度n为8,将序列复制8次得到矩阵;(1维)窗口宽度为2,节点特征维度为d=3。
-
Step2:序列左右各有一个大小为w/2的padding,用长度为w的窗口将序列分为不相交的多等分,计算attention
由于每个窗口包含w个token,但关注了2*w个token,因此:- input:n × d
- output_attention:2w × d
-
这里每一个token的output_attention相当于其关于自身以及上下文信息的聚合,所以是short-term(局部)
3. 基于动态投影计算Long-term Attention(自回归模型)
- 直观理解:利用低秩矩阵将节点数量维度 N 投影至更低维 r(r根据输入序列长度决定)
- Step1:根据K构造投影矩阵Pi,从而Pi维度变为 n × r,其中r<<n,达到低秩的目的
- Step2:通过以下两公式,将K和V的维度从n×d变为 r×d,
扩展到多头即为如下公式,其中Q维度还是n×d,所以最终输出序列个数还是与原始相同
- Step3:将Long-term Attention用于自回归模型中
- (1):将Input划分为多个等长的L(相当于w)
- (2):对于每个内部的patch,关注前面一个L和当前窗口内左边的token
- (3)将该Attention计算方式放入自回归模型中:
- (4)并行计算每个L的attention,后将结果拼接起来:
最终输出的output_shape 为 r × dk
- (4)并行计算每个L的attention,后将结果拼接起来:
4. DualLN:双向归一化
- 问题:如果直接拼接后进行LayerNorm:标准化后均值为0,而由于使用多头注意力机制进行加权平均的时候,会减小均值为0的向量的方差,从而减小该向量的范数。而对于Long和Short而言,其节点维度不同(Long>>Short),故Long这边的范数相对Short而言会较小,导致梯度更小,阻碍模型训练
- 解决:分别进行LN后再拼接,公式如下
5. 小结
- (1)提出了short term的双向模型和Long-term的自回归模型,对比如右图:其在长序列数据处理中表现较好,主要是因为经过动态投影降低了attention的计算复杂度,所以序列越长相较而言越占优势。
- (2)通过动态投影降低了attention的计算复杂度。
传统的attention计算复杂度为O(n2),改进后由于将输入节点维度投影至r,而r是一个超参数,将使得计算复杂度降为了O(r*n) - (3)针对序列化数据,LSTM将上下文信息通过从网络浅层传至网络深层体现序列化,而LS-Transformer把序列化信息体现在attention的计算过程上。(有待考虑)
这篇关于【论文笔记2】Long-Short Transformer: Efficient Transformers for Language and Vision的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享