|
|
|
@ -30,7 +30,7 @@ $$
|
|
|
|
|
|
|
|
|
|
缩放层。缩放操作通常用于调整矩阵乘法的结果。在计算注意力分数之前,会将查询和键的矩阵乘法结果除以一个缩放因子,通常是键向量维度的平方根。可以看到上面的它的公式就是让QK矩阵去除以根号下的d_k,而d_k就是每个头的维度,即768除以12个头,得到64,d_k=64。
|
|
|
|
|
|
|
|
|
|
也就是下面这个表的每一个值都会除以64,相当于值会进行缩小。
|
|
|
|
|
也就是下面这个表的每一个值都会除以根号下的64(即8),相当于值会进行缩小。缩放因子是键向量维度的平方根。
|
|
|
|
|
|
|
|
|
|
<img src="../assets/image-20240502142816044.png" alt="image-20240502142816044" width="550" />
|
|
|
|
|
|
|
|
|
@ -40,7 +40,7 @@ $$
|
|
|
|
|
|
|
|
|
|
这里讲的是生成型任务如语言模型(例如GPT),Mask遮挡的目的是为了防止模型在预测下一个词时“偷看”到未来的信息。这种技术被称为因果遮挡(Causal Masking)或自回归遮挡。在GPT这样的自回归语言模型中,模型被训练为基于之前的词来预测序列中的下一个词。因此,遮挡确保模型在生成当前词时只能使用它之前的词,而不能使用它之后的词,这符合自然语言的生成过程。
|
|
|
|
|
|
|
|
|
|
将矩阵的上三角部分(包括对角线)填充为 `-inf`或者0。
|
|
|
|
|
将矩阵的上三角部分(包括对角线)填充为 `-inf`。
|
|
|
|
|
|
|
|
|
|
<img src="../assets/image-20240502150743024.png" alt="image-20240502150743024" width="550" />
|
|
|
|
|
|
|
|
|
@ -82,7 +82,7 @@ $$
|
|
|
|
|
|
|
|
|
|
<img src="../assets/image-20240502223139032.png" alt="image-20240502223139032" width="550" />
|
|
|
|
|
|
|
|
|
|
如上图所示,V跟一开始的QK一样,都是[4, 12, 16, 64]即64维,前面的矩阵相乘我们知道,只要第一个矩阵的第二个维度值 跟 第二个矩阵的第一个维度值一样,它们就能相乘。即[16, 16]跟[16, 64]是可以矩阵相乘的,得出的矩阵A。
|
|
|
|
|
如上图所示,V跟一开始的QK一样,都是[4, 12, 16, 64]即64维,前面的矩阵相乘我们知道,只要第一个矩阵的第二个维度值 跟 第二个矩阵的第一个维度值一样(即第一个矩阵的列数与第二个矩阵的行数相同,它们就能相乘),它们就能相乘。即[16, 16]跟[16, 64]是可以矩阵相乘的,得出的矩阵A。
|
|
|
|
|
|
|
|
|
|
A就代表着我们这个Attention关注度计算。
|
|
|
|
|
|
|
|
|
@ -155,4 +155,4 @@ $$
|
|
|
|
|
|
|
|
|
|
### 总结
|
|
|
|
|
|
|
|
|
|
多头注意力机制通过Q、K、V矩阵的转换和相互作用,实现了对输入序列的并行关注。QK矩阵相乘后,通过缩放、Mask遮挡和Softmax归一化处理,得到注意力权重。这些权重与V矩阵相乘,生成加权的输出表示。多个头的输出被合并,并通过权重矩阵Wo得到最终结果。在大型模型如GPT-3中,这个过程在多个层中重复,每层都有独特的权重矩阵,导致模型的参数量达到数十亿。这些参数在训练过程中不断调整,以优化模型的性能。**推理阶段,这些权重都会固定住不变(冻结)。**
|
|
|
|
|
多头注意力机制通过Q、K、V矩阵的转换和相互作用,实现了对输入序列的并行关注。QK矩阵相乘后,通过缩放、Mask遮挡和Softmax归一化处理,得到注意力权重。这些权重与V矩阵相乘,生成加权的输出表示。多个头的输出被合并,并通过权重矩阵Wo得到最终结果。在大型模型如GPT-3中,这个过程在多个层中重复,每层都有独特的权重矩阵,导致模型的参数量达到数十亿。这些参数在训练过程中不断调整,以优化模型的性能。**推理阶段,所有的模型参数包括这些权重都会固定住不变(冻结)。**
|
|
|
|
|