GPT 之 Transformer 笔记 (二) MultiHead Attention

MultiHead Attention

接着上回的 Self-Attention, 今天来学习 MultiHead Attention.
首先我们定义每次计算一个 Self-Attention 为 A Head, 顾名思义, MultiHead 表示计算许多次 Self-Attention.

还是以 $x^{<3>}$ 为例, 如下:

(Andrew Transformer PPT)

其中 i 为第几个 Head, $Head_i = Attension(W_i^Q Q, W_i^K K, W_i^V V)$
如前一篇博客所说, Head-1 的问题可能是 What is happening there (如蓝色方框和粗线), 发现最相关的是 visite
而 MultiHead 允许我们问多个问题.
比如, 这里 Head-2 的问题可能是 When (如红色方框和粗线), 发现最相关的是 septembre
接着 Head-3 的问题可能是 Who (如紫色方框和粗线), 发现最相关的是 Jane

最后, Concat 所有的 Head:
$MultiHead(Q, K, V) = concat(head_1, head_2, ... head_h) W_o$

如此, 如 $x^{<3>}$, 对其他 words 也是进行类似的计算.

这就是 MultiHead Attention.

值得注意的是, 这里的多个 Head 是可以 Parallel 进行计算的, 因为多个 Head 之间没有依赖.

另外, 更具体的计算过程可以参看这个图和博客 ( 来自 https://jalammar.github.io/illustrated-transformer/) :

参考


https://www.coursera.org/learn/nlp-sequence-models?specialization=deep-learning
https://jalammar.github.io/illustrated-transformer/