Fix. 修改章节名

master
ben.guo 6 months ago
parent 471440d224
commit 5ebf1c65e9

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

@ -1,4 +1,4 @@
# 第四章——语义关系学习(多头注意力机制)
# 第四章——多头注意力机制——QK矩阵相乘
<img src="../assets/image-20240421212923027.png" alt="语义关系学习" style="zoom:50%;" />
@ -97,7 +97,7 @@ $$
### Attention——QKV权重运算
### QKV权重运算
> - **Q的权重矩阵**用于将输入转换为Query向量这些向量代表了要查询的信息或者关注的点。
> - **K的权重矩阵**用于将输入转换为Key向量这些向量代表了可以被查询的信息或者关注点的索引。
@ -117,13 +117,13 @@ $$
比如现在我们有4句话同时我们复用GPT-2的768维向量
<img src="../assets/image-20240501154039606.png" alt="image-20240501154039606" style="zoom:50%;" />
<img src="../assets/image-20240502132738816.png" alt="image-20240502132738816" style="zoom:50%;" />
[4, 16, 768] = [batch_size, max_length, d_model]batch_size就是我们可以做并行的设置做算法建模的同学应该对这个比较熟悉越大的batch_size意味着需要越大的内存和显存。max_length则是我们设置的最大长度超过则截断因为资源也是有限的我们一般取能获取到绝大多数完整句子的长度即可。768则是GPT-2的默认向量维度。
看上面的图,[4, 16, 768]复制成3份分别去与Wq、Wk和Wv矩阵相乘。
<img src="../assets/image-20240501155804590.png" alt="image-20240501155804590" style="zoom:50%;" />
<img src="../assets/image-20240502132811665.png" alt="image-20240502132811665" style="zoom:50%;" />
如上图所示Wq的也是[768, 768]维的矩阵Wk、Wv同理它们一开始会初始化值训练过程会自动调整。
@ -135,11 +135,11 @@ $$
### Attention——QKV多头机制
### QKV多头机制
上面我们看到单个头的是[4, 16, 768]前面我们也一直提到QKV的多头机制如果按照GPT里的12头Transformer原文是4头那么会这么切分如下图
<img src="../assets/image-20240501171813234.png" alt="image-20240501171813234" style="zoom:50%;" />
<img src="../assets/image-20240502134443646.png" alt="image-20240502134443646" style="zoom:50%;" />
可以看到我们将768维的矩阵切成了12分每份是64维。另外由于大模型都是后两位数矩阵相乘所以我们把头跟长互换即[4, 16, 12, 64]转为[4, 12, 16, 64]。
@ -153,4 +153,23 @@ QKV分别获得后QK则是根据路线进行矩阵相乘如下图
<img src="../assets/image-20240501173316308.png" alt="image-20240501173316308" style="zoom:50%;" />
其中我们把K进行了翻转方便相乘。矩阵相乘则是每个batch_size里的每个头进行矩阵相乘即[16, 64]和[64, 16]进行矩阵相乘,相乘后则是变成了[16, 16]的矩阵。
其中我们把K进行了翻转方便相乘。矩阵相乘则是每个batch_size里的每个头进行矩阵相乘即[16, 64]和[64, 16]进行矩阵相乘,相乘后则是变成了[16, 16]的矩阵。
### QK与V矩阵相乘
上面我们计算好了QK相乘后的矩阵我们看下原文中的Attention公式
$$
\operatorname{Attention}(Q, K, V)=\operatorname{softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right) V
$$
<img src="../assets/image-20240502140356134.png" alt="image-20240502140356134" style="zoom:50%;" />
我们单独拿1个批次的第一个头出来
![image-20240502140715615](../assets/image-20240502140715615.png)
第一行的所有数据,分别上`LL`分别跟`LLM with me.郭同学热爱AI喜欢游戏`每个词的相关性。第二行则是`M`分别跟`LLM with me.郭同学热爱AI喜欢游戏`每个词的相关性。越高则代表两个字的相关性越高,越低则代表两个字的相关性越低。
<img src="../assets/image-20240502141342857.png" alt="image-20240502141342857" style="zoom:50%;" />
Loading…
Cancel
Save