实用指南:【大语言模型】—— Transformer的QKV及多头注意力机制图解解析
来源: Transformer 动画 + 论文 + 白板
翻译任务
当我们用神经网络做翻译任务时,如下
先用词嵌入的方式把每个词转为对应的词向量,假设维度为6
如果把每个词直接丢到一个全连接神经网络中,那每个词都没有上下文的信息,且长度只能一一对应

如果用循环神经网络RNN,又面临串行计算,而且如果句子太长,也会导致长期依赖困难的难题

位置编码
上述两种方法面临上下文以及词语间相互依赖的障碍,因此最初需要引入文本的位置编码
首先我们给每个词一个位置编码,表示这个词出现在整个句子中的位置,把位置编码加入到原来的词向量中,这个词就有了位置信息

注意力机制
但此时每个词还没有其他词的上下文信息,也就是注意不到其他词的存在。
我们用一个W q W_qWq矩阵,和第一个词向量相乘,得到一个维度不变的Q 1 Q_1Q1向量

这里的W q W_qWq矩阵,是可以通过训练过程学习的一组权重值,同理,我们用一个W k W_kWk矩阵和第一个词向量相乘,得到K 1 K_1K1

再通过W v W_vWv矩阵得到V 1 V_1V1

接着其他的词向量也和相同的W Q , K , V W_{Q,K,V}WQ,K,V矩阵相乘,分别得到自己对应的Q , K , V Q,K,VQ,K,V向量

包含所有词向量的就是在实际的计算机运算中,是借助拼接得到的大矩阵做乘法,得到的就Q , K , V Q,K,VQ,K,V矩阵,在 Transformer 的注意力机制里,每个输入向量(比如一句话中的一个词的向量表示)得根据上下文来重新获得“加权表示”。这种加权就是通过Q , K , V Q,K,VQ,K,V来完成的。
现在原来的词向量已经分别经过线性变换,映射成了Q , K , V Q,K,VQ,K,V一样的就是,维度和原来

接下来我们让Q 1 Q_1Q1和K 2 K_2K2做点积,这表示在第一个词的视角里,第一个词和第二个词的相似度是多少
同理依次和K 3 K_3K3做点积,表示和第三个词的相似度,和K 4 K_4K4做点积,表示和第四个词的相似度
最终,和自己也做点积,表示和自己的相似度

得到这些相似度系数之后,分别和V VV向量相乘,再相加得到A 1 A_1A1,此时这个A 1 A_1A1就表示在第一个词的视角下,按照和他相似度大小按权重把每个词的词向量都加到了一起,这就把全部上下文信息都包含在第一个词中了,而且是以第一个词的视角观察的

同理,其他几个词也按照这种方式,那么此时每个词都把其他词的词向量,按照和自己的相似度权重加到了自己的词向量中

从全局视角来看,现在就是把最初的输入的词向量,经过一番处理,变成了一组新的词向量,但这组新的词向量每一个都包含了位置信息和其他词上下文信息的一组新的词向量,这就是注意力attention做的事情

为了提高灵活性,之前我们是每个词计算一组Q K V QKVQKV,我们在这个Q K V QKVQKV基础上,再经过两个权重矩阵变成两组Q K V QKVQKV,给每个词两次学习机会,学习到不同的要计算相似度的Q K V QKVQKV,从而增加语言的灵活性,这里的每组Q K V QKVQKV称为一个头

接下来在每个头里的Q K V QKVQKV仍然经过刚刚的注意力层的运算得到A AA向量
然后把两个A AA向量拼接起来,得到和刚刚一样的结构
这就是多头注意力机制
浙公网安备 33010602011771号