Transformer架构详解
整体架构概述
Transformer采用经典的编码器-解码器(Encoder-Decoder)架构,完全基于注意力机制构建。
编码器架构
编码器层结构
每个编码器层包含两个主要组件:
- 多头自注意力机制(Multi-Head Self-Attention)
- 位置前馈网络(Position-wise Feed-Forward Network)
多头自注意力
多头自注意力是编码器的核心组件,允许模型同时关注序列中不同位置的信息。
解码器架构
解码器层结构
每个解码器层包含三个主要组件:
- 掩码多头自注意力(Masked Multi-Head Self-Attention)
- 编码器-解码器多头注意力(Encoder-Decoder Multi-Head Attention)
- 位置前馈网络(Position-wise Feed-Forward Network)
注意力机制详解
缩放点积注意力
Transformer使用缩放点积注意力作为基础注意力函数:
Attention(Q, K, V) = softmax(QK^T / √d_k)V
位置编码
正弦位置编码
Transformer使用正弦和余弦函数来编码位置信息:
PE(pos, 2i) = sin(pos/10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos/10000^(2i/d_model))
层归一化和残差连接
层归一化
层归一化在每个子层之后应用,帮助稳定训练过程。
残差连接
残差连接帮助深层网络的训练,避免梯度消失问题。
架构变体
编码器-解码器变体
- 仅编码器:BERT类模型
- 仅解码器:GPT类模型
- 编码器-解码器:T5、BART类模型
模型参数和配置
标准配置
- d_model: 512 (模型维度)
- d_ff: 2048 (前馈网络维度)
- num_heads: 8 (注意力头数)
- num_layers: 6 (层数)
- vocab_size: 50000 (词汇表大小)
计算复杂度分析
注意力计算复杂度
对于序列长度n和模型维度d:
- 时间复杂度:O(n²d)
- 空间复杂度:O(n² + nd)
总结
Transformer架构的成功在于其简洁而强大的设计:
- 统一的注意力机制:处理各种序列建模任务
- 并行化能力:大大提高训练效率
- 可扩展性:易于扩展到更大的模型
- 通用性:适用于多种模态和任务