循环神经网络(RNN)和 卷积神经网络(CNN)
存在缺陷:
- 顺序计算,难以并行化。导致训练速度非常慢
- 长序列依赖问题,处理长序列时存在梯度消失
Transformer
大模型通过Transformer 架构 捕捉输入序列中的统计规律(词与词的关联、上下文逻辑和顺序),理解输入,再通过自回归生成响应内容。
(一)工作流程
Transformer 的各个组件通过 “输入处理→特征提取→上下文融合→输出生成” 的顺序协同工作:
-
输入预处理:文本先被转换成向量(词嵌入),再叠加位置编码(标记词的顺序),得到包含语义和位置信息的初始向量。
- 编码器工作:初始向量进入多层编码器。每层中,多头注意力让每个词从多个角度关注序列中其他词(捕捉 “谁和谁相关”),得到融合上下文的向量;随后前馈神经网络对每个词的向量单独加工(提炼更精准的特征);经过多层迭代后,编码器输出包含全局上下文的 “语义矩阵”。
- 解码器工作:生成目标序列时,解码器每层先通过掩蔽多头注意力(只让当前词关注前面已生成的词,避免 “偷看未来”)处理已生成的部分;再通过编码器 - 解码器注意力(让当前词关注编码器输出的 “语义矩阵” 中相关的输入信息);最后经前馈神经网络加工,逐层优化生成向量。
-
输出生成:解码器最终输出的向量经Softmax 函数转换成概率分布,选出概率最高的词作为当前生成结果,重复此过程直到生成完整序列。
整个过程中,位置编码保证语序,注意力机制实现上下文关联,多头注意力扩展关注角度,前馈神经网络深化特征,各组件分工互补,让模型能高效处理长序列并捕捉复杂语义关系。
(二)核心思想
- 采用了编码器-解码器 (Encoder-Decoder) 结构。
- 自注意力机制:捕捉 输入序列中 所有词向量之间的关联,算出其他词对自己的重要程度,从而搞懂 词与词之间的上下文关系。
- 位置编码:给每个词加个 “位置标签”,保留输入序列中词向量的顺序信息。
- 多头注意力:从多个注意力层 并行的捕捉多维度关联(如语义、语法、逻辑)。最后整合结果,让对上下文的理解更全面。
- 前馈神经网络:对经过注意力计算后的每个词向量进行 “非线性变换”,捕捉词向量自身更复杂的特征。
- Softmax 函数:是一种将向量转换为概率分布的激活函数,把注意力算出的 “词与词重要性分数” 转换成总和为 1 的概率值,从而得出下一个词的概率分布。从而确定每个词作为下一个输出词的可能性,完成最终预测。
(三)自注意力机制
捕捉了词与词的关联。让模型在处理一句话时,能自动判断 “每个词与其他词的关联程度”,从而理解语境。例如处理句子 “小明喜欢吃苹果,他觉得它很甜”:模型会通过计算 “注意力权重”,识别出 “他” 对应 “小明”、“它” 对应 “苹果”,避免指代混淆。
QKV:是自注意力的核心,模拟“信息检索”过程,
1、对于输入序列中的每个词向量,通过三个线性层 生成 三个向量:
-
Query (Q):代表“我想查找什么”
-
Key (K):代表“我是谁,我包含什么信息”
-
Value (V):代表“具体的信息内容”
2、计算注意力分数:通过 “Query 与所有 Key 的点积” ,衡量每个token与当前token的相关性。
scores = Q与K点积 / 缩放因子
缩放因子 是为了避免 点积结果过大 导致Softmax梯度消失。
3、对 scores分数 做 Softmax,得到归一化的注意力权重。
4、再用权重对所有 Value 加权求和,最终得到 “包含上下文关联的词向量”。
多头注意力:通过多个并行的QKV计算,捕捉不同维度的关联,最后拼接结果并通过线性层输出。
(四)多头注意力 (Multi-Head Attention)
为了从不同角度同时捕捉词和词的关联(如语义、语法、逻辑),会并行使用多头注意力(Multi-Head Attention)—— 将自注意力重复多次(如 12 头、24 头),每头关注不同关联,最后合并结果。
多头注意力允许多个注意力层并行的分别捕捉不同的特征子空间,这有助于提高模型的表现力和泛化能力。为了从不同角度捕捉信息,Transformer 将这个过程并行执行多次(例如8次),每次使用不同的线性变换生成不同的 Q、K、V。这就像有多组“注意力专家”,一组专注于语法关系,一组专注于语义关系,另一组专注于指代关系等。最后将所有头的输出拼接起来,再经过一个线性层融合。
(五)位置编码
由于Transformer 是 “并行计算” 的,本身没有内在的顺序概念,但语言的顺序至关重要(如 “我打他” 和 “他打我” 完全不同),所以需要额外给每个词向量添加 “位置信息”,保留输入的顺序信息。因此引入了位置编码来体现序列的位置信息。
实现方式:通过固定的正弦和余弦函数公式生成固定的 “位置向量”,与词的原始向量相加,确保模型能区分 “不同位置的相同词”。
(六)前馈神经网络
对每个词的向量进行 “非线性变换”—— 比如将 “零散的关联信息” 提炼成 “更抽象的语义特征”(如从 “小明”“吃”“苹果” 中提炼出 “小明的行为是吃苹果”)。
编码器和解码器内部均包含全连接的前馈神经网络,用于进一步提取局部特征。
(七)掩码(Mask)
对某些值进行掩盖,使其在参数更新时不产生效果。
Transformer 模型里面涉及两种 mask,分别是 Padding Mask 和 Sequence Mask。
1、padding mask
对输入序列进行对齐时,多余或填充的位置的值加上一个非常大的负数(负无穷),这样的话,经过 softmax,这些位置的概率就会接近0。
2、sequence mask
为了使得 decoder 不能看见未来的信息。对于一个序列,在 time_step 为 t 的时刻,我们的解码输出应该只能依赖于 t 时刻之前的输出,而不能依赖 t 之后的输出。因此我们需要想一个办法,产生一个上三角矩阵,上三角的值全为0,把这个矩阵作用在每一个序列上,这样预测时 就能把 t 之后的信息给隐藏起来。这在训练的时候有效,因为训练的时候每次我们是将target数据完整输入进decoder中地,预测时不需要,预测的时候我们只能得到前一时刻预测出的输出。
注意:Encoder中只需要padding mask即可,而Decoder中需要padding mask和sequence mask。
(八)编码器-解码器 (Encoder-Decoder) 结构
Transformer由编码器(Encoder) 和解码器(Decoder) 组成,不同模型(如 GPT、BERT)会根据任务需求选择使用:
- 编码器:处理输入序列,提取特征。
- 解码器:根据编码器输出生成目标序列。
1、编码器 (Encoder)
编码器由 N 个(原论文中 N=6)完全相同的层堆叠而成。每一层包含两个子层:
-
多头自注意力层 (Multi-Head Self-Attention):将输入投影到多个 “子空间”,并行计算注意力,捕获不同角度的关联信息。同时关注语法、语义、逻辑关系。
-
前馈神经网络层 (FFN):一个简单的全连接网络(通常是两层全连接层),对每个位置的表示进行非线性变换(同一层内不同位置共享参数)。
残差连接 和 层归一化 :每个子层都被一个残差连接包围,之后再进行层归一化。即 Output = LayerNorm(x + Sublayer(x))。这有助于稳定训练和深化网络。
2、解码器 (Decoder)
解码器也由 N 个(原论文中 N=6)完全相同的层堆叠而成。每一层包含三个子层:
-
掩码多头自注意力层 (Masked Multi-Head Self-Attention):与编码器类似,但为了防止在训练时“偷看”未来的信息(即当前位置只能关注它之前的位置),通过一个掩码(mask)将未来的位置权重设为负无穷(经 Softmax 后变为0)。
-
编码器-解码器注意力层 (Encoder-Decoder Attention):这是连接编码器和解码器的桥梁。它的 Query 来自解码器的上一层,而 Key 和 Value 来自编码器的最终输出。这让解码器中的每个位置都能关注到输入序列的所有位置。
-
前馈神经网络层 (Position-wise Feed-Forward Network):与编码器中的相同。
-
同样,每个子层都配有残差连接和层归一化。
3、其他关键组件
-
嵌入层 (Embedding Layer):
将输入的词汇索引转换为密集的向量表示(词向量)。 -
线性层和 Softmax:
解码器的输出 会经过一个线性层(将向量维度投影到词汇表大小),然后通过 Softmax 函数计算出下一个词的概率分布。
4、模型代表
GPT 系列(Decoder-only)、BERT(Encoder-only)、T5(Encoder-Decoder)、LLaMA 系列。
(1)仅编码器模型 (Encoder-Only)
-
代表:BERT、RoBERTa
-
特点:专注于理解语言,适用于文本分类、命名实体识别、情感分析等理解型任务。
(2)仅解码器模型 (Decoder-Only)
-
代表:GPT 系列、LLaMA、
-
特点:专注于生成语言,适用于文本生成、对话、代码补全等生成式任务。它们通常使用掩码自注意力,以自回归生成的方式逐个生成词。
(3)编码器-解码器模型 (Encoder-Decoder)
-
代表:T5、BART
-
特点:适用于需要根据输入生成输出的任务,如机器翻译、文本摘要、问答等。
(九)残差连接 和 层归一化
1、残差连接
输出 = 输入 + 层加工结果(公式:Output = Layer_Output + Input)。保留原始输入信息。
类似 多人传话游戏,避免忘记最开始的话。
作用:解决深层网络训练时的 “梯度消失” 问题 —— 让梯度能更顺畅地反向传播到浅层,同时保留原始输入信息,避免深层网络学习到的特征被过度 “扭曲”,让模型能更轻松地训练深层结构。
2、层归一化
对每一层经过残差连接后的输出 通过调整数据的均值和方差,让该层输出的向量特征值分布更稳定(比如把数值范围控制在合理区间)。
作用是避免网络中某一层的输入值因为前层计算波动而 “忽大忽小”,从而稳定训练过程、加速收敛,同时让后续层能更高效地学习特征。
在 Transformer 中,无论是编码器还是解码器的每一层(多头注意力层、前馈神经网络层),都会在处理后先接残差连接(保留原始输入),再通过层归一化(稳定分布),两者配合让深层网络既能 “学透” 复杂特征,又能 “稳定训练”,是 Transformer 能支撑深层结构(通常 12 层或更多)的核心保障。
(十)KV Cache
是优化LLM推理速度的关键技术,核心是 缓存已计算的Key 和 Value,避免重复计算。
- 在自回归生成中,生成第 t 个token时,需要计算它与前 t-1 个token的注意力,
- 若不缓存,每次生成新 token,都需要重新计算 所有历史token的 K 和 V ,复杂度O(t平方);
- 而 KV Cache 会存储前 t-1 个token的 K 和 V,生成第 t 个token时,仅需计算 第 t 个token的Q,再与缓存的K/V计算注意力,复杂度降至O(t);
代价是内存占用增加(存历史KV),长序列下 需要权衡缓存大小和性能。
2575

被折叠的 条评论
为什么被折叠?



