欢迎光临
我们一直在努力

Transformer 架构详解

一、Transformer 是什么?

Transformer 是 Google 在 2017 年提出的革命性神经网络架构,它完全基于注意力机制,抛弃了传统的循环神经网络(RNN)和卷积神经网络(CNN)。现在所有主流的大语言模型(GPT、BERT、Llama 等)都是基于 Transformer 架构构建的。

核心思想比喻:

想象你要理解一篇文章:

  • 传统方法:像逐字阅读,看到后面可能忘了前面(RNN)

  • Transformer:像把文章铺在桌上,一眼看到所有词的关系,通过划重点(注意力)来理解

二、Transformer 的整体架构

Transformer 是一个编码器-解码器结构,主要用于序列到序列的任务(如翻译)。下面是完整的数据流向:

输入序列 → 词嵌入 + 位置编码 → [编码器 × N] → 编码器输出

目标序列 → 词嵌入 + 位置编码 → [解码器 × N] → 线性层 → 输出概率

关键特点:

  • 完全并行:所有词同时处理,训练速度快

  • 全局注意力:每个词能看到整个序列

  • 堆叠结构:多层编码器/解码器逐步精炼表示

  • 三、核心组件详解

    1. 词嵌入(Word Embedding)

    # 将离散的词ID转为连续的向量
    # 例如:"cat" → [0.2, -0.5, 0.8, …]

    • 作用:让模型理解词的语义

    • 维度:通常 512 或 768 维

    • 学习:随训练一起优化

    2. 位置编码(Positional Encoding)

    python

    # 告诉模型词的位置信息
    def get_positional_encoding(position, d_model):
    # 使用正弦和余弦函数生成
    angle = position / (10000^(2i/d_model))
    PE[pos, 2i] = sin(angle)
    PE[pos, 2i+1] = cos(angle)

    • 为什么需要:Transformer 没有循环结构,不知道词序

    • 设计原理:不同位置有不同的编码模式

    • 特点:相对位置关系容易学习(平移不变性)

    3. 注意力机制(Attention)—— Transformer 的灵魂

    3.1 自注意力(Self-Attention)

    # 计算一个词与其他所有词的关系
    注意力 = softmax( (Q·K^T) / √d_k ) · V

    • Q(Query):我要找什么

    • K(Key):我有什么

    • V(Value):我给出什么

    示例:理解句子 "The cat sat on the mat"

    • "cat" 会关注 "The"(冠词)、"sat"(动作)

    • 形成权重:cat → The:0.3, sat:0.5, on:0.1, mat:0.1

    3.2 缩放点积注意力
    • 缩放因子 √d_k:防止点积过大导致梯度消失

    • Softmax:将注意力权重归一化为概率分布

    3.3 多头注意力(Multi-Head Attention)

    # 多个注意力头并行工作
    头1:关注语法关系(主谓宾)
    头2:关注语义关系(同义词)
    头3:关注指代关系(代词指代)
    头4:关注情感倾向

    # 结果拼接后通过线性层融合

    优势:

    • 并行计算:多个头同时处理

    • 多视角理解:每个头学习不同的关注模式

    • 增强表达能力:组合多种关系

    4. 前馈网络(Feed-Forward Network)

    python

    # 对每个位置独立应用
    FFN(x) = max(0, x·W1 + b1)·W2 + b2

    • 位置独立:每个词单独处理

    • 两层全连接:先扩展维度(如512→2048),再压缩回原维度

    • 非线性激活:ReLU 增加模型表达能力

    5. 残差连接与层归一化

    残差连接(Residual Connection)

    输出 = x + 子层(x)

    作用:

    • 防止梯度消失:梯度可以直接回流

    • 保留原始信息:网络可以"跳过"某些层

    • 训练更稳定:深层网络更容易优化

    层归一化(Layer Normalization)

    LN(x) = γ * (x – μ) / σ + β

    与批归一化的区别:

    • 批归一化:跨样本同一特征

    • 层归一化:同一样本所有特征(更适合序列数据)

    四、编码器(Encoder)详细结构

    编码器由 N 个相同的层堆叠而成(原论文 N=6):

    输入 → 词嵌入 → 位置编码 → [编码器层 × N] → 编码器输出

    单个编码器层:

    输入

    [多头自注意力] → 残差连接 → 层归一化

    [前馈网络] → 残差连接 → 层归一化

    输出

    编码器的作用:理解输入序列,提取高层次表示

    五、解码器(Decoder)详细结构

    解码器也由 N 个相同的层堆叠:

    单个解码器层:

    输入

    [带掩码的多头自注意力] → 残差连接 → 层归一化

    [多头交叉注意力] → 残差连接 → 层归一化

    [前馈网络] → 残差连接 → 层归一化

    输出

    关键区别:

  • 带掩码的自注意力:防止看到未来信息

    # 训练时,第 t 个词只能看到前 t-1 个词
    掩码 = [[1, 0, 0, 0],
    [1, 1, 0, 0],
    [1, 1, 1, 0],
    [1, 1, 1, 1]]

  • 交叉注意力:连接编码器和解码器

    • Q 来自解码器

    • K, V 来自编码器输出

    • 让解码器知道该关注输入序列的哪些部分

  • 六、Transformer 的工作流程

    以机器翻译为例(英译中):

    训练阶段:

    英文句子 → 编码器 → 上下文表示

    中文句子(目标)→ 解码器 → 预测下一个词

    推理阶段(自回归生成):

    输入:"Hello world" → 编码器 → 上下文表示

    解码器开始生成:
    Step 1: 输入 <开始> → 输出 "你"(概率最大)
    Step 2: 输入 <开始> "你" → 输出 "好"
    Step 3: 输入 <开始> "你好" → 输出 "世界"
    Step 4: 输入 <开始> "你好世界" → 输出 <结束>

    七、Transformer 的变体

    1. 仅编码器架构(如 BERT)

    用途:文本理解(分类、问答)
    结构:只有编码器
    特点:双向注意力,能看到完整上下文

    2. 仅解码器架构(如 GPT)

    用途:文本生成
    结构:只有解码器(去掉交叉注意力)
    特点:自回归生成,因果注意力掩码

    3. 编码器-解码器架构(原版 Transformer、T5)

    用途:序列到序列任务(翻译、摘要)
    结构:完整编码器+解码器

    八、为什么 Transformer 如此成功?

    1. 并行计算

    • RNN:必须顺序处理,t 时刻依赖 t-1 时刻

    • Transformer:所有词同时计算注意力

    2. 长距离依赖

    • RNN:长序列会梯度消失/爆炸

    • Transformer:任意两个词直接相连(通过注意力)

    3. 可扩展性

    • 层数、头数、维度可轻松调整

    • 适合大规模预训练

    4. 通用性

    • 同一架构可用于多种任务

    • 只需调整输入输出格式

    九、数学细节(想深入了解可以看看)

    注意力计算:

    Attention(Q, K, V) = softmax( Q·K^T / √d_k ) · V

    其中:
    Q = X·W_Q [n×d_k]
    K = X·W_K [n×d_k]
    V = X·W_V [n×d_v]

    多头注意力:

    MultiHead(Q, K, V) = Concat(head₁, head₂, …, head_h)·W_O

    head_i = Attention(Q·W_Qᵢ, K·W_Kᵢ, V·W_Vᵢ)

    前馈网络:

    FFN(x) = max(0, x·W₁ + b₁)·W₂ + b₂
    # 通常 d_ff = 4×d_model

    十、实际考虑

    1. 计算复杂度

    • 自注意力:O(n²)(n 为序列长度)

    • 优化方法:稀疏注意力、分块计算

    2. 内存使用

    • 存储注意力矩阵:n×n×batch_size

    • 长序列需要优化

    3. 训练技巧

    • 学习率预热

    • 标签平滑

    • 梯度裁剪

    总结

    Transformer 的核心创新在于完全基于注意力机制,它通过:

  • 自注意力让每个词直接关注所有其他词

  • 多头机制从不同角度理解关系

  • 位置编码引入顺序信息

  • 残差连接稳定深层网络训练

  • 前馈网络增强每个位置的表示

  • 这种设计使得 Transformer 能够并行处理整个序列,捕获长距离依赖,并且高度可扩展,成为现代大语言模型的基石。

    理解 Transformer 是理解所有现代 LLM 的关键。虽然看起来复杂,但其核心思想很简单:让模型自己决定该关注什么,而不是像 RNN/CNN 那样强加固定的处理模式。

    赞(0)
    未经允许不得转载:171主机测评 » Transformer 架构详解
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址