Lecture 5 -- 各式各样的Self-Attention

1. How to make self-attention efficent?


当我们的输入序列非常长时,self-attention会主导整个网络的计算!

方式一:Local Attention / Truncated Attention

 

方式二:Stride Attention

方式三:Global Attention

 

以上三种方式可以同时使用,不同的头使用不同的Attention Matrix处理方式!

 

 

2. Can we only focus on Critical Parts?


我们是否可以只关注Attention Matrix中数值比较大的相关关系,而数值比较小的相关关系我们直接将其设定为0,不进行计算?

我们如何找到这些重要的部分进行计算?

方式一:Clustering

 

方式二:Learnable Patterns

根据输入设计一个模组,决定哪些querykey之间需要计算inner-product

这个模组是整个网络的一部分,可以跟随整个网络进行训练!

 

 

3. Do we need full attention matrix?


方式一:Reduce Number of Keys

我们可以通过一个卷积神经网络对key的数量进行压缩,或者直接对所有的key进行linear combination

 

 

4. A new view of self-attention


 Review:

一个self-attention运算加速的方式:先计算VKT!和先计算KTQ有什么区别?需要做的乘法运算数目不同!

A new view (qk first -- kv first):

b1

首先是kv进行联动,得到一堆向量,数量与k1的维度一致;

接着是对这堆向量进行线性组合,线性组合的系数是Φ(q1) -- 结果作为分子;

最后是Φ(q1)和所有的Φ(k)求内积并加和 -- 结果作为分母;

分子/分母即为结果b1

 

理论基础:

关键是确定Φ的样子!

 

 

5. Attention free? new framework!


Attention matrix不一定要由qk计算而来,可以作为网络的参数进行学习!

 

 

6. Summary


课件:PowerPoint 簡報 (ntu.edu.tw)

 

 


 END

posted @ 2023-08-06 17:49  Peg_Wu  阅读(62)  评论(0)    收藏  举报