GPT 与 Claude 的纯解码器架构
核心认知
输入的提示词和输出的词,对解码器来说没有本质区别,都是"上下文"。
Encoder-Decoder vs 纯 Decoder
Encoder-Decoder(翻译模型):
输入 和 输出 是两件独立的事
[我爱吃饭] ──Encoder──▶ 语义向量 ──Decoder──▶ [I love eating]
双向注意力 单向注意力
纯 Decoder(GPT/Claude):
输入 和 输出 拼在一起,是一条连续的序列
[我爱吃饭 | I love eating]
──────────────────────────▶
全部用单向注意力处理具体怎么跑
你输入:"法国的首都是"
模型看到的序列:
法 国 的 首 都 是
t1 t2 t3 t4 t5 t6
单向注意力(只看左边):
"法" → 只看自己
"国" → 看 法、国
"是" → 看 法、国、的、首、都、是 ← 整合了完整上下文
│
▼
预测下一个词 ──▶ "巴"
然后把 "巴" 加入序列,继续:
法国的首都是巴 ──▶ "黎"
法国的首都是巴黎 ──▶ "<结束>"单向注意力为什么够用
看起来"我"看不到"饭"是个缺陷,但:
- 最后一个词能看到前面所有词,已经整合了完整上下文,用它预测下一个词足够了
- 模型足够大时,单向注意力也能学到很强的语言理解能力
- 真正需要双向理解的任务(完形填空)用 BERT(纯 Encoder)更合适,GPT/Claude 更擅长生成
一张图看清本质
BERT(纯 Encoder): GPT/Claude(纯 Decoder):
适合理解、分类 适合生成、对话
┌──────────┐ ┌──────────────────────┐
│ 法国首都是│ │ 法国首都是 │ 巴黎 │
│ │ │ │ │
│ 双向注意力│ │ 单向注意力 │ 单向注意力│
└──────────┘ └──────────────────────┘
│ │
▼ ▼
输出向量 下一个词的概率
(用于分类) (用于生成)总结
GPT/Claude 没有专门的编码器,而是把输入直接当成"已生成的历史",用同一套单向注意力机制既理解输入、又生成输出,两件事在同一条流水线里完成。