Attention和Transformer

学习资料中关于Attention机制和Transformer的总结

一. 学习资料

深度学习中的注意力模型

BERT大火却不懂Transformer?读这一篇就够了

李宏毅讲解Transformer

完全图解RNN、RNN变体、Seq2Seq、Attention机制

二. Transformer

Masked multi-head self-attention

Masked multi-head self-attention指的是只会attention已经输出的值,不会attention还没有输出的值。

Norm

transformer里面的Norm指的是layer normalization。Batch normalization在batch size太小或者序列(大小不确定)问题中表现不好,因为BN是将一个batch里的同一通道做归一化,LN是将一个样本里的不同通道做归一化。所以LN在序列问题中表现好,无关batch size大小。

transformer

三. Attention机制

attenton机制的主要思想其实就是吃两个向量吐出一个分数,根据一系列分数决定attention。之前的attention主要用于encoder-decoder之间,在decoder时attention encoder的值。

四. self-attention

在处理squence-to-squence问题上,RNN可以处理长距离特征关系,但是并行计算能力差;CNN也可以处理但是需要多层。self-attention可以用一层处理长距离特征关系,而且并行计算能力强!

自注意力模型可以作为神经网络中的一层来使用,既可以用来替换卷积层和 循环层,也可以和它们一起交替使用。 自注意力模型计算的权重𝛼𝑖𝑗只依赖于𝒒𝑖和𝒌𝑗的相关性, 而忽略了输入信息的位置信息。因此在单独使用时,自注意力模型一般需要加入位置编码信息来进行修正。

自注意力的一种解释就是在编码某个单词时,就是将所有单词的表示(值向量)进行加权求和,而权重是通过该词的表示(键向量)与被编码词表示(查询向量)的点积并通过softmax得到。

  1. 先将one-hot转化为embedding
  2. 把整个sequence乘三个参数矩阵得到Q、K、V
  3. \(A = K^TQ\)->\(\hat A=A\)
    每个token的q与所有k点积得到a,所有a经过softmax得到\(\hat a\)
  4. \(O=V\hat A\) 得到最终的输出O

截屏2020-02-20下午5.20.28

self-attention里是一堆矩阵乘法,并行计算能力很强!而且输出O里的每个值都attention了I中的每个值

五. Multi-head self-attention

多个self-attention的组合。并行地从输入信息中选取多组信息. 每个注意力关注输入信息的不同部分。

好处:多个attention可以关注不同的点,每个attention的作用不同。

将q、k、v分裂成k个(维度不变),然后每个a可以得到k个b,将k个b组合后再用矩阵乘法降维(取平均的过程)。最后得到的b就是经过多次attention得到的值,可以获取到更多的特征!

截屏2020-02-20下午5.27.19

六. Positional Encoding

对于self-attention来说,所有的输入都是相同的距离,没有距离的概念。所以需要对输入值提前加入位置信息。这个信息是不用学习的。

posted @ 2020-04-11 15:38  z1xiang  阅读(831)  评论(0编辑  收藏  举报