大型语言模型 (LLM) 中的注意力机制使模型在处理每个词元时,能够动态地关注输入序列的不同部分。与 RNN 等按顺序处理词元且难以处理长距离依赖的旧架构不同,注意力机制通过为输入词元分配权重来确定它们与当前位置的相关性。这通过三个组成部分实现:查询(queries)、键(keys)和值(values)。查询表示正在处理的当前词元,键是所有输入词元的向量,而值包含这些词元的实际信息。通过将查询与所有键进行比较,模型计算注意力分数,从而决定每个值应获得多少关注。这使得模型能够优先考虑上下文中重要的词元,即使它们在序列中距离较远。
一个关键的实现是 Transformer 中的自注意力(self-attention)机制。在这里,输入通过学习到的线性变换被分成查询、键和值。例如,在句子“The cat sat on the mat because it was tired”(猫坐在垫子上因为它累了)中,当处理单词“it”时,模型计算“it”(查询)与所有其他单词(键)之间的注意力分数。这些分数通过 softmax 进行归一化,形成概率分布,然后将得到的权重应用于值(词嵌入),以产生具有上下文意识的表示。这种加权求和有助于模型识别“it”指的是“cat”而不是“mat”。这个过程对每个词元重复进行,使模型能够通过聚合整个序列中的相关信息来构建丰富的、上下文敏感的表示。
实际应用中的变体包括多头注意力(multi-head attention),它并行运行多个自注意力层,以捕获不同类型的关系(例如,句法和语义)。为了提高效率,解码器层中使用了掩码注意力(masked attention),以防止模型在训练期间“偷看”未来的词元。然而,注意力机制的二次计算成本(随序列长度² 增长)仍然是一个挑战。稀疏注意力(限制每个位置可以关注的词元数量)或将序列分块等技术是常见的优化方法。这些机制共同使 LLMs 能够通过动态对齐输入和输出来处理翻译或摘要等复杂任务,同时保持真实世界应用的计算可行性。