NLP高频面试题(六)——decoder-only、encoder-only和encoder-decoder的区别与联系
一、基本概念与代表模型
1. Encoder-only 架构
Encoder-only 架构最具代表性的模型是 BERT。BERT 使用 masked language modeling(MLM)进行预训练,即随机遮蔽部分输入词汇,让模型预测被遮蔽的词汇。由于这种架构能够同时看到输入序列的上下文信息,BERT 非常擅长文本理解)任务,如文本分类、命名实体识别等。
2. Decoder-only 架构
Decoder-only 架构的经典代表是 GPT 系列模型,如 GPT-3 和 GPT-4。GPT 模型使用 next token prediction 进行训练,在生成某个词的表征时,仅能看到该词及其之前的所有信息,而不能看到后续信息。这种单向注意力机制称为 causal mask。
3. Encoder-decoder 架构
Encoder-decoder 架构最早由 Transformer 提出,用于seq2seq任务,代表模型有 T5 和 BART。Encoder 部分处理输入序列并抽取特征,Decoder 部分根据 Encoder 提供的特征生成目标序列,典型应用是翻译和摘要生成。
二、架构对比与分析
1. 信息关注方向的不同
- Encoder-only 架构使用的是双向注意力,即在处理文本中任何一个词时,都能同时看到上下文信息,适合理解任务。
- Decoder-only 架构使用的是单向(causal)注意力,仅关注当前位置及其之前的词汇信息,因此天然适合文本生成任务。
- Encoder-decoder 架构则结合了二者的特点:Encoder 使用双向注意力进行充分的上下文理解,Decoder 则使用单向注意力机制进行序列生成。
2. 任务适应性与泛化性能
- Encoder-only 模型由于其双向注意力机制,更适合文本理解类任务,但生成能力有限。
- Decoder-only 模型,如 GPT,能够在仅使用无监督预训练(next token prediction)的情况下,实现出色的 zero-shot 和 few-shot 泛化能力,兼具理解和生成的特性,适合多种下游任务。
- Encoder-decoder 模型则擅长 seq2seq 任务,比如翻译、摘要生成等特定场景,但通常需要一定量的任务特定微调数据来达到最佳性能,zero-shot 泛化性能不如 Decoder-only 模型。
3. 效率与工程实现问题
在实际应用中,尤其是多轮对话场景,Decoder-only 架构由于其能复用 KV 缓存(每个 token 的表示与之前输入的信息有关),极大提高了推理效率。而 Encoder-decoder 和 PrefixLM 等变种架构则难以做到高效的 KV 缓存复用,因此效率较低。
此外,Decoder-only 架构在大规模自监督学习(如当前主流的百亿甚至千亿参数模型训练)中效率更高,工程实现更为简单。
4. 理论基础:低秩问题
有研究指出,Encoder 的双向注意力存在所谓的“低秩问题”,即由于双向注意力看到的信息过于丰富,可能导致模型的有效表达能力受到限制。而 Decoder-only 的单向注意力则天然避免了这个问题,使得其在文本生成任务中更具优势。
三、模型架构选择
- 如果你的任务以文本理解(NLU)为主,尤其是任务特定的微调数据丰富时,Encoder-only 架构(如 BERT)是优选。
- 如果你的任务强调文本生成,且你希望模型具备出色的泛化能力、无监督训练和 few-shot 学习的能力,那么 Decoder-only 架构(如 GPT 系列)无疑是最佳选择。
- 如果你面临典型的序列到序列任务,比如机器翻译、摘要生成等,且有一定量的任务特定数据进行微调,Encoder-decoder 架构(如 T5 或 BART)则更为合适。