Attention和Transformer
学习资料中关于Attention机制和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大小。
三. Attention机制
attenton机制的主要思想其实就是吃两个向量吐出一个分数,根据一系列分数决定attention。之前的attention主要用于encoder-decoder之间,在decoder时attention encoder的值。
四. self-attention
在处理squence-to-squence问题上,RNN可以处理长距离特征关系,但是并行计算能力差;CNN也可以处理但是需要多层。self-attention可以用一层处理长距离特征关系,而且并行计算能力强!
自注意力模型可以作为神经网络中的一层来使用,既可以用来替换卷积层和 循环层,也可以和它们一起交替使用。 自注意力模型计算的权重𝛼𝑖𝑗只依赖于𝒒𝑖和𝒌𝑗的相关性, 而忽略了输入信息的位置信息。因此在单独使用时,自注意力模型一般需要加入位置编码信息来进行修正。
自注意力的一种解释就是在编码某个单词时,就是将所有单词的表示(值向量)进行加权求和,而权重是通过该词的表示(键向量)与被编码词表示(查询向量)的点积并通过softmax得到。
- 先将one-hot转化为embedding
- 把整个sequence乘三个参数矩阵得到Q、K、V
- \(A = K^TQ\)->\(\hat A=A\)
每个token的q与所有k点积得到a,所有a经过softmax得到\(\hat a\) - \(O=V\hat A\) 得到最终的输出O
self-attention里是一堆矩阵乘法,并行计算能力很强!而且输出O里的每个值都attention了I中的每个值
五. Multi-head self-attention
多个self-attention的组合。并行地从输入信息中选取多组信息. 每个注意力关注输入信息的不同部分。
好处:多个attention可以关注不同的点,每个attention的作用不同。
将q、k、v分裂成k个(维度不变),然后每个a可以得到k个b,将k个b组合后再用矩阵乘法降维(取平均的过程)。最后得到的b就是经过多次attention得到的值,可以获取到更多的特征!
六. Positional Encoding
对于self-attention来说,所有的输入都是相同的距离,没有距离的概念。所以需要对输入值提前加入位置信息。这个信息是不用学习的。