趋近智
缩放点积注意力使模型能够计算序列中不同位置间的相关性分数,使用查询 (Q)、键 (K) 和值 (V) 向量。这种机制很有效,使得模型在为特定位置生成输出表示时,能够关注输入中的相关部分。
但是,一次注意力计算就足够了吗?当我们处理语言时,通常会同时考虑多个方面。比如,在阅读“The quick brown fox jumps over the lazy dog”时,理解“jumps”这个词可能需要查看主语(“fox”)以确定语法一致性,但也可能将其与宾语(“dog”)或方式(“quick”)联系起来。单组注意力权重可能难以有效地捕捉这些不同关系。它可能将不同类型的依赖关系平均化,或主要集中在一个方面,从而可能遗漏其他重要的连接。
这一观察引出了多头注意力的想法。其核心思想直观而有效:即不再仅仅基于原始的Q、K和V向量执行一次注意力计算,而是并行进行多次注意力计算。每一次并行计算都被称作一个“注意力头”。
可以把它想象成有多位专家在检查同一序列。每位专家(头)可能专门寻找不同的模式或关联。一个头可能侧重于短距离句法连接,另一个侧重于更长距离的语义相似性,还有另一个侧重于位置关系。
重要的一点是,每个注意力头并非简单地在相同的原始Q、K和V上重新计算注意力。相反,在计算注意力之前,模型会为每个头学习独立的线性投影。这意味着原始的Q、K和V向量会被投影到每个头不同的、低维的子空间中。
假设我们有h个注意力头。对于每个头i(其中i的范围是1到h),我们学习投影矩阵WiQ、WiK和WiV。然后,输入Q、K和V按如下方式投影:
Qi=QWiQ Ki=KWiK Vi=VWiV
每个头i接着使用其自身的投影Qi、Ki和Vi执行缩放点积注意力计算:
头i=注意力(Qi,Ki,Vi)=softmax(dkQiKiT)Vi这里,dk是单个头内部向量的维度(即Ki的维度)。
直观来说,每个投影(WiQ,WiK,WiV)使得一个头能够学习关注原始嵌入中包含的信息的不同方面或“表示子空间”。通过并行执行这些计算,模型能够同时获取序列中不同类型关系的见解。
这种并行处理使得模型能够基于不同的表示准则,同时关注来自不同位置的信息。结合后的输出,正如我们将在下一节中看到的,与单个注意力机制所能产生的相比,提供了更丰富、更多方面的表示。我们现在将查看这些并行计算是如何被管理和结合,以生成多头注意力层的最终输出的。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造