一份文档带你吃透逐层分解Transformer

 Transformer 模型的核心思想是通过自注意力机制(Self-Attention)和多层结构处理序列数据。下面我们逐层分解其架构,从宏观到微观进行解析:

1. 宏观结构(Encoder-Decoder 框架)

Transformer 由 Encoder(编码器) 和 Decoder(解码器) 堆叠而成:

  • Encoder:将输入序列(如句子)映射为高维表示(上下文相关的向量)。

  • Decoder:基于 Encoder 的输出和已生成的部分结果,逐步生成目标序列(如翻译结果)


2. Encoder 分解

单个 Encoder 层由两个核心子层组成:

(1) 多头自注意力(Multi-Head Self-Attention)
  • 作用:捕捉序列中各个位置之间的关系,生成上下文相关的表示。

  • 核心步骤

    1. Query-Key-Value 计算:对输入向量分别线性变换为 Q、K、V。

    2. 注意力分数:计算 Q 和 K 的点积,缩放后通过 Softmax 归一化。

    3. 加权求和:用注意力权重对 V 加权求和,得到输出。

  • 多头机制:并行多组注意力头,拼接后线性变换,增强模型捕捉不同关系的能力。

(2) 前馈神经网络(Feed-Forward Network, FFN)
  • 作用:对每个位置的表示进行非线性变换。

  • 结构:两层全连接层(通常中间维度扩大,如 2048,再用 ReLU 激活)。

(3) 残差连接 & 层归一化
  • 每个子层输出前会:

    1. 残差连接输出 = 子层输出 + 输入(缓解梯度消失)。

    2. 层归一化(LayerNorm):对特征维度归一化,稳定训练。


3. Decoder 分解

Decoder 结构与 Encoder 类似,但增加了一些设计:

(1) 掩码多头自注意力(Masked Multi-Head Attention)
  • 作用:确保解码时只能看到当前位置及之前的信息(防止信息泄漏)。

  • 实现:在注意力分数计算时,将未来位置的权重设为 -inf(Softmax 后变为 0)。

(2) 编码器-解码器注意力(Encoder-Decoder Attention)
  • 作用:让 Decoder 关注 Encoder 的输出(类似传统 Seq2Seq 的注意力)。

  • Key & Value 来自 Encoder 的输出,Query 来自 Decoder 的上层输出。

(3) 前馈神经网络 & 残差连接
  • 与 Encoder 的 FFN 结构相同。

4. 输入输出处理

(1) 输入嵌入(Input Embedding)
  • 将输入词(或子词)转换为高维向量(如 512 维)。

(2) 位置编码(Positional Encoding)
  • 作用:为模型注入序列的位置信息(因为 Transformer 无递归结构)。

  • 方法:使用正弦/余弦函数生成固定或可学习的位置向量,与词向量相加。

(3) 输出层
  • 线性层 + Softmax 预测下一个词的概率分布。


 

6. 代码级细节(以 PyTorch 为例)

python

复制

下载

# 自注意力计算简化示例
def attention(Q, K, V, mask=None):
    d_k = Q.size(-1)
    scores = torch.matmul(Q, K.transpose(-2, -1)) / math.sqrt(d_k)
    if mask is not None:
        scores = scores.masked_fill(mask == 0, -1e9)
    p_attn = F.softmax(scores, dim=-1)
    return torch.matmul(p_attn, V)

# 多头注意力拼接
class MultiHeadAttention(nn.Module):
    def __init__(self, h, d_model):
        super().__init__()
        self.d_k = d_model // h
        self.h = h
        self.linears = clones(nn.Linear(d_model, d_model), 4)

7. 各层的作用类比

  • 自注意力层:类似“词与词之间的投票”,决定彼此的重要性。

  • FFN 层:类似“对每个词单独做特征加工”。

  • 残差连接:类似“保留原始记忆,只学习增量变化”。

通过这种逐层分解,可以清晰理解 Transformer 如何通过堆叠模块实现强大的序列建模能力。

 这里给大家整理了Transformer资料包+人工智能学习路线图大纲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值