Reading Notes: GPT Series

date
Feb 28, 2025
slug
gpt-series
status
Published
tags
NLP
summary
type
Post
本文是对 GPT1 - GPT3 论文的简要总结 GPT1: Improving Language Understanding by Generative Pre-Training GPT2: Language Models are Unsupervised Multitask Learners GPT3: Language Models are Few-Shot Learners

GPT1

Motivation: 旨在通过无监督学习方法获取通用文本表示(universal text representation),使模型能以最小化调整迁移到广泛的下游任务中。

Approach

notion image
两阶段训练:
采用两阶段训练策略:
  • 预训练阶段:在无标签大规模文本语料库上进行language modeling训练
  • 监督微调阶段:在有标签数据集上进行针对性调整
    • 任务无关的架构调整:在输出层添加线性层以适应特定输出域
    • 任务相关的输入转换:将结构化输入根据特定任务转换为文本序列(类似现代prompt设计)
    • 微调过程中同时使用输入序列上的language modeling loss作为auxiliary objective

Results

在12个自然语言理解benchmark中,GPT1超越了专门为这些任务设计的 SOTA 的模型,证明了其预训练方法的有效性。

GPT2

Motivation: 尽管预训练 + 微调的范式在自然语言处理领域取得了较大的进展,微调仍然需要一个(仍然数量不可忽视的)带标签的数据集。为了解决这个局限性,本文希望探索并验证如下的假设:有足够容量的语言模型能够学习和解决用自然语言文本序列表示的任务。
如果以上假设成立,那么语言模型实际上可以认为在进行无监督的多任务学习。本文通过评估语言模型在多个自然语言处理任务上的 zero-shot 表现来验证这一假设。
尽管"预训练+微调"范式在NLP领域取得显著进展,微调仍需相当数量的标注数据。为解决这一限制,本文提出假设:具备足够容量的语言模型能够学习并解决用自然语言序列表述的任务。 若此假设成立,则语言模型实际上在进行 unsupervised multitask learning。论文通过评估语言模型在多个NLP任务上的 zero-shot 表现验证了这一假设。

Approach

  • 预训练:沿用 GPT1 的预训练方法,采用 language modeling objective
  • 无微调步骤:直接通过 language modeling 方式生成下游任务输出
  • 训练数据
    • 原始来源:Common Crawl 网页数据,但存在质量问题
    • 数据筛选:只保留从 Reddit 上获得至少 3 个 karma 的链接指向的网页内容可达的闭包网页集合。
  • 模型改进:将 layer normalization 移至每个 sub-block(attention/MLP)前端

Results

notion image
 
  • 在 zero-shot 设置下,GPT2 在某些任务(QA、language modeling 等)上达到或超越了传统baseline 的效果
  • 随着模型参数规模增加,在 WebText 语料上的 perplexity 持续下降,且模型仍处于 underfit 状态,表明进一步扩展模型规模可能带来更好性能

GPT3

Motivation:
  • 和 GPT2 类似,由于预训练 + 微调范式的局限性(仍然需要可观数量的微调数据 & 使模型泰国 focus 到微调数据集上不利于泛化 etc)
  • GPT2 取得的 promising 的初步结果
  • 近期研究中通过 scaling model size 来得到效果提升的 trend
由上,和 GPT2 类似,GPT3 想要在 language modeling 上验证这一 scaling law,测试大语言模型的 in-context learning 能力(GPT2 做 zero-shot,这里是 few-shot)。

Approach

  • 预训练:延续先前的language modeling objective
  • 模型架构:基本沿用GPT2架构
  • 训练数据
    • 从 Common Crawl 数据的 lightly filtered 版本开始,通过与高质量 reference corpora(WebText、Book1、Book2、英文 Wikipedia)的相似度进行过滤
    • 在document level进行去重,减少冗余并防止数据泄露
    • 将高质量 reference corpora 也纳入training mix
    • 训练时的数据采样基于数据集质量而非大小,高质量数据集获得更高的采样频率

Filtering

  • 训练文本分类器从 raw Common Crawl 中识别高质量文本
    • 使用参考语料库(WebText、Books1/2、Wikipedia)中的文本作为正样本
    • 使用未过滤的 Common Crawl 文本作为负样本
  • 利用该分类器为 Common Crawl 文本评分,保留高分内容

Deduplication

  • 做 document level 的去重

Results

notion image
  • 随着模型参数量增加,总体性能持续提升
  • zero-shot 与 few-shot 学习之间的性能差距也随参数规模扩大而增加,展示了大模型在 few-shot 学习方面的优势

Key Takeaway from GPT1 to GPT3

  • decoder- only model 做 language modeling 预训练 + 提示工程的范式
  • 通过 scaling model size 来提升效果
  • 预训练数据处理的方法

© Lifan Sun 2023 - 2025