Transformer 注意力机制2025 年 2 月 3 日 | 阅读 9 分钟 Vaswani 等人在论文 "Attention is All You Need" 中提出的 Transformer 模型已成为自然语言处理 (NLP) 领域的新王者。因此,Transformer 的主要组成部分之一就是所谓的注意力机制,它使模型能够确定一个词在特定句子中的重要性,即使它不是第一个词。这使得模型能够捕捉数据的依赖关系和关联,从而在解决翻译、文本生成等问题时获得更好的性能。因此,Transformer 模型提出的注意力机制已成为 NLP 的新参考,并且是现代架构的基础。 Transformer 模型是一种深度学习模型,用于在人工智能程序和软件中执行自然语言处理。 Transformer 是一种深度学习架构,专门用于顺序数据处理、语言翻译和文本生成。与 RNN 和 CNN 不同,Transformer 采用注意力机制来捕捉句子中的所有单词,无论它们在结构中的距离如何。 什么是注意力机制?注意力机制是一种技术,通过这种技术,模型在生成输出序列的每个组件时,能够专注于输入序列的特定位置。在确定模型输入的权重时,模型可以优先考虑一个信息片段而不是另一个。这在语言翻译等操作中特别有用,其中某些词的引用取决于其周围的上下文。它展示了 Transformer 中用于在输入和输出之间建立连接的各种注意力机制。 1. 缩放点积注意力 (Scaled Dot-Product Attention)缩放点积注意力是 Transformer 注意力步骤中的一个重要组成部分。它包含三个主要元素:查询 (Q)、键 (K) 和值 (V)。注意力分数可以通过查询向量和键向量的点积得到。然后,分数除以键向量维度的平方根。为了从该分数中导出注意力权重,将其通过 softmax 函数,然后得到值向量的注意力总和。 公式 ![]() 其中 dk 是键向量的维度。 2. 多头注意力 (Multi-Head Attention)多头注意力增强了模型一次关注输入序列多个部分的能力。这是通过使用多个注意力头来实现的,每个头都有自己的查询矩阵、键矩阵和值矩阵。然后将这些头的输出相加,再通过线性变换得到最终输出。这种机制允许模型涵盖给定序列中的各种特征和关系。 公式 MultiHead (Q, K, V) = concat(head1 , head2 ,....., headh)Wo 其中 head1 = Attention (QWiQ, KWiK, VWiV) 此处 WiQ、WiK、WiV 是第 i 个注意力头的投影矩阵,WO 是输出投影矩阵。 3. 自注意力 (Self-Attention)自注意力或内部注意力意味着模型在推导单词表示时,可以根据同一序列中的其他位置来计算序列。在 Transformer 架构中,自注意力同时应用于编码器和解码器部分,这使得捕捉输入序列中的长距离依赖关系和关联成为可能。 4. 编码器-解码器注意力 (Encoder-Decoder Attention)交叉注意力,也称为编码器-解码器注意力,用于 Transformer 模型的可解码器阶段。它使解码器在生成目标句子中的每个单词时,能够关注源句子(由编码器编码)中的必要部分。这种注意力允许解码器访问整个输入序列,从而提高了翻译的质量和相关性。 5. 因果注意力或掩码自注意力 (Causal or Masked Self-Attention)因果注意力或掩码自注意力用于解码器:这确保在预测特定位置的输出时,只能看到前一个位置的输出。这对于语言建模等任务尤其重要,在这些任务中,不应该在训练期间提供后续标记。这种不敏感的原理适用于未来的标记;未使用的标记被掩码,因此模型无法窥视未来的标记。 公式 Masked attention(Q, V, K) = softmax((QK^T+M)/root(dk))V 其中 M 是掩码矩阵,应被掩码的位置为 -∞。 Transformer 注意力机制的实现步骤 1:导入库第一步是导入程序开发所需的库。首先,我们需要导入 TensorFlow 和将用于我们程序的所有其他必需库。 步骤 2:缩放点积注意力它通过按维度的平方根进行缩放来计算查询向量和值向量之间的兼容性。为此,实例化 ScaledDotProductAttention 类,该类计算注意力分数并得出值向量的加权和。这包括点积计算、分数的重新缩放、如果需要则在分数中使用掩码、获取分数的 softmax 以及最后的值的加权和。 步骤 3:多头注意力定义 MultiHeadAttention 类以采用多个注意力头,模型能够一次关注序列的不同部分。 步骤 4:位置编码创建 PositionalEncoding 类以添加位置信息,以识别嵌入序列中标记的位置。 步骤 5:编码器层导出 EncoderLayer 类,它作为多头注意力和前馈网络、层归一化和用于正则化目的的 dropout 的组合。 步骤 6:编码器通过添加多个编码器层、嵌入和位置编码来构建 Encoder 类。最后,检查编码器层的工作情况,并将编码器应用于需要输入的文本。在解码过程之前的最后一步是测试编码器层和编码器,如下所示。 代码 输出 (32, 20, 128) 说明 以上是 Transformer 模型核心组件——注意力机制在 TensorFlow 中的通用代码。Scaled Dot-Product Attention 类计算注意力权重,Multi-Head Attention 类支持它们同时关注输入序列的不同部分。Positional Encoding 类以向量形式为标记添加位置信息,以便在线性空间中区分它们,而 Encoder Layer 添加了归一化和 dropout 以实现最佳正则化。Encoder 类依赖于多个编码器层,因此能有效地处理输入序列。由于从编码器层到解码器层通过使用注意力层和前馈层,编码器层的输出没有经过任何修改,因此通过使用测试输入来检查编码器层的输出形状,以确保其正常工作并返回正确的形状。 Transformer 注意力机制的意义Transformer 中的注意力机制通过提供几个独特的优势,彻底改变了自然语言处理 (NLP) 领域
Transformer 模型应用Transformer 及其注意力机制已成功应用于各种 NLP 任务,证明了其多功能性和有效性
结论自注意力操作是 Transformer 架构中用于解决输入数据依赖性的主要组成部分。因此,本文概述了五种主要的注意力机制,包括缩放点积注意力、多头注意力、自注意力、编码器-解码器注意力和因果自注意力,当将它们集成到您的模型中时,它们将通过使模型能够处理各种 NLP 任务来增强模型的性能。 下一主题机器学习中的偏差与方差 |
我们请求您订阅我们的新闻通讯以获取最新更新。