NLP中的注意力机制

📅 2026/8/13 11:16:53
NLP中的注意力机制
文章目录1 注意力机制介绍1.1 概念1.2 为什么需要注意力1.3 注意力QKV1.4 注意力机制步骤1.5注意力机制分类2 Seq2Seq架构中的注意力机制2.1 Seq2Seq架构2.2 Seq2Seq架构中的QKV2.3 注意力概率分布计算流程1 注意力机制介绍1.1 概念人类视觉的注意力机制人类视觉通过长期进化形成视觉注意力机制是大脑信号处理机制会快速扫描全局图像获得需要重点关注的目标区域。本质用有限的精力从海量信息中快速筛选高价值信息。人的大脑天生抓重点忽略次要信息这样才能处理世界的海量信息。RNN的弊端无法处理长序列信息无法并行计算。提示能不能把这种注意力机制引入到深度神经网络中灵感来源这个设计的灵感直接来源于我们熟悉的信息检索和数据库系统。你可以想象一下图书馆或搜索引擎的工作方式Query (查询)就像你在图书馆的检索系统里输入的关键词代表你“想找什么”。Key (键)就像书架上每本书的标签或索书号代表这本书“是什么”。Value (值)就是书本身的内容是你找到书后真正获取的“信息”。注意力机制就是把这个过程“搬”进了神经网络。注意力机制概念观察事物时能够快速判断一种事物是因为大脑把注意力放在事物最具有辨识度的地方从而可快速判断并非是从头到尾的观察一遍事物后才能有判断结果。正是基于这样的理论就产生了注意力机制。注意力机制是一个非常重要、强大的工具是一种在深度学习中常用的技术它允许模型在处理序列数据时能够集中关注输入数据的不同部分自然语言处理中注意力机制被广泛应用于机器翻译、文本摘要、问答系统等任务。图像处理中比如在图像描述生成、图像分类等任务中甚至扩展到了多模态任务如图像与文本之间的关联问题。注意力机制是一个非常重要且强大的工具可以帮助模型更好的理解和利用输入数据的信息。1.2 为什么需要注意力提示与RNN提取事物特征对比为什么要引入注意力机制从RNN模型角度来看RNN一个时间步一个时间步的提取事物特征必须按顺序处理无法并行计算效率低。RNN提取长序列特征时前面单词的特征会遗忘无法有效捕捉全局关键信息没有重点。从带有注意力机制的模型来看可以并行提取事物特征还能注意到关键点。综上带有注意力机制的模型更加灵活的提取事物特征。能够动态关注输入数据中的关键部分避免长信息遗忘让模型更灵活。1.3 注意力QKVQKV是注意力机制中的核心组件它们协同工作以使模型能够灵活的关注输入数据的不同部分从而提升模型的性能和表达能力。QKV分工明确协同完成“聚焦关键信息”的任务。Query查询向量表示输入序列要查询的问题你当前要解决的问题也是触发注意力计算的需求向量Key键向量表示关注的内容的索引关键字用来和Q计算相似度。Value值向量表示关注的内容最终要获取的实际内容tips:注意力机制QKV核心逻辑总结QKV的本质“问题”“索引”“内容”的匹配机制。用Query表达当前的任务需求。用Key作为索引和Query计算相似度找到最相关的信息位置。用Value作为实际内容根据相似度权重输出最终结果。1.4 注意力机制步骤第一步用查询张量Q与键张量K进行相似度运算得到一个注意力机制的权重分布attention_weight第二步用权重分布乘以值张量V得到注意力机制的结果表示attention_q。Attention是关于QKV的函数通过QKV运算普通的Q升级成一个更强大的Q。注意力机制的本质是动态加权让模型能够自动识别输入中哪些信息和当前任务最相关。输出的attention_q不再是孤立的“it查询向量而是融合了整个句子中最相关信息的增强向量。在这个例子中模型通过权重计算自动判断‘it’最可能指代的‘robot’从而完成了指代消解的任务。1.5注意力机制分类深度学习中的注意力机制通常可以分为三类软注意力机制soft/global attention对每个输入项的分配权重为0-1之间也就是某些部分关注的多一点某些部分关注的少一点因为对大部分信息都有考虑但考虑程度不一样所以相对来说计算量比较大。硬注意力机制Hard/Local Attention对每个输入项分配的权重非0即1和软注意不同硬注意力机制只考虑哪部分需要关注哪部分不关注也就是舍弃掉一些不相关项。优势在于可以减少一定的时间和计算成本但有可能丢一些本应该注意的信息。自注意力机制self / intra Attention对每个输入项分配的权重取决于输入项之间的相互作用即通过输入项内部的“表决”来决定应该关注哪些输入项。和前两种相比在处理很长的输入时具有并行计算的优势。2 Seq2Seq架构中的注意力机制2.1 Seq2Seq架构Sequence -to-Sequence架构是一种在自然语言处理中非常重要的模型结构广泛应用于机器翻译、文本摘要、对话系统等任务。该架构的核心思想是将输入序列映射为一个中间表示然后再从这个中间表示生成目标序列。Seq2Seq模型架构包括三部分分别是encoder编码器decoder解码器、中间语义张量c。编码流程1个时间步1个时间步的编码每个时间步有隐藏层输出最终组合成中间语义张量C。解码流程1个时间步1个时间步的解码解码的每个时间步输入input和ht-1输出为output和ht再连接一个全连接层softmax做一个分类从分类结果中找一个预测结果即可。核心概念编码器编码器负责将输入序列映射成一个中间的表示中间语义张量C通常是一个固定长度的向量。常用的编码器结构是循环神经网络RNN或者长短时记忆网络LSTM近年来也包括了Transformer模型。编码器的工作流程对输入的文本序列每个时间步都会产生一个隐藏状态。这些隐藏状态会捕捉到输入序列的信息并被传递给下一个时刻。在Seq2Seq中编码器会将整个输入序列处理完后最后一个时刻的隐藏状态会被用作解码器的初始隐藏状态。解码器解码器接受编码器传递过来的初始隐藏状态并逐步生成目标序列。解码器也是一个RNN系列模型通常会包括一个额外的注意力机制以便在生成目标序列过程中动态地关注输入序列的不同部分。解码器的工作流程一个时间步一个时间步的解码采用自回归机制进行解码上一个时间步的输出作为写一个的输入每个时间步都会用到中间语义张量C。Seq2Seq的痛点与改进原生痛点中间语义张量C是固定长度的当输入序列很长时会丢失早期信息导致翻译或生成效果下降。核心改进引入注意力机制让解码器在生成每个词时能动态关注输入序列的不同部分从而提升长序列的处理能力。注意力机制就是解决“信息利用不细致”的问题。2.2 Seq2Seq架构中的QKV如何在Seq2Seq中添加注意力机制解码中一个时间步一个时间步的解码每个时间步都要添加注意力机制每个时间步都需要引入QKV。权重分布不准确怎么办理解注意力机制应该站在整个深度学习网络三大件的高度来理解注意力机制只不过是前向传播路径中的一个小路径一个小策略最终还是要靠损失函数、反向传播来更新注意力机制层的权重参数来学习事物的特征。2.3 注意力概率分布计算流程算匹配分用F函数对比Decoder当前状态和Encoder每个单词的状态看谁更相关。转成概率用softmax函数把匹配分转成概率求和为1的概率代表关注Encoder每个单词的比例。加权求和用这些概率给Encoder单词的词向量加权得到专属信息包中间语义张量C给Decoder生成词用。