查看原文
其他

【综述专栏】进化吧,self_attention

在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。

作者:知乎—wangj

地址:https://www.zhihu.com/people/qi-yue-wu-yi-51-6

自Transformer出现以来,各种对Transformer的改进层出不穷,如BERT,Transformer-xl等,其中BERT等预训练模型的出现更是为NLP打开了一个新的天地,但是这些模型的改进更多是对于Tranformer的结构的改进,如只使用了Encoder/Decoder部分,改变激活函数等,而对于self_attention的改变的模型很少,Transformer-xl对self_attention的结构做了一些改变,本质上没什么改变,而Reformer将attention改为了LSH attention,这个是为了减少计算量,以上的改变都是因为其他原因,本质上不是因为self_attention有问题,但是self_attentino没问题吗?有!根据论文Low-Rank Bottleneck in Multi-head Attention Models 提出,self_attention存在一个低秩问题,下面就介绍一下什么是低秩问题。(如果对秩不太了解可以百度一下)

01

Single-Head Attention
对于一个单头注意力机制来说,self_attention公式为 
令  ,
则  ,
 ,
因为这个是单头注意力机制,所以  ,然后经过一个线性层和Layernorm层  得到最终的输出。
所以得到Theorem 1,即如果  ,那么给定全列秩矩阵  和正的列随机矩阵(每一列的和为1,且都为正数),存在  维度的  使得  成立,但是如果  ,则此公式不一定成立。
论文给出了在  两种情况下的证明,有兴趣的可以去看论文中的证明过程。

02

Multi-Head Attention
对于多头注意力机制来说,每个头的公式为
 
总的公式为
attention层的输出经过线性层和Layernorm层  , 其中  的维度为  。
根据Theorem 1,如果头的向量维度  ,则有些  的存在,对于任何  ,使得  经过  转换之后都无法和  相等,而对于多头注意力机制,每个头的向量维度  远小于  ,这就产生了低秩瓶颈。但是由于模型的句子输入长度是之前就已经固定的,所以  是确定的,那只能改变  ,但是减少头的数量会使得模型很难充分学习到上下文的语义信息,增加向量的维度会使得模型的计算开销大大增加,所以论文提出了一个新的多头注意力机制Fixed Multi-Head Attention。

03

Fixed Multi-Head Attention
相比于原本的Multi-Head Attention,并没有太大的改变,公式为
相比于前面的attention机制中将q,k,v的维度  和头的数量  挂钩,即头的数量乘上每个头的向量维度就得到了最初的维度  ,Fixed Multi-Head Attention将这个联系取消了,q,k,v的维度和头的数量没联系,是一个固定值,这也是为什么叫Fixed的原因,公式如下所示:
当然,  要比  的维度要大,但是fixed multi-head attention层的输出还会经过一个线性层,完全可以将维度变换回去,不会对后面层有影响,另外,由于只是在attention层增加了向量的维度,对整体的计算量和参数量有一定的增加,但是并没有增加太多。
论文后面还给出了Theorem 2,有兴趣的可以看一下,主要就是说明fixed multi-head attention的表达能力要比multi-head attention要强。
除了上面的这篇论文外,还有另一篇论文也是对self_attention层进行的改进,论文为Talking-Heads Attention(吐槽一下,这篇论文的作者都来自Google,但是这个论文的风格真是一言难尽,让人很难想象这是Google大佬们写的论文,看看下面两幅图的对比,第一幅为这篇论文,第二幅为上面那篇论文的)。
先回顾一下各种Attention算法,论文给出的都是伪码,但是感觉就像是Python代码直接粘贴过来了。

04

Dot-Product Attention

05

Dot-Product Attention With Projections

06

Multi-Head Attention
接下来就是本篇论文提出的attention算法

07

Talking-Heads Attention
相比于上面的Multi-Heads Attention,Takling-Heads Attention只增加了两个线性层,本质上就是将不同头之间的信息进行融合,对于单个头来说存在低秩问题,但是将不同头的信息互相之间进行融合,从而使得每个头相当于不同的低秩分布的叠加,这样低秩问题很大程度上就解决了(只要我叠的够多,我就是满秩 )
最后再看看大佬们的实验,一句话形容就是有钱真的可以为所欲为

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“综述专栏”历史文章


更多综述专栏文章,

请点击文章底部“阅读原文”查看



分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存