|
|
|
@ -0,0 +1,25 @@
|
|
|
|
|
# 第四章——语义关系学习(多头注意力机制)
|
|
|
|
|
|
|
|
|
|
<img src="../assets/image-20240421212923027.png" alt="语义关系学习" style="zoom:50%;" />
|
|
|
|
|
|
|
|
|
|
### 前言
|
|
|
|
|
|
|
|
|
|
前面通过向量和位置编码后,我们已经得倒了一个数值矩阵,那么这个数值矩阵,怎么把数值矩阵用起来了。接下里就到了Transformer里最吸引人的一部分,注意力机制。
|
|
|
|
|
|
|
|
|
|
放大语义关系学习(注意力机制)内部
|
|
|
|
|
|
|
|
|
|
<img src="../assets/0*0KPEV8QidHkteKeY.png" alt="A step-by-step breakdown of self attention | by fishingalone | Medium" style="zoom:50%;" />
|
|
|
|
|
|
|
|
|
|
> Linear:线性层。数学表达式是 `y = wx + b`,其中 `x` 是输入向量,`W`是权重矩阵,`b` 是偏置向量,`y` 是输出向量。
|
|
|
|
|
>
|
|
|
|
|
> MatMul: 矩阵相乘。一种线性代数运算,用于计算两个矩阵的乘积。如果有两个矩阵 A 和 B,它们的乘积 C 通过将 A 的行与 B 的列对应元素相乘然后求和来计算。
|
|
|
|
|
>
|
|
|
|
|
> Scale:缩放层。缩放操作通常用于调整矩阵乘法的结果。在计算注意力分数之前,会将查询和键的矩阵乘法结果除以一个缩放因子,通常是键向量维度的平方根。这样做是为了防止在进行softmax操作之前,注意力分数过大导致梯度消失问题。
|
|
|
|
|
>
|
|
|
|
|
> Softmax:软最大值。oftmax用于将注意力分数(经过缩放的矩阵乘法结果)转换为概率值,这些概率值表示每个头在给定输入时应该关注的程度。
|
|
|
|
|
|
|
|
|
|
QKV会结果一个线形层,也就是X会变成3份,分别去乘以不同的权重W。变成QKV,经过各种层后,最终输出上面说的缩放好的点积注意力机制,也就是除开Scale、Maks、Softmax外,是包裹了两次的矩阵相乘。这也是最重要的部分,为什么是矩阵相乘呢?矩阵相乘能代表词之间的关注度高低吗?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 为什么是矩阵相乘
|