总图
- Encoder-only (BERT 类)
输入 tokens
|
Encoder
|
Encoder
|
Encoder
|
输出表示 vectors
- Decoder-only (GPT / LLaMA 类)
输入 tokens
|
Decoder
|
Decoder
|
Decoder
|
逐个预测下一个 token
- Encoder-Decoder (T5 类)
输入 tokens 已生成 tokens
| |
Encoder\] \[Decoder
| |
Encoder\] \<---- cross-attn ---- \[Decoder
| |
编码结果 逐个生成输出
它们真正的区别
Encoder-only
-
只负责"把输入读懂"。
-
每个词都能同时看到左边和右边。
-
输出通常是整句或每个 token 的表示,不是天然拿来一直往下写。
-
典型:BERT
我 爱 北 京 天 安 门
^ 每个词都能看见整句其他词
适合:
-
分类
-
匹配
-
实体识别
-
检索/排序
Decoder-only
-
负责"按顺序往下写"。
-
当前 token 只能看左边,不能看右边,这叫 causal mask。
-
所以它天然适合生成。
我 爱 北 京
^
只能看左边,预测下一个词
适合:
-
对话
-
写作
-
代码生成
-
通用生成式任务
典型:
-
GPT
-
LLaMA
Encoder-Decoder
-
左边先把输入读懂,右边再根据读懂的结果生成输出。
-
Decoder 一边看自己已经生成的内容,一边看 Encoder 给的编码结果。
-
这里比前两种多了一个关键部件:cross-attention。
输入: "Translate: I love Beijing"
Encoder 先编码整句
Decoder 再一步步生成: "我 爱 北京"
适合:
-
翻译
-
摘要
-
改写
-
明确的"输入文本 -> 输出文本"任务
典型:
- T5
再看一张对比表
| 结构 | 看输入方式 | 会不会自然生成 | 代表模型 |
|---|---|---|---|
| Encoder-only | 左右都看 | 不擅长长生成 | BERT |
| Decoder-only | 只看左边 | 最擅长 | GPT、LLaMA |
| Encoder-Decoder | Encoder 全看,Decoder 生成 | 很适合 | T5 |
一句最容易记住的话
-
Encoder-only:先理解
-
Decoder-only:边看边写
-
Encoder-Decoder:先读懂,再翻译/改写/生成