1. Transformer简介:背景、优势、应用领域与经典论文回顾
为什么我们需要Transformer?
2017年之前,NLP领域的扛把子是RNN和LSTM。我刚开始做NLP时,用的就是LSTM做文本分类,效果还行,但训练起来那叫一个慢。你想想看,RNN天生是串行的——当前时刻的隐藏状态依赖于上一时刻,GPU再强也没法并行。这就好比一条流水线上只有一个工人,活再多也得一个一个干。
更麻烦的是长距离依赖问题。句子一长,前面单词的信息传到后面就衰减得差不多了。我记得当时做机器翻译,一个20个词的句子,前5个词的信息经常被“忘掉”。搞出Attention机制来补救,也只是治标不治本。
直到2017年,Google那篇“Attention Is All You Need”横空出世。它告诉行业:我们不需要RNN那套循环结构了,全靠Attention就能把序列建模做到极致。说白了,Transformer就是一种“注意力全开”的架构。
Transformer的核心优势
我习惯从三个维度来理解Transformer的优势:计算效率、建模能力、可扩展性。
| 维度 | RNN/LSTM | Transformer |
|---|---|---|
| 并行计算 | 无法并行,串行计算 | 可并行,训练速度提升几十倍 |
| 长距离依赖 | 信息衰减,理论上限有限 | 全连接注意力,任意位置直接通信 |
| 全局上下文 | 通过隐状态传递,间接获取 | 直接计算所有位置的依赖关系 |
| 可扩展性 | 增加层数效果递减明显 | 深层效果好,可堆叠至上百层 |
一个关键洞察:Transformer把序列建模问题从“时序递推”转变为“全连接关系建模”,这个思路的转变直接催生了后来的GPT系列和BERT。
应用领域:远不止NLP
Transformer最初是为机器翻译设计的,但后来证明它是一种极其通用的架构。我在项目中用它做过的东西包括但不限于:
- 自然语言处理:文本分类、命名实体识别、机器翻译、摘要生成、问答系统。BERT和GPT系列几乎统治了所有NLP榜单。
- 计算机视觉:ViT(Vision Transformer)用纯Transformer结构做图像分类,效果超过了许多CNN模型。我印象很深的一个项目是把ViT用在医学影像上,训练效率比ResNet高了不少。
- 多模态学习:CLIP把文本和图像映射到同一个向量空间,ViT-GPT系列把语言模型和图像理解结合。Transformer的注意力机制天然适合处理不同类型的数据。
- 科学计算:蛋白质结构预测(AlphaFold2)、分子性质预测、时间序列预测。Transformer对序列数据的建模能力在科学领域同样适用。
经典论文回顾
要理解Transformer,这几篇论文是绕不过去的。我按时间线和影响力列一下。
-
Attention Is All You Need (2017)——开山之作。首次提出纯注意力机制的序列到序列模型,架构包含编码器-解码器、多头自注意力、位置编码。这篇论文我反复读了五遍才完全吃透。
-
BERT: Pre-training of Deep Bidirectional Transformers (2018)——把Transformer的编码器部分做到极致,用Masked Language Model预训练,然后在下游任务微调。我曾经用BERT做中文文本分类,只训练了100条标注数据就达到了传统方法需要1000条的效果。
-
GPT-2 / GPT-3 (2019-2020)——Transformer解码器的王者。GPT系列证明了“大力出奇迹”的可行性:模型规模越大,涌现的能力越强。GPT-3在零样本和小样本任务上的表现令人震惊。
-
ViT: An Image is Worth 16x16 Words (2020)——把Transformer用在视觉领域的里程碑。把图像切成固定大小的patch,当作词序列输入Transformer,效果超越了当时最先进的CNN。
个人阅读建议:先精读第一篇《Attention Is All You Need》。把里面的公式推导、注意力机制、位置编码彻底搞懂。后面BERT和GPT的论文你看起来就会轻松很多。我当初就是这么啃下来的,虽然痛苦但很值。
Transformer架构总览
下面的SVG图展示了Transformer的整体结构。我建议你把这个图保存下来,后续章节我们会反复用到这些概念。
业内常用配置
不同的Transformer变体在参数配置上有显著差异。我整理了一个常用的表格,方便你做实验时参考。
| 模型 | 层数 | 隐藏维度 | 注意力头数 | 参数量 |
|---|---|---|---|---|
| Transformer-Base | 6 | 512 | 8 | 65M |
| Transformer-Big | 6 | 1024 | 16 | 213M |
| BERT-Base | 12 | 768 | 12 | 110M |
| GPT-2 (Medium) | 24 | 1024 | 16 | 345M |
| ViT-Base | 12 | 768 | 12 | 86M |
我曾经踩过的坑:刚开始用Transformer时,我直接拿论文里的默认配置去训练自己的小数据集,结果过拟合得一塌糊涂。后来我学会了先调小隐藏维度和层数,再逐步增加。记住:不要盲目照搬大模型的配置,要根据你的数据规模和计算资源来调整。
小结
Transformer解决了RNN的两个核心痛点:并行计算和长距离依赖。它的核心思想是“注意力机制替代循环结构”,这个思路被证明在NLP、CV、多模态甚至科学计算领域都具有普适性。
后面的章节,我会带你把每个组件拆开来看。从多头注意力的数学原理,到位置编码的具体实现,再到如何用PyTorch把Transformer从零搭起来。跟着节奏走,一步步吃透它。