
目录
[01 整体架构:一条流水线](#01 整体架构:一条流水线)
[02 Encoder 详解:理解的深度](#02 Encoder 详解:理解的深度)
[03 Decoder 详解:生成的艺术](#03 Decoder 详解:生成的艺术)
[代表模型:GPT 系列](#代表模型:GPT 系列)
[04 核心对比:Encoder vs Decoder](#04 核心对比:Encoder vs Decoder)
[05 黒漂实操建议:架构选型指南](#05 黒漂实操建议:架构选型指南)
[场景 1:文本分类/情感分析](#场景 1:文本分类/情感分析)
[场景 2:对话机器人/内容创作](#场景 2:对话机器人/内容创作)
[场景 3:机器翻译](#场景 3:机器翻译)
[场景 4:资源受限环境](#场景 4:资源受限环境)
[06 结语:架构服务于任务](#06 结语:架构服务于任务)
[07 下期预告](#07 下期预告)
前言
大家好,我是黒漂技术佬。
系列文章更到第四篇,咱们已经搞懂了注意力机制这个核心引擎。但光有引擎还不够,你得知道车身是怎么搭建的。
很多初学者看完 Attention 公式,再去读 Transformer 原论文,会被那张复杂的架构图劝退。左边一堆 Encoder,右边一堆 Decoder,中间还有交叉注意力,容易看晕。
其实,这张图背后藏着一个核心逻辑:理解与生成的分工。
今天,咱们继续【大模型底层逻辑】系列的第四讲,彻底拆解 Transformer 架构,把 Encoder 和 Decoder 的秘密一次性讲清楚。
01 整体架构:一条流水线
回到 2017 年的原论文,Transformer 最初是为机器翻译设计的。
翻译任务有两个阶段:
- 理解源语言:读懂输入的句子(比如中文)。
- 生成目标语言:写出翻译后的句子(比如英文)。
对应到架构上,就是:
- Encoder(编码器):负责理解,把输入句子变成计算机能懂的向量表示。
- Decoder(解码器):负责生成,根据向量表示,一个字一个字地吐出翻译结果。
输入句子 → [Encoder 堆叠] → 语义向量 → [Decoder 堆叠] → 输出句子
这是一个典型的 Seq2Seq(序列到序列)结构。但在后来的演进中,这两个部分经常分开单独使用。
黒漂点评:
你可以把 Encoder 想象成"阅读理解专家",把 Decoder 想象成"写作专家"。 完整的 Transformer 是两者合作。 但后来的模型发现,有时候只需要阅读理解(比如分类任务),有时候只需要写作(比如聊天机器人)。 于是它们开始"分家"了。
02 Encoder 详解:理解的深度
Encoder 的核心任务,是提取输入序列的特征表示。
结构特点
Encoder 由 N 个完全相同的层堆叠而成(原论文是 6 层)。每一层主要包含两个子层:
- 多头自注意力机制(Multi-Head Self-Attention):让每个词都能看到句子里的其他词,建立上下文联系。
- 前馈神经网络(Feed Forward Network):对注意力层的输出进行非线性变换,增加模型的表达能力。
关键特性:双向可见
在 Encoder 里,任何一个词都可以"看到"句子里的所有词(包括它后面的词)。
比如句子"我喜欢吃苹果",当处理"喜欢"这个词时,它可以同时关注到"我"、"吃"、"苹果"。这种双向上下文能力,让它非常适合理解任务。
代表模型:BERT
BERT 就是典型的 Encoder-only 架构。
它在预训练时,使用了 Masked LM 任务(完形填空),这需要看到完整的上下文才能猜出被遮住的词。所以 BERT 必须用 Encoder,不能用 Decoder。
黒漂点评:
为什么分类任务多用 BERT 类模型? 因为分类需要理解整句话的含义。 Encoder 的双向视野,能让模型综合全局信息做判断,比单向看更全面。
03 Decoder 详解:生成的艺术
Decoder 的核心任务,是根据已生成的内容,预测下一个 token。
结构特点
Decoder 也由 N 个相同层堆叠而成。但它的结构比 Encoder 复杂,包含三个子层:
- 掩码多头自注意力(Masked Multi-Head Self-Attention):关键在这里!它只能看到当前词之前的词,不能偷看未来的词。
- 交叉注意力(Cross-Attention):让 Decoder 能够关注到 Encoder 的输出(在原始翻译任务中)。
- 前馈神经网络(Feed Forward Network):同上。
关键特性:单向掩码
Decoder 在训练时,必须防止"作弊"。
比如预测"今天天气真__",模型不能提前看到"好"字。所以 Decoder 引入了Mask 机制,把未来的位置屏蔽掉,强制模型只能依赖历史信息进行预测。
代表模型:GPT 系列
GPT 就是典型的 Decoder-only 架构。
它去掉了 Encoder 和交叉注意力层,只保留了 Masked Self-Attention。因为它不需要理解外部输入的特征向量,它的任务就是纯粹的"接龙生成"。
黒漂点评:
为什么大模型聊天多用 GPT 类架构? 因为对话是流式生成的,你说一句,我回一句。 Decoder 的自回归特性(Autoregressive),天然适合这种逐个 token 生成的场景。 而且 Decoder 结构更简单,推理效率更高。
04 核心对比:Encoder vs Decoder
为了让大家看得更清楚,我整理了一个深度对比表,建议收藏:
视野范围: Encoder 是双向可见,能看到过去和未来。 Decoder 是单向可见,只能看到过去(Masked)。
主要任务: Encoder 擅长理解、分类、填充、提取。 Decoder 擅长生成、翻译、创作、对话。
代表模型: Encoder 代表:BERT、RoBERTa、Albert。 Decoder 代表:GPT-3、GPT-4、LLaMA、ChatGLM。
训练方式: Encoder 常用 Masked LM(完形填空)。 Decoder 常用 Next Token Prediction(预测下一个词)。
推理模式: Encoder 通常一次性输出所有表示。 Decoder 必须逐个 token 串行生成。
黒漂点评:
现在业界趋势是 Decoder-only 一统江湖。 为什么?因为生成能力太强了,而且通用性好。 即使是理解任务,也可以通过 Prompt 让生成式模型来做(比如让 GPT 做分类)。 虽然效率可能不如 BERT,但胜在一个模型走天下。
05 黒漂实操建议:架构选型指南
理解了架构区别,在实际项目中该怎么选?
场景 1:文本分类/情感分析
如果你只需要判断一句话是正面还是负面,不需要生成内容。
建议: 选用 BERT 类 Encoder 模型。 理由: 双向理解能力强,微调成本低,推理速度快,显存占用小。别杀鸡用牛刀。
场景 2:对话机器人/内容创作
如果你需要模型写诗、写代码、聊天。
建议: 选用 LLaMA、Qwen 等 Decoder 模型。 理由: 生成能力强,支持多轮对话,泛化性好。
场景 3:机器翻译
传统任务,源语言到目标语言。
建议: 早期用 Encoder-Decoder 架构(如 T5、原始 Transformer)。现在也趋向于直接用大模型 Decoder 做翻译。 理由: 大模型的多语言能力已经足够强,无需专门训练翻译架构。
场景 4:资源受限环境
如果你在手机端或边缘设备部署。
建议: 考虑蒸馏后的小模型,或者 Encoder 类小模型。 理由: Decoder 生成时需要缓存 KV Cache,显存占用随序列长度增长。Encoder 一次性计算完,内存更可控。
06 结语:架构服务于任务
从 Encoder-Decoder 合体,到 BERT 和 GPT 的分道扬镳,再到如今大模型一统天下。
架构的演变,本质上是任务需求与计算成本的平衡。
没有最好的架构,只有最适合业务的架构。理解它们的区别,能让你在技术选型时少走弯路。
知其然,更要知其所以然。
07 下期预告
架构搞懂了,但 Transformer 还有一个看似不起眼却至关重要的细节:位置编码。
为什么 Transformer 需要位置编码?Layer Norm 为什么有时候放在前面,有时候放在后面?
下一篇,咱们深挖《位置与规范:Positional Encoding 与 Layer Norm》,补齐大模型拼图的最后一块。
系列导航
- 01/05 大模型进化史:为什么 RNN 输给了 Transformer?
- 02/05 记忆的困境:RNN 与 LSTM 的底层逻辑
- 03/05 注意力机制:让模型学会"看重点"
- 04/05 Transformer 架构拆解:Encoder 与 Decoder 的秘密(当前)
- 05/05 位置与规范:Positional Encoding 与 Layer Norm(预告)
关于作者
黒漂技术佬 技术游牧者|专注 AI/视觉/微服务/物联网 不造火箭,只拧螺丝
欢迎交流:评论区留言 / 私信 同步更新:CSDN 主页
互动话题
你更倾向于哪种架构的模型?
- A. BERT 类(Encoder),小而美,适合特定任务
- B. GPT 类(Decoder),大而全,通用性强
- C. 混合架构,取长补短
- D. 不管架构,好用就行
欢迎评论区聊聊你的选型经验。