Transformer 架构

循环神经网络(RNN)和 卷积神经网络(CNN)

存在缺陷:

  • 顺序计算,难以并行化。导致训练速度非常慢
  • 长序列依赖问题,处理长序列时存在梯度消失


Transformer

大模型通过Transformer 架构 捕捉输入序列中的统计规律(词与词的关联、上下文逻辑和顺序),理解输入,再通过自回归生成响应内容。

(一)工作流程

Transformer 的各个组件通过 “输入处理→特征提取→上下文融合→输出生成” 的顺序协同工作:

  1. 输入预处理:文本先被转换成向量(词嵌入),再叠加位置编码(标记词的顺序),得到包含语义和位置信息的初始向量。

  2. 编码器工作:初始向量进入多层编码器。每层中,多头注意力让每个词从多个角度关注序列中其他词(捕捉 “谁和谁相关”),得到融合上下文的向量;随后前馈神经网络对每个词的向量单独加工(提炼更精准的特征);经过多层迭代后,编码器输出包含全局上下文的 “语义矩阵”。
  3. 解码器工作:生成目标序列时,解码器每层先通过掩蔽多头注意力(只让当前词关注前面已生成的词,避免 “偷看未来”)处理已生成的部分;再通过编码器 - 解码器注意力(让当前词关注编码器输出的 “语义矩阵” 中相关的输入信息);最后经前馈神经网络加工,逐层优化生成向量。
  4. 输出生成:解码器最终输出的向量经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),长序列下 需要权衡缓存大小和性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值