Self-Attention Mechanism

 

 

在计算 Attention 时主要分为三步,第一步是将 query 和每个 key 进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等;然后第二步一般是使用一个 softmax 函数对这些权重进行归一化;最后将权重和相应的键值 value 进行加权求和得到最后的 Attention。

目前在 NLP 研究中,key 和 value 常常都是同一个,即 key=value。

 

 

Attention有三个输入:query,keys,values,一个输出,选择三个输入是考虑到模型的通用性(Generative)。输出是value的加权求和,value的权重来自于query和keys的乘积,经过一个softmax之后得到。

 

 

多头 Attention(Multi-head Attention)结构如下图,Query,Key,Value 首先进过一个线性变换,然后输入到放缩点积 Attention,注意这里要做 h 次,其实也就是所谓的多头,每一次算一个头。而且每次 Q,K,V 进行线性变换的参数 W 是不一样的。然后将 h 次的放缩点积 Attention 结果进行拼接,再进行一次线性变换得到的值作为多头 Attention 的结果。

可以看到,Google 提出来的多头 Attention 的不同之处在于进行了 h 次计算而不仅仅算一次,论文中说到这样的好处是可以允许模型在不同的表示子空间里学习到相关的信息,后面还会根据 Attention 可视化来验证。

 

 

Multi-Head Attention:对输入K,V,Q,,采用不同的权重,连续进行H次Scaled Dot-Product Attention,类似于卷积网络里面采用不同的卷积核多次进行卷积操作。Multi-Head Attention可以使模型从不同的角度来获取输入X的不同subspaces representation。同时,对每个维度多了reduce,使multi=head attention总的计算量与single-head attention一致。

 

 

3)、结构中逐项的feed-forward网络作用

Attention的sublayer之间嵌入一个FFN层,两个线性变换组成:FFN(x)=max(0,x*W1 + b1)W2 + b2。同层拥有相同的参数,不同层之间拥有不同的参数。目的应该是提高模型特征抽取的能力,考虑到效率,选择两个线性变换。

 

Reference

https://zhuanlan.zhihu.com/p/35041012

https://zhuanlan.zhihu.com/p/51089880

https://zhuanlan.zhihu.com/p/27485097

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值