Fix. 调整QKV底层数学逻辑

master
ben.guo 6 months ago
parent 8eec3ee7f8
commit e04112607c

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

@ -71,33 +71,17 @@ $$
等同于Markdown展示
$$
A矩阵*B矩阵=B长度*A长度*cos(\theta)
$$
等同于GitHub展示$`A矩阵*B矩阵=B长度*A长度*cos(\theta)`$
我们做一个浅绿色的垂线它就变成一个直角三角形。在数学三角函数中cos的邻边等于cos(θ)乘以斜边。也就是A的长度乘以cos(θ)等于黑色的线B上的黑色线
<img src="../assets/image-20240430191813984.png" alt="image-20240430191813984" width="300" />
也就是公式等同于红色乘以黑色的部分Markdown展示
$$
A矩阵*B矩阵=B长度*(A在B上的投影)
$$
那么A、B长度也就是模长它的作用又是什么呢可以理解为归一化处理。公式定理可知cosine最终的结果是[-1,+1]区间我们来求一下假设我们有两个向量A和B
<img src="../assets/image-20240523102514832.png" alt="image-20240523102514832" width="300" />
GitHub展示$`A矩阵*B矩阵=B长度*(A在B上的投影)`$
<img src="../assets/image-20240523102627330.png" alt="image-20240523102627330" width="300" />
也就是寻找两个向量的相似度也就是看其中一个向量在另一个向量上的投影长度大小也就是A越长 等同于 投影长度越长 等同于 两者越靠近越相似B是不变的。
计算表明,两个向量的余弦相似度为 1这意味着它们的方向完全相同。也就是模长是把数值归一化到[-1,+1]区间,那么如果我直接点积相乘,然后再进行归一化是不是也可以呢?亦或者我们进行一次数值缩放呢?再回头看下我们的图
如果是C做垂线B可能就是负数了。如果是三维平面或者四维屏幕则是如下增加多条线
<img src="../assets/image-20240523103216329.png" alt="image-20240523103216329" width="500" />
<img src="../assets/image-20240430192046147.png" alt="image-20240430192046147" width="300" />
注意两个红框QK矩阵相乘后进行数值缩放而结果A在输出后也进行也一次数值缩放。也就是**矩阵相乘后进行数值缩放** 等同于 **余弦公式结果** 等同于 **求得多个元素间的相似度** 等同于 **自注意力机制**
现在我们知道矩阵相乘能代表相似度的高低,回到实际中,过程图如下

Loading…
Cancel
Save