注意力机制是一种神经网络组件,它根据输入元素与给定上下文的相关性,计算这些元素的加权组合,从而使模型能够动态地聚焦于输入中最相关的部分,而不是平等地对待每个元素。注意力是Transformer架构的核心计算思想,也因此成为大多数现代大语言模型的基础。
历史
注意力机制大约在2014年和2015年,在序列到序列机器翻译模型的背景下被引入,作为一种让基于循环神经网络的解码器在生成每个输出词时,能够回看编码器的所有隐藏状态,而不是依赖整个输入句子的单一固定长度摘要向量的方法。这解决了早期编码器-解码器模型的一个特定弱点,即它们往往会丢失长输入序列中的信息。2017年由阿希什·瓦斯瓦尼及其同事发表的论文《注意力就是你所需要的一切》表明,完全由注意力层构建、没有任何循环结构的模型,能够超越循环架构,同时在训练上更易于并行化,从而催生了Transformer。
自注意力
Transformer中使用的关键创新是自注意力,其中序列中的每个元素都关注同一序列中的其他所有元素,而不是解码器关注一个单独的编码器。对于每个位置,模型计算三个向量,通常称为查询、键和值,它们源自该位置的嵌入。一个位置的查询与每个其他位置的键之间的相似度,决定了该其他位置的值对当前位置输出的贡献权重。这使得处理句子的模型能够直接关联相距较远的词,例如代词及其所指的名词,而无需像在循环网络中那样,信息必须经过许多中间步骤。
变体
Transformer通常使用多头注意力,即并行运行多个注意力计算,并使用不同的学习投影,使模型能够同时捕捉不同类型的关系,例如句法结构和主题相似性。交叉注意力,即一个序列关注另一个独立的序列,用于编码器-解码器Transformer以及一些多模态系统中,例如让生成标题的解码器关注图像的编码区域。
实际意义
注意力的计算成本随输入序列长度呈二次方增长,因为每个位置都必须与每个其他位置进行比较,这使得处理非常长的输入变得昂贵,并推动了注重效率的注意力变体以及替代架构(如状态空间模型)的发展。尽管存在这一成本,注意力能够直接关联输入中相距较远的元素,加上其相比循环结构更易于并行化,使其成为解锁大语言模型训练规模的关键机制,包括上下文窗口的增长,该窗口决定了模型在单次交互中能够关注的文本量。