【NLP】 22. NLP 现代教程:Transformer的训练与应用全景解读
🧠 NLP 现代教程:Transformer的训练与应用全景解读
一、Transformer的使用方式(Training and Use)
如何使用Transformer模型?
Transformer 模型最初的使用方式有两种主要方向:
- 类似 RNN 编码-解码器的架构(用于序列到序列任务)
- 例如机器翻译、文本摘要任务。
- Encoder 用于将输入句子编码为向量,Decoder 再将向量解码为目标语言或句子。
- 作为生成上下文词向量的预处理模块
- Transformer也被用作词向量上下文建模器(contextualized word embeddings)。
- 这些向量可输入至下游模型,例如分类器、序列标注器等。
初期效果如何?
- 准确率提升较小:初期在一些基准任务中仅带来轻微的精度提升。
- 效率提升显著:相比RNN,Transformer可并行计算,训练速度大幅提升。
二、Transformer的统治地位崛起(Over Time: Transformers Became Dominant)
为什么Transformer最终成为主流?
- Transformer 架构可以完全并行,解决了RNN“逐步处理”的效率问题。
- 支持大规模模型训练,能够有效利用现代GPU/TPU资源。
- 与“预训练+微调”范式结合,成为自然语言处理的统一框架。
三、BERT:Transformer成功的代表
BERT由三部分构成:
- WordPiece分词(WordPiece Tokenisation)
- 将生僻词拆解为已知子词。例如:“unhappiness” → “un”, “##happiness”
- 避免OOV问题,提高表示能力。
- Transformer结构(Transformer Architecture)
- 多头注意力机制 + 残差连接 + 层归一化
- 采用“Encoder-only”结构
- 大量训练数据(Data)
- 使用维基百科+BooksCorpus等海量文本进行预训练。
三者结合 → 极高性能:
BERT = WordPiece Tokenisation + Transformer Encoder + Pretraining on Large Corpus \text{BERT} = \text{WordPiece Tokenisation} + \text{Transformer Encoder} + \text{Pretraining on Large Corpus} BERT=WordPiece Tokenisation+Transformer Encoder+Pretraining on Large Corpus
BERT代表着“大模型+大数据”的范式首次登顶NLP任务榜单。
四、大模型时代的到来:训练成本问题
- 训练BERT等模型需要巨大的算力与存储资源。
- 这使得模型训练逐渐超出一般高校实验室的能力范围。
- 学术界被迫转向使用开源预训练模型进行微调(fine-tuning)。
五、加速训练的意义
为什么加速训练如此重要?
- 更快的训练速度 → 更大规模模型可行
- 支持“迭代实验” → 快速调参、验证新想法
六、Transformer的发展轨迹
模型 | 年份 | 主要贡献 |
---|---|---|
Transformer(原始论文) | 2017 | 提出“Self-Attention” |
GPT-1 | 2018 | 首次使用Decoder-only结构进行语言建模 |
BERT | 2018 | Encoder-only + 双向掩码训练 |
GPT-2 | 2019 | 扩展模型规模(15亿参数) |
GPT-3 | 2020 | 1750亿参数,展示“大模型能力的涌现” |
七、Scaling Law:模型规模、数据和性能的关系
什么是 Scaling Laws(扩展定律)?
- 经验法则:在给定训练预算下,模型的最佳参数数量、数据量、训练步骤数之间存在关系。
- 使用这些法则可以估算最优模型大小。
公式表达如下:
若性能度量为损失 L,参数量为 N,数据量为 D,计算量为C,有如下规律:
L ( N , D ) ≈ L ∞ + A N α + B D β L(N, D) \approx L_\infty + \frac{A}{N^\alpha} + \frac{B}{D^\beta} L(N,D)≈L∞+NαA+DβB
其中 α,β>0,表示“规模扩展的收益递减”。
八、注意力的复杂度问题(Attention is Quadratic)
标准注意力机制的复杂度:
给定输入序列长度为 n,标准多头注意力机制的复杂度为:
O ( n 2 ⋅ d ) O(n^2 \cdot d) O(n2⋅d)
其中 d 为表示维度。这种 二次增长 导致长文本处理效率极低。
九、解决注意力复杂度问题的模型变种
为了解决效率问题,研究者提出了多种“稀疏/线性注意力”方法:
模型 | 技术 | 特点 |
---|---|---|
Performer | 近似核函数 | 将注意力简化为线性形式 |
Longformer | 局部+全局注意力 | 局部窗口提升效率 |
Linformer | 投影降维 | 减少注意力矩阵维度 |
BigBird | 稀疏注意力图 | 保留图的可达性结构 |
🔟 更大的瓶颈:内存带宽(Memory Bandwidth)
注意力不是最大瓶颈,真正的瓶颈是:内存带宽!
为什么内存带宽是瓶颈?
- 模型越大,每次训练所需数据吞吐越大。
- 内存访问比计算慢很多,导致等待内存成为主要时间消耗。
🔄 FlashAttention:显著提升训练速度的突破
- FlashAttention 是一种高效显存优化注意力计算方式。
- 通过将计算重写为CUDA核函数,利用寄存器和共享内存提升计算速度。
效果:
- 训练速度提升2-4倍
- 减少显存使用(支持更长序列)
🔁 Feedforward层主导计算(随着模型增大)
在大模型中,前馈网络(FFN)层的计算量远超注意力层,因为:
- 每层 FFN 通常为输入维度的 4 倍 → 计算密集
- 例如 GPT 模型中,前馈层占比超过 2/3。
📚 总结:Transformer大模型发展路径
- 初期用于生成上下文词向量或端到端训练(如翻译)
- BERT 等模型引入大规模预训练范式
- 模型尺寸、数据量不断扩展(GPT-3等)
- 提出 Scaling Law 进行建模
- 面临注意力复杂度挑战 → 各类变体出现
- 真正瓶颈为内存带宽 → FlashAttention 提升效率
- 模型中 FFN 成为主要计算耗点