45-GPT系列技术要点
GPT-1/2/3/4 演进
GPT-1 (2018)
- 参数量:117M
- 架构:12层Transformer Decoder,隐藏维768
- 预训练:无监督语言模型预训练 + 有监督微调
- 创新点:证明了大规模预训练 + 微调范式的有效性
GPT-2 (2019)
- 参数量:1.5B
- 架构:48层Transformer Decoder,隐藏维1600
- 改进:
- 移除了任务特定的输出层,所有任务都是文本到文本
- 使用更大规模训练数据(40GB)
- 证明了大模型可以涌现出zero-shot能力
- 结论:"Language Models are Unsupervised Multitask Learners"
GPT-3 (2020)
- 参数量:175B
- 架构:96层Transformer Decoder,隐藏维12288
- 创新点:
- 极大提升参数量,显著涌现复杂能力
- 系统验证了in-context learning(上下文学习)
- 支持zero-shot、one-shot、few-shot设置,不需要微调
GPT-4 (2023)
- 参数量:未公开,推测约1.8T稀疏MoE结构
- 创新点:
- 支持多模态输入(文本+图像)
- 推理能力大幅提升,尤其是数学和代码
- 对齐更好,安全性提升
- 支持更长上下文(8k/32k/128k)
GPT 架构特点
核心设计
- 纯Decoder架构:只使用Transformer Decoder,去掉Encoder部分
- 自回归语言模型:预测下一个token,适合生成任务
- 单向注意力掩码:每个位置只能关注之前的位置,不能看到未来
关键区别 vs BERT
| 特性 | GPT | BERT |
|---|
| 架构 | Decoder-only | Encoder-only |
| 注意力 | 因果掩码(单向) | 双向注意力 |
| 预训练目标 | 下一个token预测 | Masked Language Modeling |
| 擅长任务 | 文本生成、对话 | 分类、抽取、理解 |
past_key_value 的作用
在GPT推理中,past_key_value用于存储先前层计算好的注意力Key和Value。当生成下一个token时,可以重复使用这些已经计算好的值,避免重复计算,显著提高推理效率。
InstructGPT / ChatGPT 训练流程
三阶段训练
-
监督微调(SFT)
- 收集人类标注的指令-回答数据
- 在预训练GPT基础上进行监督微调
- 让模型学习遵循人类指令的格式和风格
-
训练奖励模型(RM)
- 让模型对同一个指令生成多个不同回答
- 让人类对这些回答进行排序
- 训练一个奖励模型,给不同回答打分
-
强化学习优化(RLHF)
- 使用PPO(Proximal Policy Optimization)算法
- 奖励模型给出的分数作为奖励信号
- 进一步优化策略,让模型生成更符合人类偏好的回答
为什么需要RLHF?
- SFT只能模仿人类回答,但无法处理多样化情况
- 通过人类偏好排序训练奖励模型,再用RL优化,可以更好对齐人类价值观
- 提升回答有用性、诚实性、无害性
GPT 系列关键技术
1. In-context Learning(上下文学习)
大模型可以通过在prompt中给出几个示例,就能够完成任务,不需要参数更新。这是大模型涌现出的神奇能力。
2. Scaling Law(缩放定律)
模型性能随参数量、训练数据量、计算量增加幂律增长。这一发现指导了后续大模型的发展方向。
3. CoT(思维链)
通过prompt引导模型一步步思考,显著提升复杂推理任务性能,尤其是数学问题。
4. RLHF(人类反馈强化学习)
让模型输出更好地对齐人类偏好,是ChatGPT成功的关键技术之一。
5. DPO(直接偏好优化)
近年来的新方法,直接用分类损失优化偏好,不需要单独训练奖励模型和PPO,简化了RLHF流程。
面试常见问题
Q: BERT和GPT有什么区别?
A:主要区别在于:
- 架构:BERT是Encoder-only,GPT是Decoder-only
- 注意力:BERT使用双向注意力,能看到整个上下文;GPT使用因果掩码,只能看到前文
- 预训练目标:BERT是MLM(掩码语言模型),预测被掩盖的token;GPT是自回归LM,预测下一个token
- 适用场景:BERT擅长理解任务(分类、抽取),GPT擅长生成任务(对话、创作)
Q: GPT-3和GPT-2主要区别是什么?
A:
- 参数规模:GPT-2是1.5B,GPT-3是175B,扩大了100倍+
- 能力涌现:GPT-3显著涌现出zero-shot/few-shot学习能力
- 不需要微调:GPT-3主要通过prompt完成任务,不需要针对每个任务微调
Q: past_key_value在GPT推理中起什么作用?
A:past_key_value存储了之前已经生成位置的Key和Value,在生成下一个token时可以直接复用,不需要重新计算所有历史token的K和V,大大减少了重复计算,提高推理速度,降低延迟。
Q: InstructGPT训练的三个阶段是什么?
A:
- SFT:使用人类标注的指令数据监督微调预训练模型
- RM:收集人类对模型多个输出的排序,训练奖励模型
- RLHF:使用PPO算法,以奖励模型打分作为奖励,进一步优化策略
Q: 文本生成领域有哪些主流预训练架构?
A:
- GPT系列:纯Decoder,自回归语言模型,OpenAI路线
- BART:Encoder-Decoder,使用DAE(去噪自编码器)预训练,适合生成任务
- T5:统一所有任务为文本到文本格式,Encoder-Decoder架构
- XLNet:结合自回归和AE,使用排列语言模型
- UniLM:统一建模,支持双向、单向、序列到序列
Q: BART的DAE预训练任务是什么?
A:DAE(Denoising AutoEncoder,去噪自编码器)要求模型从加噪的输入中恢复原始无噪文本。通过对原始文本进行各种破坏(随机屏蔽、删除、排序等),让模型学习重构,从而获得更好的文本表示能力,提升生成质量。