参考:Transformer模型详解(图解最完整版) - 知乎
注意力机制到底在做什么,Q/K/V怎么来的?一文读懂Attention注意力机制 - 知乎
核心思想:Q K V,维度特征,然后通过矩阵的点乘计算出二者的相似性!
0.为什么使用三个可训练的参数矩阵生成Q K V因为,他们可以增强模型的拟合能力呗!
其中,WQ,WK和WV是三个可训练的参数矩阵。输入矩阵X分别与WQ,WK和WV相乘,生成Q、K和V,相当于经历了一次线性变换。Attention不直接使用X,而是使用经过矩阵乘法生成的这三个矩阵,因为使用三个可训练的参数矩阵,可增强模型的拟合能力。
1.嵌入向量方面
就是词嵌入和位置嵌入的加和。
2.将向量矩阵传入N个编码块(N可以为6!),之后得到句子所有单词的编码信息矩阵 C。如下图。单词向量矩阵用 Xn×d 表示, n 是句子中单词个数,d 是表示向量的维度 (论文中 d=512)。每一个 Encoder block 输出的矩阵维度与输入完全一致。
3.如下图:【目前不太理解!】
4.自注意力机制
5.
上图是 Self-Attention 的结构,在计算的时候需要用到矩阵Q(查询),K(键值),V(值)。在实际中,Self-Attention 接收的是输入(单词的表示向量x组成的矩阵X) 或者上一个 Encoder block 的输出。而Q,K,V正是通过 Self-Attention 的输入进行线性变换得到的。
6.Softmax归一化指数函数:是对矩阵的每一行进行 Softmax,即每一行的和都变为 1.
Softmax(QK)就是求权重的体现:如何理解attention中的Q,K,V? - 知乎
注意力机制到底在做什么,Q/K/V怎么来的?一文读懂Attention注意力机制 - 知乎
Q、K可以求出注意力权重配比值!
我们知道,向量点积的值可以表征词与词之间的相似性,而此处的“整个序列”包括The这个词自己(再一次强调这是Self-Attention)。
所以最后输出的词的表示,其“主要成分”就主要地包含它自身和跟它相似的词的表示,其他无关的词的表示对应的权重就会比较低。
7.Add指 X+MultiHeadAttention(X),是一种残差连接,通常用于解决多层网络训练的问题,可以让网络只关注当前差异的部分,在 ResNet 中经常用到:
Add指 X+MultiHeadAttention(X),是一种残差连接,通常用于解决多层网络训练的问题,可以让网络只关注当前差异的部分,在 ResNet 中经常用到:
8.组成Encoder
9.MASK掩码操作
注意 Mask 操作是在 Self-Attention 的 Softmax 之前使用的,下面用 0 1 2 3 4 5 分别表示 "<Begin> I have a cat <end>"。
下图,就是单词0只能使用单词0的信息,单词1可以使用单词0,1的信息;
也就是只能使用之前的信息。
10.softmax预测输出单词
end:
Transformer 总结
- Transformer 与 RNN 不同,可以比较好地并行训练。
- Transformer 本身是不能利用单词的顺序信息的,因此需要在输入中添加位置 Embedding,否则 Transformer 就是一个词袋模型了。
- Transformer 的重点是 Self-Attention 结构,其中用到的 Q, K, V矩阵通过输出进行线性变换得到。
- Transformer 中 Multi-Head Attention 中有多个 Self-Attention,可以捕获单词之间多种维度上的相关系数 attention score。
还是不太懂呀!!