muti-head attention机制详细具体介绍
时间: 2023-09-18 07:10:09 浏览: 114
Attention机制基本原理
5星 · 资源好评率100%
Multi-head attention是Transformer模型中的一种注意力机制,它可以将输入序列映射到一个高维空间,从而更好地捕捉输入序列中的信息。
在Multi-head attention中,输入序列首先通过一个线性变换矩阵进行变换,然后被分成多个头部(head),每个头部都拥有自己的权重矩阵。每个头部计算出的注意力结果都会被拼接起来,最终再经过一次线性变换得到最终的输出。
具体来说,假设输入序列为$X \in R^{n \times d}$,其中$n$为序列长度,$d$为每个词向量的维度。首先,通过一个线性变换矩阵$W_q$、$W_k$和$W_v$将输入序列变换为查询向量$Q \in R^{n \times d'}$、键向量$K \in R^{n \times d'}$和值向量$V \in R^{n \times d'}$,其中$d'$是每个头部的维度,通常取$d'=\frac{d}{h}$,$h$为头部数。
然后,对于每个头部$i \in [1,h]$,通过对$Q$、$K$和$V$进行切片,得到$Q_i \in R^{n \times d'}$、$K_i \in R^{n \times d'}$和$V_i \in R^{n \times d'}$。接着,$Q_i$和$K_i$进行点积操作,得到注意力得分$A_i \in R^{n \times n}$:
$$A_i = softmax(\frac{Q_i K_i^T}{\sqrt{d'}})$$
其中,$\sqrt{d'}$是为了缩放注意力得分,避免得分过小或过大。
最后,将注意力得分与值向量$V_i$相乘,得到每个头部的输出向量$O_i$:
$$O_i = A_i V_i$$
将所有头部的输出向量拼接起来,得到最终的输出向量$O \in R^{n \times d}$:
$$O = Concat(O_1,...,O_h)W_o$$
其中,$W_o$是最终的线性变换矩阵。
Multi-head attention机制可以更好地捕捉输入序列中的信息,同时也可以并行计算,加快模型训练速度。
阅读全文