Transformer笔记

transformer模型架构笔记

Transformer 模型笔记

Transformer 是一种基于自注意力机制的深度学习模型,广泛应用于自然语言处理任务,如机器翻译、文本生成等。


模型结构

Transformer 的整体架构由 EncoderDecoder 两部分组成,每部分都包含若干个堆叠的子模块:

  1. Encoder

    • 输入:嵌入后的序列 $X \in \mathbb{R}^{n \times d}$
    • 输出:编码后的序列表示 $Z \in \mathbb{R}^{n \times d}$
    • 主要模块:
      • 多头自注意力(Multi-Head Self-Attention)
      • 前馈网络(Feed-Forward Network, FFN)
  2. Decoder

    • 输入:目标序列 $Y$ 和编码序列 $Z$
    • 输出:解码序列 $Y’$
    • 主要模块:
      • 多头自注意力(目标序列)
      • 编码-解码注意力
      • 前馈网络(FFN)

核心组件

1. 自注意力机制(Self-Attention)

自注意力机制通过计算序列中每个位置与其他位置的相关性,提取全局依赖关系。

公式:

$
\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V
$

  • $Q, K, V$:分别是查询向量、键向量和值向量
  • $d_k$:键向量的维度,用于缩放避免梯度消失

多头注意力:

$
\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h)W^O
$
每个头计算一个注意力机制:
$
\text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V)
$


2. 前馈网络(FFN)

FFN 是一个简单的两层全连接网络,作用于每个序列位置。

公式:

$
\text{FFN}(x) = \text{ReLU}(xW_1 + b_1)W_2 + b_2
$


3. 位置编码(Positional Encoding)

Transformer 通过位置编码加入序列的位置信息。

公式:

$
PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{\frac{2i}{d}}}\right), \quad
PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{\frac{2i}{d}}}\right)
$

  • $pos$:序列中的位置
  • $i$:嵌入向量的维度索引

损失函数

Transformer 的损失函数通常是 交叉熵损失(Cross-Entropy Loss),适用于序列到序列任务。

公式:

$\begin{aligned}
\mathcal{L} = -\frac{1}{N} \sum_{i=1}^N \sum_{t=1}^T y_t \log \hat{y}_t
\end{aligned}$

  • $y_t$:真实目标序列
  • $\hat{y}_t$:模型预测序列

优化技巧

  1. 学习率调度
    使用 warmup 策略:
    $
    \text{lr} = d_\text{model}^{-0.5} \cdot \min(\text{step_num}^{-0.5}, \text{step_num} \cdot \text{warmup_steps}^{-1.5})
    $

  2. 正则化

    • Dropout:防止过拟合
    • Label Smoothing:缓解过拟合问题

优点和缺点

优点:

  1. 并行计算能力强(无需递归)。
  2. 全局上下文建模能力强(通过注意力机制)。
  3. 对长序列具有良好的处理能力。

缺点:

  1. 对长序列的计算复杂度高,$O(n^2)$。
  2. 缺乏位置感知能力,需要通过位置编码补充。

应用

  • 自然语言处理任务(机器翻译、文本摘要、语言模型等)
  • 计算机视觉(Vision Transformer)
  • 时间序列分析