ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

点积注意力机制SDPA与多头注意力机制MHA

2021-07-28 10:57:58  阅读:326  来源: 互联网

标签:model dmodel 点积 Attention MHA SDPA dv 机制 注意力


点积注意力机制SDPA与多头注意力机制MHA

SDPA

SDPA的全称为Scaled Dot-Product Attention, 属于乘性注意力机制, 简单一句话来说就是,根据Query (Q)与Key之间的匹配度来对Value进行加权,而事实上不管是Query, Ke还是Value都来自于输入,因此所谓的SDPA本质上是对输入信息信息进行重组。
SDPA的形式化定义如下:
S D P A = A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q ⋅ K T ( d k ) ) ⋅ V SDPA=Attention(Q, K,V)=softmax(\frac{Q \cdot K^{T}}{\sqrt(d_{k})}) \cdot V SDPA=Attention(Q,K,V)=softmax(( ​dk​)Q⋅KT​)⋅V
其中,各个变量的尺寸如下:
Q: [n, d k d_{k} dk​], 表示n个Query, 每个Query为维度为 d k d_{k} dk​的向量;
K: [m, d v d_{v} dv​], 表示n个Key, 每个Key为维度为 d v d_{v} dv​的向量;
V: [m, d v d_{v} dv​]. 表示n个Value, 每个Value为维度为 d v d_{v} dv​的向量;
注: K和V是以Key-Value对的形式出现的,Key中的每个向量与Value中的每个向量一一对应,
因此SDPA可以看做是如下这样一个映射:
S D P A : R n x d k → R n x d k SDPA: R^{n {\rm x} d_{k}} \rightarrow R^{n {\rm x} d_{k}} SDPA:Rnxdk​→Rnxdk​
注:

  1. 公式中的softmax的输入为一个Matrix, 而softmax操作是逐行进行的, 即 s o f t m a x ( X ) i , j = e x p X i , j ∑ j e x p X i , j softmax(X)_{i,j}=\frac{exp{X_{i,j}}}{\sum_{j}exp{X_{i,j}}} softmax(X)i,j​=∑j​expXi,j​expXi,j​​;

MHA

MHA全称为Multi-Head Attention, 最早出现在NLP领域, MHA是著名的Transformer架构的基本组成单元,最初提出的动机是为了克服经典的Encoder-Decoder架构存在的long-range dependence问题。

MHA简单来说就是通过多次线性投影linear projection得到原始输入的多个子控件,然后再每个子空间分别进行SDPA, 再把SDPA的结果进行聚合Concatenation,最后再做一个linear projection。

MHA的形式化定义如下:
M H A = M u l t i H e a d ( Q , K , V ) = C o n c a t ( h e a d 1 , . . . , h e a d h ) W o MHA=MultiHead(Q, K, V)=Concat(head_{1}, ..., head_{h}) W^{o} MHA=MultiHead(Q,K,V)=Concat(head1​,...,headh​)Wo
其中, h e a d i = A t t e n t i o n ( Q W i Q , K W i K , V W i V ) , i ∈ 1 , 2 , . . . , h head_{i}=Attention(QW_{i}^{Q}, KW_{i}^{K}, VW_{i}^{V}), i \in {1,2,..., h} headi​=Attention(QWiQ​,KWiK​,VWiV​),i∈1,2,...,h, Concat操作的输出的第二个维度为 h ⋅ d v h \cdot d_{v} h⋅dv​.

各个变量的尺寸如下:
W i Q : [ d m o d e l , d k ] W_{i}^{Q}: [d_{model}, d_{k}] WiQ​:[dmodel​,dk​]
W i K : [ d m o d e l , d k ] W_{i}^{K}: [d_{model}, d_{k}] WiK​:[dmodel​,dk​]
W i V : [ d m o d e l . d v ] W_{i}^{V}: [d_{model}. d_{v}] WiV​:[dmodel​.dv​]
注: 原始的Q, K, V的第二个维度都为 d m o d e l d_{model} dmodel​, 通过linear projection得到相应的子空间。
W o : [ h ⋅ d v , d m o d e l ] W^{o}: [h\cdot d_{v}, d_{model}] Wo:[h⋅dv​,dmodel​]
因此,MHA可以看做是如下这样一个映射:
M H A : R n , d m o d e l → R n , d m o d e l MHA: R^{n, d_{model}} \rightarrow R^{n, d_{model}} MHA:Rn,dmodel​→Rn,dmodel​
其中n为sequence的长度, d m o d e l d_{model} dmodel​为每个token向量的维度.
注:
1.在原始论文中作者设置 d k = d v = d m o d e l / h d_{k}=d_{v}=d_{model}/h dk​=dv​=dmodel​/h, 因此 h ⋅ d v h\cdot d_{v} h⋅dv​恰好等于 d m o d e l d_{model} dmodel​.
2. 切记,输入为向量组成的序列, 英文表述为sequence of tokens.

总结

  1. 上边是对SDPA以及MHA最清晰间接的描述, 原论文中是作为Transformer的组成部件来讲的,写的非常简洁, 开始的看原论文的时候在细节问题上比较纠结;
  2. Transformer架构本身包含Encoder和Decoder两部分,Encoder和Decoder都是通过堆砌building block组成, 每个building block包含一个MHA和一个Position-wise Feed Forward Fully connected layer组成。 因此Transfer架构是第一个没有利用任何Convolution operation和Recurrent module搭建起来的网络模型, 并且克服了long range dependency的问题
  3. 当前很多工作吧Transformer用于CV等其他领域, 即所谓的Vision Transformer, 由于原始Transformer处理的是向量,将其用于CV的话需要首先把Figure转化为Vector,会导致memory和computation efficacy完全无法接受,有很多工作尝试解决这些问题。

Reference

  1. NeuIPS 2017, Attention is all you need.

标签:model,dmodel,点积,Attention,MHA,SDPA,dv,机制,注意力
来源: https://blog.csdn.net/QKK612501/article/details/119170687

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有