在Transformer模型中,多头注意力机制通过组合多个注意力机制实现。每个注意力机制称为一个“头”,多个头并行工作,每个头学习不同的表示。这种机制使模型在处理序列时能够同时关注序列的不同部分。例如,有的头可能关注句子的语法结构,有的头可能关注句子的语义信息,有的头可能关注句子的情感信息。通过多头注意力机制,模型可以从不同角度对序列进行建模,从而提高模型的表达能力和泛化能力。在模型的最后一层,多个头的输出会被拼接,然后通过一个线性变换得到最终输出。在这一过程中,模型通过深度学习的方式学习不同头之间的权重,并掌握如何组合多个头的输出。结合2.3.1节,下面将介绍多头注意力机制的设计细节。
如图2-15所示,多头注意力机制实际包括以下三部分:
图2-15 多头注意力机制结构
1)多头注意力机制结构。模型固定设计多个头,每个“头”都会对输入的 Q 、 K 、 V 进行线性变换。每个头的线性变换可能不同,这些线性变换实际是通过训练权重实现的。线性变换允许模型在不同的嵌入空间中捕获信息关键信息,比如有的捕捉长距离的结构信息,有的捕捉短距离的结构信息等。这种设计使得Transformer模型能够在处理序列数据时,同时考虑到多种类型的依赖关系。
2)拼接各个头计算得到的注意力输出。每个头的输出是一个独立的注意力向量,拼接后得到一个长向量。将各个头计算得到的注意力输出拼接起来的目的是将每个头捕捉到的不同信息合并成一个综合的表示。每个头可能关注输入序列的不同方面,拼接操作允许模型在后续的处理中利用这些不同的信息。拼接后的向量包含所有不同头的信息,进一步通过一个线性层进行整合,以便为下游任务提供一个统一的输出。在原始的Transformer模型中,多头的数量设置为8,每个头的维度是64维。
3)通过线性转换实现多头注意力的信息整合,最终输出注意力表示。在多头注意力机制中,每个头可独立学习输入之间关系的特征,线性层负责将这些特征进行整合,以便下游网络层利用所有头部信息作出决策。线性层不仅执行权重缩放,还结合非线性激活函数(如ReLU)以提升模型的表达能力。