关于transformer机制的理解
分类:
文章
•
2024-04-11 12:09:31
transformer机制的论文来源:
谷歌论文《Attention all in you need》\
论文地址
- 该模型的架构图如下所示:
- 上面图中左边是encoder机制,右边是decoder机制。
encoder机制是由6层组成,如下图:
- 每一层的结构如下图所示:
- 假设现在有两个单词(word1,word2)经过embedding之后的向量上图中(x1,x2),输入到self-attention机制:
- 整个self-attention机制的内部流程如下图:
- 输入的x1,x2需要加上相应的位置编码信息

关于位置编码的计算,举一个案例:

可以看出在偶数位置的时候使用sin函数计算,在奇数位置的时候使用cos函数计算。(上面的计算公式在论文中有说明)
- 上图中的embedding的x1,x2分别与WQ,Wk,Wv结合产生下面的结果:
x1.WQ = q1 (表示两个向量的乘积)
x2.WQ = q2
x1.Wk = k1
x2.Wk = k2
x1.Wv = v1
x2.Wv = v2
从图上可以看出这是一个querys,Keys, values结构,可以成根据key检索values的原理。
- 右边的图上,把k1.q1=112,k2.q2=98,…那么得到的这个结果就是表示每一个单词 分别与输入的序列中的其他单词之间的注意力值。除以根号下dk是为了产生一个mean为0, variance为1(说明来源于该论文的第4页说明);在将结果输入到softmax中,之后与v1,v2…分别相乘。得到图中的z1,z2,…
- 下面是论文中给出的计算公式:
Attention(Q, K, V ) = softmax(QK √dk T )V
multi-head attention

- 上图中的WQ,Wk,Wv是有八个的(对应八个head);那么就会对应产生八个不同的attention。
- 将这个八个attention进行拼接。

整个multi-head attention的整体结构: