一、注意力机制

1.什么是注意力机制

举个栗子
在这里插入图片描述
当你看到一张包含"锦江饭店"的照片时,短时间内大脑可能只对"锦江饭店"这个地方有印象,而忽略了电话号码、行人、"喜运来大酒家"等信息。这就是人类视觉的注意力机制——我们不是从头到尾观察一遍事物后才有判断,而是把注意力放在最具有辨识度的地方,从而快速做出判断。
📝 注意力机制(Attention Mechanism) 就是把这种人类感知方式,应用到深度神经网络中:让机器学会感知数据中重要的部分和不重要的部分,在提取特征时把精力放在最关键的地方。

2.为什么需要注意力机制

先从RNN模型的角度来看它的缺陷:

RNN的问题 说明
串行效率低 一个时间步一个时间步提取特征,无法并行
长序列遗忘 前面单词的特征会随着序列增长而被稀释,没有重点

带有注意力机制的模型

注意力机制的优势 说明
并行提取特征 可以同时处理所有时间步,效率高
关注关键点 能注意到最重要的信息,不眉毛胡子一把抓

所以,带有注意力机制的模型,提取特征更灵活、更高效。

3.注意力机制的QKV

注意力机制的核心是 Q、K、V 三个张量,用档案柜找文件的场景来理解:

概念 比喻 说明
Query(查询)Q 正在研究的课题(便利贴) 表示输入序列要查询的问题
Key(键)K 文件夹上贴的标签(key#1, key#2) 表示关注内容的索引/关键字
Value(值)V 文件柜里的文档资料 表示实际要关注的内容

4.注意力机制的实现步骤

第1步:Q和K进行相似度运算
得到注意力权重分布(一个系数数组),例如:

[0.001, 0.3, 0.5, 0.002, 0.001, 0.00003, ...][0.001,\ 0.3,\ 0.5,\ 0.002,\ 0.001,\ 0.00003,\ ...][0.001, 0.3, 0.5, 0.002, 0.001, 0.00003, ...]

这个权重分布表示"当前词对序列中每个词的关注程度"。

第2步:权重分布与V加权求和
attentionq=∑iweighti⋅Vi\text{attention}_q = \sum_i \text{weight}_i \cdot V_iattentionq=iweightiVi
例如:0.001×⟨s⟩+0.3×a+0.5×robot+...=attention_q0.001 \times \langle s \rangle + 0.3 \times a + 0.5 \times robot + ... = attention\_q0.001×s+0.3×a+0.5×robot+...=attention_q

📝 本质上:通过QKV运算,把普通的Q升级成一个更强大的Q——这个新的Q包含了上下文中最值得关注的信息。

⚠️ 一开始权重分布可能不准确,但不要紧。注意力机制只是前向计算路径中的一个小策略,最终靠损失函数和反向传播来更新权重参数,让模型学会从数据中快速获取关键特征。


二、Seq2Seq架构

1.Seq2Seq基本概念

Seq2Seq(Sequence-to-Sequence) 最早于2014-2015年被提出,也叫编码器-解码器(Encoder-Decoder)模型。核心是使用RNN、GRU或LSTM作为基础组件,用于处理输入和输出都是长度可变的序列任务。

比如将英文 “How are you” 映射为法文 “Comment allez-vous”,输入输出长度不同,传统模型无法直接处理,Seq2Seq正是为这类场景设计的。

2.Seq2Seq的组成

Seq2Seq由两个主要部分组成:

编码器(Encoder)
  • 接收输入序列(单词 tokens x1,x2,...,xTx_1, x_2, ..., x_Tx1,x2,...,xT
  • 逐个处理每个时间步,生成一个上下文向量(Context Vector),也叫中间语义张量C
  • 这个向量试图包含整个输入序列的语义信息
解码器(Decoder)
  • 以编码器的输出作为初始隐藏状态
  • 逐个生成输出序列,每个时刻的输出会作为下一时刻的输入(自回归生成
  • 通常会包含注意力机制,以便在生成过程中动态关注输入序列的不同部分

3.Seq2Seq中的注意力机制

在解码器中加入注意力机制时,QKV分别是什么

在这里插入图片描述

字母 含义 说明
Q 经过词嵌入后的张量 Q查询谁就是谁的查询张量
K 上一个时间步的隐藏层输出 作为注意力比的键向量
V 中间语义张量C 编码器生成的上下文向量

📝 每个时间步都要进行QKV运算,把Q升级成更强大的Q,后续解码流程和以前一样继续进行。

注意力机制只是一小段计算路径,最终还是要靠损失函数 + 反向传播三大件配合,才能真正学会特征。


三、Transformer

1.Transformer诞生背景

📝 Transformer于2017年被Google团队提出,论文题目震耳欲聋:《Attention is All You Need》

这篇论文开创了一种全新的模型架构——用纯注意力机制取代了RNN,同时继承了Seq2Seq的编码器-解码器架构、自回归生成方式和训练推理策略,一举解决了RNN的长距离依赖并行计算两大痛点。

Transformer的出现引发了NLP领域的革命,成为机器翻译、文本摘要、对话生成等任务的基础。随后基于Transformer的变种模型相继涌现:

模型 时间 意义
BERT 2018年10月 Google发布,横扫NLP领域11项SOTA!
GPT系列 后续 OpenAI基于Transformer的生成式突破
XLNET、RoBERTa 后续 击败BERT,但核心仍是Transformer

📝 SOTA = State Of The Art,指在该研究任务中目前最好最先进的模型,简单理解就是"当前最佳/世界纪录级别"。

2.Tranformer相比RNN/LSTM的 又是

对比项 LSTM/GRU Transformer
并行训练 ❌ 串行,一个时间步一个时间步处理 ✅ 可以利用分布式GPU并行训练
长文本处理 ❌ 间隔较长的语义关联效果差,易梯度消失/爆炸 ✅ 捕捉长距离语义关联效果更好
市场占有 逐渐被取代 几乎所有排名靠前的模型都在用

3.Transformer总体架构

Transformer共分为4个部分

输入部分 → 编码器部分 → 解码器部分 → 输出部分

在这里插入图片描述

输入部分

  • 源文本嵌入层及其位置编码器
  • 目标文本嵌入层及其位置编码器

输出部分

  • 线性层
  • Softmax层

编码器部分

  • N个编码器层堆叠而成
  • 每个编码器层由两个子层连接结构组成:
子层 包含
第一个 多头自注意力子层 + 规范化层 + 残差连接
第二个 前馈全连接子层 + 规范化层 + 残差连接

解码器部分

  • N个解码器层堆叠而成
  • 每个解码器层由三个子层连接结构组成:
子层 包含
第一个 多头自注意力子层 + 规范化层 + 残差连接
第二个 多头注意力子层 + 规范化层 + 残差连接
第三个 前馈全连接子层 + 规范化层 + 残差连接

4.编码器和解码器的连接方式

编码器层与层如何连接?

编码器每层都会生成K(键向量)和V(值向量),传递给解码器使用。

解码器层与层如何连接?

解码器采用自回归方式,每层的输出作为下一层的输入,同时利用编码器传来的K、V进行注意力计算。

📝 NLP核心任务划分:自然语言理解(NLU)和自然语言生成(NLG)

四、总结

知识点 一句话总结
注意力机制 让模型学会把注意力放在数据中最具辨识度的地方
QKV Q=查询、K=键索引、V=内容,通过QK相似度 + VW加权求和得到强化Q
RNN缺陷 串行效率低 + 长序列遗忘问题
注意力优势 并行提取特征 + 关注关键信息
Seq2Seq 编码器处理输入生成中间语义C,解码器自回归生成输出
Seq2Seq+注意力 Q=词嵌入后张量、K=上一隐藏层输出、V=中间语义C
Transformer 2017年Google提出,用纯注意力机制取代RNN,解决并行和长距离依赖问题
Transformer架构 4部分:输入(嵌入+位置编码)→ 编码器(N层双子层)→ 解码器(N层三子层)→ 输出(线性+softmax)

📝 核心公式
attention(Q,K,V)=softmax(QKTdk)Vattention(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) Vattention(Q,K,V)=softmax(dk QKT)V
这就是Transformer中大名鼎鼎的 Scaled Dot-Product Attention,也是Attention is All You Need的真谛。

注意力机制是现代NLP的基石——它不仅让Seq2Seq模型如虎添翼,更催生了Transformer这个革命性架构,最终衍生出BERT、GPT等改变世界的大模型。理解注意力机制,就理解了当代NLP的半壁江山

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐