1、Transformer架构概览:从Seq2Seq到Transformer的演进,为什么需要MLP?
大家好,我是你们的老朋友。今天咱们聊聊Transformer架构的来龙去脉。
说实话,我刚接触深度学习那会儿,RNN还是绝对的主流。那时候做机器翻译,大家用的都是Seq2Seq模型。嗯,就是那个编码器-解码器结构。你想想看,输入一句话,编码器把它压成一个向量,解码器再把这个向量展开成目标语言。
听起来挺合理,对吧?但实际用起来,问题一大堆。
Seq2Seq的痛点:长距离依赖的噩梦
我印象特别深,2017年我在做一个中文到英文的翻译项目。句子短的时候,比如「今天天气不错」,效果还行。但一旦句子变长,比如一段产品说明书,翻译质量就直线下降。
为什么会这样?
说白了,RNN是串行处理的。每个时间步只能看到前一个状态的信息。句子越长,前面的信息就越容易被「稀释」掉。这就像传话游戏,第一个人说「苹果」,传到第十个人可能就变成「香蕉」了。
我遇到过最夸张的一次,一个30个词的句子,翻译结果跟原文完全对不上。后来一查,问题出在编码器最后的隐藏状态——它根本记不住句子开头的信息。
注意力机制的登场:让模型学会「看哪里」
2015年,Bahdanau等人提出了注意力机制。这个想法其实很朴素:解码的时候,别只看最后一个隐藏状态,而是回头看所有时间步的隐藏状态,然后挑重要的看。
我个人习惯把注意力机制理解成「加权求和」。每个输入位置都有一个权重,权重越大,说明这个位置对当前输出越重要。
举个例子,翻译「I love you」到中文时,生成「爱」这个字的时候,模型应该重点关注「love」这个词,而不是「I」或「you」。注意力机制就是干这个的。
但注意,这时的注意力还是和RNN绑定的。模型依然需要RNN来提取序列特征。说白了,注意力只是RNN的「辅助工具」,不是主角。
Transformer的诞生:扔掉RNN,全靠注意力
2017年,Google的Vaswani等人发表了那篇著名的论文《Attention Is All You Need》。
我第一次读到这篇论文时,第一反应是:这能行吗?把RNN全扔掉,只靠注意力机制?
事实证明,不仅行,而且效果炸裂。Transformer的核心思想就两个:
- 自注意力机制(Self-Attention):每个词都能直接看到所有其他词,没有距离限制。
- 位置编码(Positional Encoding):因为没有RNN的时序结构,需要手动告诉模型词的位置信息。
你想想看,自注意力让每个词都能「一眼看到」整个序列。这彻底解决了长距离依赖问题。30个词的句子?没问题。300个词?照样行。
为什么需要MLP?——Transformer中的「隐藏功臣」
好,现在问题来了。Transformer架构里,自注意力层之后,紧跟着的就是一个MLP(多层感知机)。很多人觉得MLP就是个「打酱油」的,注意力才是主角。
嗯,这里要注意。这种想法大错特错。
我刚开始研究Transformer时,也犯过这个错误。当时我尝试把MLP层去掉,或者换成更简单的线性变换。结果模型性能直接掉了10个点以上。
为什么MLP这么重要?
说白了,自注意力层做的是「信息混合」——它让不同位置的信息互相交流。但混合完之后,每个位置的信息还是停留在原来的特征空间里。MLP的作用就是做「特征变换」——把混合后的信息映射到更高维的空间,提取更丰富的特征。
你可以这样理解:
- 自注意力:相当于开一个圆桌会议,每个人都能听到别人的发言。
- MLP:相当于每个人听完发言后,回到自己的办公室,深入思考并做笔记。
两者缺一不可。
MLP在Transformer中的具体位置
咱们看看一个标准的Transformer编码器层:
输入 → 自注意力 → 残差连接 + 层归一化 → MLP → 残差连接 + 层归一化 → 输出
每个编码器层都包含一个自注意力子层和一个MLP子层。解码器层则多了一个交叉注意力子层。
我建议你记住这个结构:
| 组件 | 作用 | 输入/输出维度 |
|---|---|---|
| 自注意力 | 信息混合(位置间交互) | d_model → d_model |
| MLP | 特征变换(位置内处理) | d_model → d_ff → d_model |
| 残差连接 | 缓解梯度消失 | 不变 |
| 层归一化 | 稳定训练 | 不变 |
注意看,MLP的中间维度d_ff通常是d_model的4倍。比如BERT-base中,d_model=768,d_ff=3072。这个4倍的经验值,是经过大量实验验证的。
从Seq2Seq到Transformer:演进路线总结
咱们回顾一下这条演进路线:
- Seq2Seq + RNN:串行处理,长距离依赖困难,信息瓶颈严重。
- Seq2Seq + Attention:注意力辅助RNN,缓解了部分问题,但RNN依然是瓶颈。
- Transformer:完全抛弃RNN,自注意力负责信息混合,MLP负责特征变换。
我个人觉得,Transformer最伟大的地方,不是提出了注意力机制(这个之前就有),而是证明了「纯注意力+MLP」的结构可以完全替代RNN。这个发现改变了整个NLP领域,甚至影响了计算机视觉、语音等领域。
好了,这一章咱们先聊到这儿。下一章我会深入剖析MLP的内部结构,看看那个「先升维再降维」的设计到底藏着什么玄机。
记住,MLP不是Transformer里的配角。它是和自注意力平起平坐的核心组件。没有MLP,Transformer就是个「信息混合器」,做不了真正的特征提取。