注意力机制的来龙去脉

  • 注意力机制的现实背景
  • 注意力机制的本质
  • 非参数的注意力池化层
  • 参数化的注意力机制
  • 注意力分数设计-attention score function
    • 设计1:query和key加权-加权注意力
    • 设计2:点乘注意力
    • 总结
  • 自注意力机制-self attention
  • 多头注意力机制-multi-head attention
  • 变形金刚 Transformer
  • seq2seq中的注意力机制
  • 注意力机制做算子选择
  • 注意力机制做参数选择

本人目前是研二的学生师从地质大学(武汉)龚文引老师,目前发表SCI 3篇,其中IEEE Trans长文1篇(IEEE Transactions on Evolutionary Computation),发表Elsiver期刊2篇(Expert systems and applications, Computers & Industrial Engineering),在投IEEE Trans长文2篇,在投Elsiver期刊1篇(Swarm and Evolutionary Computation)。另外还有两篇北大中文核心(EI)。获得研究生国家奖学金2次。

在自学注意力机制,参考资料是 动手学深度学习V2-跟李沐学AI

注意力机制的现实背景

从心里学上讲,在充满各种信息的环境中,人类想要关注到自己想看的东西,就需要集中注意力去看对应的信息,比如桌子上有报纸、杯子、书本。人如果只想看到书本,那么眼睛就只盯着书本看,报纸和杯子就不用看了。

那么转换到深度学习中,想模仿人类的注意力的特点,在训练中希望在所有的样本(杯子、书本、报纸)中,既然我训练之前无法区分这些数据,那么我就希望,我最后输出的时候可以按照我的需求(例如,我要在这个环境中找到一个杯子),那么就需要设计注意力机制来在训练的时候,能够选取出和杯子高度相关的数据进行训练,最后就可以找到杯子作为输出。

注意力机制的本质

从设计上来说,注意力机制的本质就是设置N对键值对(Key-value),随后输入和key类似的query,计算query和那个key长得最像(余弦相似度),则在对应的pooling(聚集或池化层)去找到对应的key,然后找到value值输出。

非参数的注意力池化层

在60年达算力有限时,统计学家们在设计,查询时,衡量效果的目标函数时,使用的是没用参数的加权平均和形式。x是query,xi表示key,yi表示value,则计算该query和每个key的差距,并将差距来做权重衡量该value占的比例。最后返回的时该query和那个value对应。K表示核函数。例如高斯核函数。

假设说使用高斯核函数,即为正态分布,将残差限定在[0-1]之间,那么就可以使得函数更加平滑。最后exp就可以转换成现如今注意力机制中使用的softmax函数。

参数化的注意力机制

那么为了缩小注意力机制中,搜寻同类的返回,使得训练时更加的专注到周围的高度相关个体,给每个残差加入了参数w,那么这个参数w是可以通过学习来训练的。使得最后函数拟合的效果是最好的。查询效果最准。这就是现代Transformer的基础。如何设计权重w使得训练效果更好。这是需要改进的地方。

注意力分数设计-attention score function

回顾注意力机制中,query查询和key的差距并经过softmax将得分归一化,再乘对应的权重且乘上value最后,加权求和得到输出。

将q,k,v从一个标量一个值,拓展为一个向量之后,这里的q,k,v可以是都长得不一样。那么注意力分数或者说注意力得分函数,则为a(q, k i)a(q,k_i) a(q,ki)。注意力池化层就是把M个键值对聚合起来的函数,可以是加权求和。

设计1:query和key加权-加权注意力

有三个参数需要学习分别是key权重矩阵Wk,query权重矩阵Wq,隐含层输出维度h。query长度为q,key长度为k,需要统一为h长度,则设定两个矩阵Wk为h行k列,Wq为h行q列,则key左乘Wk会变成长为h的向量,同理query也会变成长为h的向量,那么加起来再求tanh限定值在0-1之间,再乘value的转置,则得到维度为1*1的最后的分数。相当于把key和query输入到一个隐含层中输入为q+k输出为1。隐含层的参数为Wk和Wq。

设计2:点乘注意力

如果query和key一样长的话,那么可以用点乘也就是,内积的方式转换为注意力分数。

总结

注意力分数是query和key的相似度,注意力权重是分数的softmax结果。·两种常见的分数计算:·
1.将query和key合并起来进入一个单输出单隐藏层的MLP·
2.直接将query和key做内积

自注意力机制-self attention

多头注意力机制-multi-head attention

变形金刚 Transformer

seq2seq中的注意力机制

注意力机制做算子选择

注意力机制做参数选择