自注意力(self-attention)允许模型在处理序列数据时,根据输入中的其他位置来加权考虑每个位置的信息。这对于处理长文本或序列中的依赖关系非常有用。
多头自注意力(multi-head self-attention)建立在自注意力机制之上,它通过允许模型同时关注不同表示子空间的信息,来增强模型捕捉不同类型的关系和依赖性的能力。
虽然自注意力专注于捕捉序列内部的依赖关系,但多头自注意力通过利用多个注意力头来捕捉不同类型的关系和依赖关系,提高了这种捕捉能力。
自注意力机制的实现:
-
计算注意力分数(Attention Scores):
给定一个输入序列 X X X,我们首先将其投影到查询 Q Q Q,键 K K K,和值 V V V 的向量空间中,这是通过学习得到的权重矩阵 W Q W_Q WQ, W K W_K WK, W V W_V WV 实现的。然后,我们计算查询与键的点积,最后通过 softmax 函数进行标准化,得到注意力分数:Attention Scores = softmax ( Q K T d k ) \text{Attention Scores} = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) Attention Scores=softmax(dk