侧边栏壁纸
  • 累计撰写 60 篇文章
  • 累计创建 68 个标签
  • 累计收到 1 条评论

每周阅读集锦——20251019

lihaocheng
2025-10-18 / 0 评论 / 0 点赞 / 23 阅读 / 4,015 字
温馨提示:
晚上记得开启夜间模式哦

很久没有更新博客了,从今天重新开始吧。本周主要阅读了两篇 GPT 的原始论文。

一、Language Models are Unsupervised Multitask Learners

GPT-2的原始论文

文章观点归纳:

1. 语言模型本身就是多任务学习器

  • 传统观点:每个 NLP 任务(如问答、翻译、摘要)需要专门的监督训练。
  • 本文主张:一个在大规模无标签文本上训练的纯语言模型(LM),在没有任务特定微调的情况下,就能在多种下游任务上表现出色。
  • 原因:训练数据中天然包含各种任务形式(如问答对、新闻、维基百科条目),模型通过预测下一个词,隐式学习了任务结构

✅ 关键洞见:“Zero-shot” 能力——无需微调、无需任务标签,仅靠语言建模目标即可泛化到多种任务。


2. 模型规模与数据规模至关重要

  • GPT-2 拥有 1.5B 参数(当时最大之一),训练数据为 WebText(40GB 清洗后的网页文本,约 800 万网页)。
  • 实验表明:更大的模型 + 更多的数据 → 更强的 zero-shot 性能
  • 图 4(你提供的内容中提到)展示了模型大小与 WebText 测试集困惑度(perplexity)的关系:模型越大,性能越好,且未饱和(仍在欠拟合)。

3. Zero-shot 性能令人惊讶

  • GPT-2 在未见过任务标签的情况下,在多个标准数据集上取得当时最强或接近最强的 zero-shot 结果,例如:
    • LAMBADA(语言建模长距离依赖):63.2% 准确率(SOTA)
    • CoQA(对话式问答):接近有监督模型的表现
    • Winograd Schema(常识推理):显著优于基线
  • 这证明了通用语言模型具备跨任务迁移能力

4. 数据污染(Data Contamination)分析

  • 你提供的文本详细讨论了 WebText 与测试集(如 CoQA、LAMBADA)的n-gram 重叠问题
  • 发现:少量测试样本确实出现在训练数据中(如新闻文章重复),带来 0.5–3 F1 的性能提升
  • 但作者强调:整体影响很小(如 LAMBADA 仅下降 0.3% 准确率),说明性能主要来自泛化,而非记忆。

🛡️ 建议:未来数据集构建应使用 n-gram 去重作为标准流程。


5. 模型仍处于欠拟合状态

  • 尽管 GPT-2 很大,但在 WebText 上训练损失和测试损失同步下降,说明模型容量仍未被充分利用
  • 暗示:继续扩大模型和数据仍有收益(为 GPT-3 埋下伏笔)。

6. 生成能力强大但存在风险

  • GPT-2 能生成连贯、逼真的新闻文章(如“会说话的独角兽”示例)。
  • 正因如此,OpenAI 最初拒绝发布完整模型,担心被滥用(如生成假新闻)。
  • 这引发了关于大模型开源与安全的广泛讨论。

❓问题

1.什么是 zero-shot?

零样本学习,相比之前的需要给AI示例,也无需标注,zero-shot无需给实际的示例。

2.还有其他什么方式?

类型 是否需要任务数据 是否微调 是否给示例 举例
Zero-shot 直接问“翻译:Hello → ?”
Few-shot ✅(给几个例子) 先给 2 个翻译例子,再问新句子
Fine-tuning ✅(大量标注数据) 用 10 万句英中句子微调模型

3.zero-shot又哪些优势?

  1. 降低使用门槛:无需收集标注数据或训练模型。
  2. 体现模型泛化能力:真正“理解”而非记忆。
  3. 支持长尾任务:对罕见任务(如小语种翻译)也能尝试。
  4. 推动通用人工智能(AGI):一个模型解决无限任务。

4.zero-shot 如何提升性能?

根据文章中的实验结果

  • 实验表明:更大的模型 + 更多的数据 → 更强的 zero-shot 性能

    截屏2025-10-18 15.00.00.png

从这个图表可以看出,在ROUGE 指标上虽然不如 SOTA,但胜于Random-3 这个随机模型。

5.什么是ROUGE 指标说明?

  • ROUGE-1 (R-1):衡量单个词的重叠(unigram overlap),反映词汇匹配度。
  • ROUGE-2 (R-2):衡量连续两个词的重叠(bigram overlap),反映短语结构相似性。
  • ROUGE-L (R-L):衡量最长公共子序列(Longest Common Subsequence),反映句子结构和顺序一致性。
  • ROUGE-AVG (R-AVG):三个指标的平均值,综合评估摘要质量。

⚠️ 注意:ROUGE 是自动评估指标,不能完全代表人类感知质量,但广泛用于比较模型性能。

6.n-gram 重叠问题是什么?

n-gram 重叠问题(n-gram overlap problem)是自然语言处理(NLP)和大语言模型(LLM)评估中的一个关键概念,尤其在数据泄露(data leakage)和评估可靠性方面具有重要意义。

  • n-gram 是指文本中连续的 n 个词(或字、token)组成的序列。
    • 1-gram(unigram):单个词,如 “语言”
    • 2-gram(bigram):两个连续词,如 “语言模型”
    • 3-gram(trigram):三个连续词,如 “语言模型强大”
    • 8-gram:八个连续词(常用于检测高度重复内容)

n-gram 重叠问题指的是:训练数据与测试数据(或验证数据)。

这会导致模型在测试时“见过”答案或上下文,从而高估其真实泛化能力——本质上是一种数据污染(data contamination)。

7.为什么需要关注 n-gram 重叠?

问题 后果
评估失真 模型看似很强,实则靠“背答案”
误导研究方向 错误归因性能提升来自架构改进,而非数据泄露
无法公平比较 不同模型使用不同训练数据,重叠程度不同

二、Language Models are Few-Shot Learners

🔑 核心观点提炼

1. 核心主张:大语言模型无需微调即可完成多种任务

“只要模型足够大,仅通过自然语言提示(prompt),就能在未见过的任务上取得强大性能。”

  • 不需要:
    • 任务特定的训练数据
    • 微调(fine-tuning)
    • 梯度更新
  • 只需要:
    • 一个自然语言指令(zero-shot)
    • 或加上几个示例(few-shot)

✅ 这标志着从“专用模型”到“通用语言接口”的范式转变。


2. 模型规模是关键:175B 参数带来质变

GPT-3 包含多个模型规模(从 125M 到 175B 参数),实验表明:

  • 性能随参数量平滑提升(scaling laws)
  • 小模型(<1B)在 few-shot 任务上几乎无效
  • 大模型(如 175B)在 many tasks 上接近或超过微调的 SOTA

📈 图表显示:在 Winograd、RACE、ARC 等任务上,175B 模型的 few-shot 曲线陡峭上升,而小模型几乎水平。


3. Few-shot 能力远超 zero-shot,但无需微调

  • Zero-shot:仅给任务描述(如 “Translate English to French: Hello →”)
  • One-shot:给 1 个例子 + 新问题
  • Few-shot(通常 10–100 个例子):在上下文(context window)中提供示例

📌 关键发现

在大多数任务中,few-shot 性能显著优于 zero-shot,且接近或超过微调的小模型(如 BERT、RoBERTa)。

但注意:GPT-3 本身从未在这些任务上微调过——所有知识来自预训练。


4. 覆盖任务极广:从问答到编程

你提供的附录片段展示了 GPT-3 在多种标准数据集上的格式化输入示例,包括:

数据集 任务类型 示例
SQuADv2 阅读理解 “Context: … Question: Is normal force equal to gravity? → Answer: yes”
BoolQ 是非问答 “Manhattan comes cheap? → false”
CB 自然语言推理 “Top quark is last of six? → False”
RTE / WiC 语义相似性、词义消歧 “Is ‘outfitter’ used the same way? → no”
Winograd 常识推理 解析代词指代(如 “his” 指谁)

💡 这些示例说明:所有任务都被统一为“文本补全”问题,无需修改模型结构。


5. 性能表现:部分任务达到人类水平

从你提供的表格数据(如 Winograd、PIQA、ARC、RACE、SQuADv2)可见:

  • Winograd Schema(常识推理):GPT-3 175B 达到 88.6%(接近人类 94%)
  • PIQA(物理常识):82.8%(SOTA)
  • ARC Challenge(科学问答):51.5%(远超随机 25%)
  • RACE-m(中学阅读理解):58.1%
  • SQuADv2 F164.9(虽低于微调模型 ~90,但在 zero/few-shot 中领先)

⚠️ 但在数学、逻辑推理等任务上仍较弱(需后续模型如 PAL、Chain-of-Thought 改进)。


6. 训练与数据

  • 模型架构:Transformer 解码器(与 GPT-2 相同,但更大)
  • 训练数据Filtered CommonCrawl + WebText2 + Books1/2 + Wikipedia(共 ~570GB)
  • 词表:50,257 BPE tokens
  • 训练目标:标准语言建模(最大化下一个词的似然)

🌐 数据多样性是 few-shot 能力的基础。


7. 局限性与风险

论文坦承 GPT-3 的问题:

  • 生成虚假信息(hallucination)
  • 偏见放大(性别、种族等)
  • 无法更新知识(静态训练)
  • 高计算成本(推理昂贵)

🔒 因此 OpenAI 以 API 形式限制访问,而非开源模型。


🧩 与 GPT-2 的关键区别

特性 GPT-2 (2019) GPT-3 (2020)
参数量 1.5B 175B(100 倍)
核心范式 Zero-shot Few-shot + Zero-shot
任务覆盖 初步验证 50+ 任务系统评估
开源 部分开源 闭源,仅 API
性能 弱于微调模型 部分任务超越微调模型

✅ 总结一句话:

GPT-3 证明:当语言模型足够大时,仅通过上下文中的几个示例(few-shot),无需任何参数更新,就能在广泛任务上实现接近人类或 SOTA 的表现——这标志着通用语言智能的重大突破。

❓问题

1.为什么又用了few-shot?

GPT-3 的巨大参数量使其在预训练中获得了强大的“从上下文学习任务”的能力;而 few-shot prompt 是一种高效利用这种能力的方式——不是为了筛选训练数据,而是在推理时动态引导模型行为。

2.few-shot prompt 有哪些技巧

1) 任务隐式定义(Implicit Task Specification)

✨ 不解释规则,只示范行为

  • 技巧:避免使用元语言描述任务(如“请判断句子是否合乎语法”),而是直接给出 输入 → 输出 的成对示例。
  • 原理:大模型擅长模式匹配,而非逻辑推理。示例比指令更可靠。
  • 示例对比
    • ❌ 差:“判断以下句子是否语法正确。”

    • ✅ 好:

      Text编辑
      
      Poor English input: I eated pizza.
      Good English output: I ate pizza.
      

📌 关键:让模型从“怎么做”中学习“做什么”。


2.)格式一致性(Format Consistency)

🧱 严格统一输入/输出结构

  • 技巧:所有示例使用完全相同的模板格式(如固定前缀、换行、标点)。

  • 作用

    • 减少歧义
    • 强化模式信号
    • 避免模型混淆任务边界
  • 实例(BoolQ):→ 问题以问号结尾,答案独占一行,小写。

    Text编辑
    
    Do hamsters provide food for any animals?
    yes
    
    Could a llama birth twice during War in Vietnam (1945-46)?
    no
    

⚠️ 实验表明:格式混乱会使 few-shot 性能下降 10–30%。


3.)自然语言接口(Natural Language Interface)

🗣️ 像人一样交流,不用机器标记

  • 技巧拒绝 XML/JSON/特殊 token,全部使用人类可读的自然语言。
  • 原因
    • 预训练数据中极少出现结构化标记
    • 模型更熟悉“Q: … A: …”这类真实对话格式
  • 对比
    • ❌ 机器式:<input>Today I have went</input> → <output>Today I went</output>
    • ✅ 人类式:Poor English input: Today I have went... → Good English output: Today I went...

💡 这体现了“语言即接口”(Language as Interface)的设计哲学。


4.)上下文位置与顺序(Example Ordering & Positioning)

📚 最新示例最有效,简单任务放前面

  • 技巧
    • 目标任务紧接在最后一个示例之后(利用 Transformer 的局部注意力偏好)
    • 若示例难度不同,由易到难排列(帮助模型逐步构建抽象)
  • 论文证据:GPT-3 在上下文末尾的示例权重更高(类似 recency bias)。

🔄 虽然论文未显式调序,但后续研究(如 “Demonstration Ordering”)证实顺序影响显著。


5)任务解耦与原子化(Task Atomicity)

🔍 一个 prompt 只解决一个子任务

  • 技巧:每个 few-shot prompt 聚焦单一、原子化任务(如“语法纠错”而非“文本润色”)。

  • 原因

    • 多任务混合会稀释模式信号
    • 模型难以同时学习多个映射规则
  • 反例

    Text编辑
    
    Fix grammar: I eated → I ate
    Summarize: The cat... → A cat sat.  ❌ 混合任务
    

✅ 正确做法:为每个任务单独设计 prompt。


6)利用预训练中的“元知识”(Leveraging Pretraining Priors)

🧠 选择模型熟悉的任务表述方式

  • 技巧:prompt 格式尽量匹配预训练数据中高频出现的结构,例如:
    • 问答:Q: ... A: ...(来自 FAQ、Quora)
    • 翻译:English: ... French: ...(来自多语网页)
    • 摘要:TL;DR: ...(来自 Reddit)
  • 原理:模型已内化这些“任务模板”作为条件生成的先验。

🌐 例如 GPT-3 在 Winograd 任务中表现好,部分因为代词消歧在新闻/小说中极常见。


🔬 额外高级技巧(论文隐含或后续研究证实)

技巧 说明
示例多样性 避免重复句式,覆盖不同语义场景(防过拟合表面模式)
答案简洁性 输出尽量简短(如 yes/no),减少生成噪声
避免歧义示例 不使用边界案例(如“maybe”类答案),除非任务需要
零样本作为基线 先测试 zero-shot,再决定是否加示例(有些任务加了反而降分)

📊 效果验证(来自 GPT-3 论文)

任务 Zero-shot Few-shot (K=10) 提升
Winograd 70.2% 88.6% +18.4%
PIQA 73.3% 82.8% +9.5%
ANLI R3 33.1% 48.2% +15.1%

→ 证明良好设计的 few-shot prompt 能显著激活大模型潜力

0

评论区