创作不易,有帮助就点个赞
自注意力解释图(先把自注意力看懂,才可以看多头自注意力),QKV矩阵只有一个可以训练,这是与多头自注意力机制主要区别
这多头自注意力,就是把需要叠加语义的词向量 [0.93 0.15 0.69 0.81 0.65 0.64 0.03 0.49 0.34 0.04 0.94 0.16],平均拆分成若干个。假设完整的词向量是12维度,我们平均拆分,
[0.93 0.15 0.69 0.81 ]
[0.65 0.64 0.03 0.49 ]
[0.34 0.04 0.94 0.16 ]
假设有三个词汇:“你好吗”
你=[0.65 0.81 0.14 0.84 0.83 0.66 0.09 0.45 0.41 0.35 0.41 0.48]
好=[0.02 0.48 0.16 0.65 0.77 0.47 0.54 0.8 0.21 0.64 0.74 0.05]
吗=[0.83 0.95 0.65 0.21 0.85 0.14 0.34 0.56 0.09 0.86 0.84 0.26]
我们知道,自注意力就是将前面的词汇的语义叠加到当前词汇,例如我们将“你” 和 “好” 叠加到 “吗” 上,这里就不继续讲自注意力机制了。假设我们不对词向量拆分,那么我们就只有一个QKV矩阵,现在我们拆分了,我们就有了三个QKV矩阵。
我们先拆分“你好吗”
你1=[0.65 0.81 0.14 0.84]
你2=[0.83 0.66 0.09 0.45]
你3=[0.41 0.35 0.41 0.48]
好1=[0.02 0.48 0.16 0.65]
好2=0.77 0.47 0.54 0.8 ]
好3=0.21 0.64 0.74 0.05]
吗1=[0.83 0.95 0.65 0.21 ]
吗2=[0.85 0.14 0.34 0.56 ]
吗3=[0.09 0.86 0.84 0.26]
计算自注意力的时候,我们的数据输入为
1组 Q1 K1 V1
你1=[0.65 0.81 0.14 0.84]
好1=[0.02 0.48 0.16 0.65]
吗1=[0.83 0.95 0.65 0.21 ]
2组 Q2 K2 V2
你2=[0.83 0.66 0.09 0.45]
好2=0.77 0.47 0.54 0.8 ]
吗2=[0.85 0.14 0.34 0.56 ]
3组 Q3 K3 V3
你3=[0.41 0.35 0.41 0.48]
好3=0.21 0.64 0.74 0.05]
吗3=[0.09 0.86 0.84 0.26]
计算得出“吗”的新的词向量为
吗1=[0.78 0.27 0.3 0.32 ]
吗2=[0.8 0.05 0.62 0.49 ]
吗3=[0.34 0.51 0.11 0.98]
合并词向量,这就是新的“吗”
[0.78 0.27 0.3 0.32 0.8 0.05 0.62 0.49 0.34 0.51 0.11 0.98]