Lecture 5:Self-attention

本节介绍各式各样的Self-attention的技术

预备知识:见Lecture 4(Preparation):Self-attention部分

回顾Self-attention的知识:Self-attention需要处理输入的sequence,设这个sequence的长度为N。做Self-attention的时候会产生N个key的vector和N个query的vector,它们两两之间要做dot product,一共要做N^2次dot product。把N^2次dot product的结果集合起来就得到一个N*N大小的Attention Matrix。

Self-attention的痛点是当input sequence非常长的时候,即N非常大的时候,要得到N*N的Attention Matrix,运算量会非常惊人。

下面介绍加速计算Attention Matrix的方法:

        ① Local Attention/Truncated Attention

        ② Stride Attention

        ③ Global Attention

        Add special token into original sequence

  •                 Attend to every token - collect global information
  •                 Attended by every token - it knows global information

可以将上面这些方法组合起来使用,在Multi-head Self-attention中,不同的head使用不同的方法:

上面三种方法都是人为设定的,由人来规定Attention Matrix哪些位置需要计算,哪些位置直接补0。但是人为的设定不一定能得到最好的结果。

        ④ Clustering

        ⑤ Learnable Patterns

以上五种方法都会产生一个N*N的Attention Matrix,Linformer的文章中指出Attention Matrix里会有很多redundant的columns,如下图,所以我们并不需要一个N*N的Attention Matrix,里边会有很多重复的资讯:

        ⑥ 减少Attention Matrix的大小

        通过减少key的数量来减少Attention Matrix的大小。query在有的情况下可以减少,有的情况下不可以。当输入N个sequence,输出也是N个sequence的时候,减少query会改变输出的数量,此时query不可以减少。

        有两种方式可以减少key的数量,如下图:

        ⑦ 改变矩阵计算的顺序

        Attention Mechanism是由三个矩阵相乘得到的:

        忽略掉softmax这一过程,把矩阵相乘顺序由V*(KT*Q)变为(V*KT)*Q,可加速运算:

        把softmax加回来,推导可得输出的计算公式如下,计算所有的输出(所有的bi)时,每个bi计算公式中黄色和蓝色的矩阵都是相同的,所以分别只需要计算一次就可以得到黄色和蓝色的矩阵,后续直接用这两个矩阵即可:

        ⑧ 不一定要使用q和k计算产生Attention Matrix——Synthesizer

        把Attention Matrix里的元素当做network的parameters:

        ⑨ Attention-free

        把Attention去掉,下面是一些Attention-free的方法:

        一系列Self-attention方法的对比:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值