3 most important points

  1. GPT 系列结构上的创新,包括 2 的 Pre-Norm,3 的 Sparse Attention(弃用)
  2. 主要创新是训练方法上的:微调零样本学习少样本学习;特殊标记PromptInstructionRLHF;数据处理
  3. 最最重要的是数据规模和模型规模超进化

5 thoughts

  1. 力大砖飞的代表作?印证了数据的重要性(多样性,清洗,对齐)

Notes

GPT-1

架构图

  • 规模:117M,12 层,隐藏层维度 768
  • 结构:
    • Transformer Decoder 去掉交叉注意力模块
  • 数据量:5GB
  • 训练:
    • 预训练:
      • 自监督学习
      • 自回归模式,给定前 N-1 个词预测第 N 个,串行循环输入 相应的,非自回归是平行运算,一次性生成所有输出
      • 目标函数:
        • :未标注的文本语料
        • :第 个词
        • :上下文窗口的大小(即当前词基于前 个词预测)
        • :模型参数
    • 微调:
      • 有监督学习
      • 新添加线性层从头训练,其它参数微调
      • 目标函数:预训练的目标函数与下游任务的目标函数加权求和
  • 创新点:
    • 系统性地验证了预训练-微调范式(基于 Transformer 解码器)在 NLP 领域的有效性
    • 引入统一的任务输入格式,通过在输入文本中添加特殊标记及拼接文本,将不同下游任务的输入统一转换为连续序列的形式,使预训练模型能够复用
      • 开始词元(Start Token): ,表示序列起始。
      • 结束词元(End Token): ,表示序列结束。
      • 分隔词元(Delimiter Token): $$$,用于分隔子序列,例如前提句和假设句,问题和答案。

GPT-2

  • 规模:1542M,48 层,隐藏层维度 1600
  • 结构:
    • Layer Norm 提前到每个自注意力和 FFN 前,利于稳定优化;同时在最后的自注意力模块后增加额外的 LN
    • 残差权重初始化,采用了 的权重缩放因子,其中 是残差层的深度 在 Pre-LN 架构中,LayerNorm 在前面,残差路径“裸露”,方差容易层层积累;缩放防止深层残差叠加导致参数激活或梯度过大,保持网络在层数增大时的稳定性

为什么 Pre-LN 有利于稳定优化?

在 Transformer 层数大于 12 层时,Post-LN 架构会出现训练不稳定:

  • 因为残差连接在 LayerNorm 之后,梯度要经过很多层的归一化操作,从而改变梯度的尺度,使得深层梯度信号衰减
  • 导致需要非常小的学习率或 warm-up,否则容易梯度爆炸或优化停滞

相对来说,Pre-LN 允许残差连接直接绕过 LayerNorm,梯度可以不被归一化操作干扰地回传,从而缓解梯度消失,使得训练更稳定。

  • 不需要很长的 warm-up
  • 可以使用更大的学习率
  • 模型可以更深(GPT-2 甚至上百层时仍然可训练)

在此之后有多篇论文系统或定量证明了 Pre-LN 的优势。

实践结论

模型LayerNorm 位置备注
Transformer (2017)Post-LN训练浅层模型可行
GPT-1Post-LN容易不稳定
GPT-2 / GPT-3 / GPT-4Pre-LN标准配置
T5 v1Post-LN后来改进为 v1.1 Pre-LN
LLaMA / Falcon / Mistral 等Pre-LN统一采用
  • 数据量:40GB
  • 创新点:
    • Zero-shot Learning 零样本学习,无需微调
    • 不再引入特殊符号,采用自然输入格式,也就是后来的 Prompt 这和 T5 一致

GPT-3

  • 规模:175B,96 层,隐藏层维度 12888
  • 结构:
    • 交替使用密集(Dense)和局部带状稀疏注意力(Locally Banded Sparse Attention)使用,减少计算量

稀疏注意力

  • 标准 attention 复杂度:
  • 稀疏 attention 复杂度: 或更低,如
  • 核心思想:不再让每个 token 注意所有前面的 token,而只注意“部分位置”(如局部块 + 周期性 stride 连接)
    • Local attention:只看最近 个 token;
    • Strided attention:每隔 个 token 看一次;
    • Fixed pattern / block-sparse attention:分块后块内 dense、块间稀疏。
  • 实测结果:
    • 小模型上稀疏注意力的节省明显(大约节省 30%~40% FLOPs)
    • 性能略有下降,损失了少量困惑度性能 PPL(1~3%)
    • 在大模型上,性能损失会放大,因此 GPT-3 最终选择全部使用 dense attention
模型规模注意力类型序列长度训练速度提升困惑度变化
125M / 350MSparse2048~1.5× 加速略劣(+1–2 困惑度点)
1.3B 以上Dense2048baseline最优
  • 后续研究:
    • 稀疏注意力虽然节省显存和计算,但在语言建模任务(尤其是 GPT 类型的自回归建模)上效果略差
    • 原因:语言模型对远程依赖敏感,而稀疏模式可能遗漏关键上下文
    • 后续模型(GPT-NeoX, PaLM, LLaMA)都回归了 dense attention

后来的解决方案

FlashAttention(2022),通过更高效的 CUDA kernel 实现 dense attention;既保留 dense 的信息完整性,又大幅降低显存与计算 overhead

  • 数据量:45TB
    • 自动过滤:自动打分,文档得分越高越容易保留,低分文档也有一定概率(维持多样性)
    • 模糊去重:检测文档间相似度,对相似度较高的文档进行删除;但仍然存在数据泄露(少量测试集内容被模型见过)
  • 创新点:
    • 引入实例样本,即少样本学习 Few-shot Learning,在 Prompt 中加入少量样本告诉模型需要完成的具体任务,无需微调;数量越多,效果越好 Zero-ShotOne-Shot 和 Few-Shot 本质上是 In-Context Learning 的三种不同设置(见上图左上角的叙述),其区别仅在于上下文提示中任务样本的数量。In-Context Learning 不更新参数。
    • 验证 Scaling-law:增加模型的规模和计算量会显著降低语言建模损失,甚至这个趋势在扩展了两个数量级后一样成立,只有轻微的偏离(也是 OpenAI 提出的)
    • Emergent ability 涌现能力:当模型规模大到一定程度(60B),模型能力出现飞跃
  • 局限性:
    • 逻辑:生成长文本出现语义重复、失去连贯性、前后自相矛盾
    • 物理:准确来说是“常识物理”容易出错,比如“如果把奶酪放进冰箱会不会融化?”
    • 理解
      • 因为采用的是解码器架构,所以在部分需要双向理解的任务上表现一般,比如说完形填空,又或者两句话之间互相比较,以及阅读理解的任务
      • 在训练时默认“平等地”对待所有词(token),缺乏对词的重要性的衡量
      • 缺乏多模态信息
    • 有效性:样本有效性低,预训练所需的数据量远超过人类一生中所能阅读的文本量
    • 成本:模型参数规模太大导致推理费用昂贵,可以蒸馏出更小规模子模型用于特定任务
    • 问题
      • 不清楚在少样本的设置下,模型是在“学新技能”还是在“检索已有知识”
      • 缺乏可解释性、预测校准(calibration)不佳,性能方差比人类高很多,并且带有训练数据的偏见

GPT-4

  • 规模 & 结构 & 数据量:(技术细节不开源)
  • 训练:
    • Reinforcement Learning With Human Feedback (RLHF):用于对齐人类偏好,即让基础模型知道用户实际上需要它来做什么;属于微调
  • 关注点:
    • 损失预测
      • 在小模型上可以用幂律关系(Power Law)来很好地拟合最终损失(Loss)与训练所需的计算量(Compute)之间的关系:,其中 为计算量,其余为需要拟合的参数
      • 能够在仅有 1/1000 到 1/10000 计算量的小模型上准确地预测 GPT-4 的某些性能表现,从而可以先在小模型上进行快速验证和调优,最后再应用到大模型上,减少时间和算力耗费
    • 能力预测
      • 用小模型的训练结果进行幂律外推,成功预测了 GPT-4 在 HumanEval 部分子集上的通过率
    • Inverse Scaling Prize
      • 模型规模越大,表现越差的任务;但是,GPT-4 达到了 100% 的准确率
    • 性能表现:
      • 在现实场景中还不如人类,但在各种专业和学术基准测试中有了显著提升,经常超越大多数人类考生
      • 在数学、编程和文学方面表现较差
      • 作者认为模型的考试能力似乎主要来自于预训练过程,与后期的人类反馈微调(RLHF)关系不大
    • 多模态能力:
      • 能够处理图像和文本输入,并生成文本输出

RHLF

  • RLHF(Reinforcement Learning from Human Feedback):用强化学习让模型“更符合人类偏好”
  • 效果:
    • 生成更有礼貌、简介、符合问答预期
  • 缺点:
    • 训练成本极高(人工标注 + PPO)
    • 奖励模型容易引入偏见
    • RL 阶段可能让模型“过于保守”
阶段名称作用
Step 1:监督微调(SFT)用人工编写的高质量问答数据,微调 GPT-3教模型生成“像人说的”回答
Step 2:奖励模型(RM)训练标注者对模型生成的多个回答进行排序训练一个奖励模型 预测人类偏好
Step 3:强化学习优化(PPO)用 PPO 或类似算法优化 GPT,使其输出最大化 RM 得分让模型学会偏好“高分回答”

Instruction Tuning 与 Prompt

  • Instruction Tuning(指令微调):用监督数据教模型“理解指令、遵循任务要求”
    • 做法:在大规模、多任务指令数据集上进行监督微调
特征GPT-2 的 PromptGPT-3.5/4 的 Instruction Tuning
训练目标语言建模(next token prediction)指令-响应监督微调
是否理解“指令”❌ 没有,靠上下文猜✅ 显式学习
是否需要任务模板✅ 需要手工设计 prompt❌ 模型能直接理解自然指令
泛化能力弱(模板变化会失效)强(zero-shot / few-shot)
代表模型GPT-2, GPT-3(基础模型)InstructGPT, ChatGPT, GPT-4
人类反馈可进一步结合 RLHF

Example

阶段核心机制关键词
GPT-2 (2019)Prompt Engineering“靠提示诱导”
GPT-3 (2020)Few-shot / Zero-shot prompting“用例子教模型”
InstructGPT (2022)Instruction Tuning + RLHF“模型学懂任务”
GPT-4 (2023)大规模多任务指令调优 + 多模态“模型理解人类意图”
  • 局限性:
    • 幻觉 Hallucination
    • 上下文窗口有限
    • 预训练数据阶段(训练数据大多截至 2021 年 9 月左右)
    • 低级推理错误,且容易轻信用户明显错误的说法
    • 存在偏见或歧视性内容
    • 在经历指令微调(Instructed Tuning)和 RLHF 等后训练之后,校准度明显下降,更容易出现“过度自信”

Reference