大模型三种主流架构对比:Causal LM(因果解码器架构)、Prefix LM(前缀解码器架构) 和 Encoder-Decoder(编码器-解码器架构)
特性Causal LMPrefix LM代表模型GPT, LLaMAGLM, UniLMT5, BART输入侧注意力单向双向(前缀部分)双向(编码器)输出侧注意力单向单向(生成部分)单向(解码器)计算效率高(生成快)中低(生成慢)理解能力较弱(只看左边)中(看前缀两边)强(看输入两边)生成能力强强强最佳适用场景自由续写, Chat, 代码生成文本填空, 混合任务翻译, 摘要, 严格的数据转换如果你
目录
本文详细介绍一下大语言模型中三种主流的架构:Causal LM(因果解码器架构)、Prefix LM(前缀解码器架构) 和 Encoder-Decoder(编码器-解码器架构)。
这三种架构的核心区别在于 注意力掩码机制 的不同,这直接决定了模型如何处理输入序列以及适合解决什么样的任务。
1. Causal LM
代表模型: GPT系列(GPT-1, GPT-2, GPT-3), LLaMA系列
核心思想
自回归语言模型。它的核心思想是:在预测下一个词时,只能看到当前词之前的内容,不能看到之后的内容。 这种机制也称为 单向注意力 或 左向右注意力。
注意力机制
-
掩码类型: 下三角矩阵掩码。
-
细节: 对于序列中的第 i 个 token,它只能关注从 1 到 i 的 tokens。所有未来位置的权重都被设置为负无穷(Softmax后为0)。
训练方式
它的训练目标通常是标准的语言建模任务(Next Token Prediction)。给定一个文本序列,模型被要求基于前面的文本预测下一个词。
-
例子: 输入“我喜欢吃”,模型需要预测下一个词大概率是“苹果”或“米饭”。
优点
-
生成能力强: 天然适合文本生成任务(如故事续写、代码生成),因为人类的说话和写作过程也是从左到右依次进行的。
-
零样本/少样本学习能力: GPT系列证明了这种架构在上下文学习(In-Context Learning)方面表现出色。
-
推理效率高: 在生成时,可以利用键值缓存(KV Cache)技术,避免重复计算,速度较快。
缺点
-
无法利用双向上下文: 在做自然语言理解任务(如情感分类、抽取式问答)时,它无法像人类一样看完整个句子再判断,导致信息利用不充分。
2. Prefix LM
代表模型: 清华GLM系列,早期的 UniLM,以及某些变体如XLNet(虽然XLNet用的是排列语言模型,但思想上试图融合双向信息)
核心思想
这是一种介于因果和编码器之间的混合体。它将输入序列分为两部分:前缀部分 和 生成的Token部分。
-
前缀部分(Prefix): 可以看见所有的前缀内容(双向注意力)。
-
生成的Token部分: 只能看见前缀和已经生成的Token(单向注意力)。
注意力机制
-
掩码类型: 分块掩码(Block Mask)。
-
细节:
-
假设序列由 [Prefix,Generated] 组成。
-
对于 Prefix 内部的 tokens,它们互相可见(全注意力)。
-
对于 Generated 部分的 tokens,它们只能看到 Prefix 的所有 tokens 以及自己位置左侧的 Generated tokens,看不到右侧未来的 Generated tokens。
-
训练方式
通常采用自编码和自回归结合的混合目标。例如GLM(General Language Model)模型,它会随机MASK掉输入中的一些连续片段,然后让模型自回归地恢复这些片段。前缀部分是上下文,生成部分是MASK掉的内容。
优点
-
双向信息利用: 在处理输入提示(前缀)时,能更好地理解语义(例如在做文本填空时,能利用空格前后的信息)。
-
灵活性: 既能做理解任务(利用前缀的双向性),又能做生成任务(利用生成部分的单向性)。
缺点
-
实现复杂度高: 注意力掩码的设计比单纯的因果模型复杂。
-
推理开销: 虽然比Encoder-Decoder简单,但Prefix部分通常需要计算量较大的双向注意力。
3. Encoder-Decoder
代表模型: T5, BART, 早期的Transformer原论文
核心思想
包含两个独立的网络栈:
-
编码器(Encoder): 负责读取输入序列,并通过 双向注意力 彻底理解输入。它输出的是输入序列的语义表示(隐藏状态)。
-
解码器(Decoder): 负责接收编码器的输出,并 自回归 地生成目标序列。解码器使用的是 单向注意力(因果掩码),同时通过交叉注意力机制关注编码器的输出。
注意力机制
-
编码器: 全双向注意力。输入序列内部每个词都能看到所有词。
-
解码器: 单向注意力(因果掩码) + 交叉注意力(看向编码器的输出)。
训练方式
通常用于序列到序列的任务(Sequence-to-Sequence)。例如,在T5中,模型将任何任务都统一转化为“输入文本到输出文本”的格式。比如翻译:“苹果用英语怎么说” -> “apple”。
优点
-
深度语义理解: 编码器由于能看见完整的输入,对输入文本的理解是最透彻的,非常适合需要全文理解的复杂任务。
-
灵活的任务映射: 非常适合输入和输出是不同模态或者长度差异很大的任务(如翻译、摘要、多模态任务)。
缺点
-
参数多,体积大: 有两套完整的参数(虽然现在很多模型共享部分参数),导致模型规模较大。
-
推理速度慢: 生成时需要先跑完整个编码器,再跑解码器,且解码器每一步都要重新计算交叉注意力,速度通常是三者中最慢的。
-
In-Context Learning较弱: 在GPT引领的“给几个例子然后继续”的模式上,纯Encoder-Decoder架构(如原始的T5)表现不如Causal LM那样自然。
总结与对比
| 特性 | Causal LM | Prefix LM | Encoder-Decoder |
|---|---|---|---|
| 代表模型 | GPT, LLaMA | GLM, UniLM | T5, BART |
| 输入侧注意力 | 单向 | 双向(前缀部分) | 双向(编码器) |
| 输出侧注意力 | 单向 | 单向(生成部分) | 单向(解码器) |
| 计算效率 | 高(生成快) | 中 | 低(生成慢) |
| 理解能力 | 较弱(只看左边) | 中(看前缀两边) | 强(看输入两边) |
| 生成能力 | 强 | 强 | 强 |
| 最佳适用场景 | 自由续写, Chat, 代码生成 | 文本填空, 混合任务 | 翻译, 摘要, 严格的数据转换 |
简单来说:
-
如果你想让模型像人一样开口说话、写文章,Causal LM 是首选。
-
如果你想让模型先好好读完一段话(双向理解),然后再写点东西,Encoder-Decoder 是最稳妥的方案。
-
如果你想在两者之间找一个平衡,兼顾理解上下文和流畅生成,Prefix LM 提供了一种巧妙的折中方案。
更多推荐


所有评论(0)