一、RNN 的两个缺陷
1. 串行计算:无法并行
RNN 的计算依赖于上一个时刻的隐藏状态(Hidden State):h_t = f(W * x_t + U * h_{t-1})
什么是 Hidden State? 是 RNN 在当前位置输出的“记忆向量”,压缩了从开头到当前位置的全部信息,就像一个读完半句话后大脑里的“语义摘要”2. 梯度消失与长距离遗忘
RNN 在反向传播时,梯度经过多次连乘会趋近于 0(梯度消失),导致模型无法学习远距离的依赖关系。同时,Hidden State 容量有限,早期信息在长序列中逐渐被“冲淡”,造成遗忘。
二、Transformer 如何解决这两个问题
1. 并行计算能力(Attention + Multi-Head)
Self-Attention 让每个 token 直接与整个序列中所有 token 计算相似度,这些计算互不依赖,可以完全并行。
Multi-Head Attention 的进一步优化:
- 随机初始化多个不同的参数矩阵(W_Q、W_K、W_V)
- 每个“头”独立训练,模型在训练中自动学会关注不同维度的关系(如语法、语义、指代等)
- 最后将所有头的输出拼接,用一个线性层融合
Multi-Head Attention 允许模型从多个表示子空间同时关注不同位置的信息,不同的头可以捕捉不同类型的关系。
2. 直接建立长距离依赖(Attention)
RNN 的 token 之间路径长度为 O(n),信息需要一步步传递;而 Attention 让任意两个 token 直接相连,路径长度恒为 O(1)。所以“遗忘前面信息”的问题从根本上被解决。
3. 残差连接(Residual Connection)解决梯度消失
公式:输出 = 模块(输入) + 输入
反向传播时,梯度可以通过“+ 输入”这条高速通道直接传到前层,有效缓解了深层网络的梯度消失。同时,每一层学习的只是对输入的“修正增量”,原始信息一直保留。
4. LayerNorm 稳定训练
LayerNorm 对单个样本的所有特征维度做标准化(均值 0,方差 1),让每一层输入的数据分布保持稳定。这加速了收敛,也让训练更稳定。
三、Transformer Block 完整结构
输入 → Multi-Head Self-Attention → 残差连接 → LayerNorm → FFN → 残差连接 → LayerNorm → 输出
- 残差连接:保留原始输入,防止梯度消失
- LayerNorm:标准化数据分布,稳定训练
- FFN:对聚合后的信息做非线性深度加工(知识存储和推理)
四、Transformer vs RNN 对比总结
| 维度 | RNN | Transformer |
|---|---|---|
| 计算方式 | 串行 | 并行 |
| 长距离依赖 | 弱(梯度消失 + 信息遗忘) | 强(Attention 直接连接) |
| 训练效率 | 慢 | 快 |
| 位置信息 | 天然有序 | 需要 Positional Encoding 显式注入 |
| 并行能力 | 无 | 强 |
| 核心机制 | 循环 Hidden State | Self-Attention + FFN |
| 稳定性 | 梯度易消失 | 残差 + LayerNorm 保证稳定 |