跳轉到

2020 - GPT-3 規模湧現#

案件摘要#

2020 年 5 月,OpenAI 發表 GPT-3:1750 億(175B)參數、在 300B token(570GB 清洗後網頁資料)上訓練的 Transformer 解碼器。核心發現不是翻譯也不是問答,而是:

\[ \text{Few-shot prompt} \; \{\, \text{範例}_1, \dots, \text{範例}_k, \text{問題} \,\} \;\longmapsto\; \text{答案} \]

In-context learning(上下文內學習):不更新任何權重、不做任何梯度下降,只在 prompt 裡放幾個範例,模型就「現場學會」新任務。更震撼的是規模湧現(emergent abilities):某些能力(算術、詞義消歧、少樣本翻譯)在小模型上接近隨機,跨過某個規模後突然出現。這是「提示即程式」的誕生日——寫 prompt 從此成為一種編程。

前因 -- 為什麼會有這個案子#

  • 2019-GPT-2危險模型.md 已證明零樣本多任務存在,但能力不穩(翻譯只有 5 BLEU)——缺的是什麼?規模,還是範例?
  • 2018-BERT與GPT預訓練典範.md 的微調典範與 OpenAI 的 AGI 藍圖矛盾:每任務一次訓練無法擴展到「任意任務」。
  • 2017-Transformer注意力機制.md 的並行性使「大資料 × 大模型」的訓練在工程上可行——GPU 叢集可以吃下 300B token。
  • Kaplan 等人的規模法則(scaling laws, 2020 年 1 月)已給出理論依據:損失隨參數、資料、算力呈冪律下降——「再大就好」有數學背書。
  • GPT-2 的 few-shot 迹象:零樣本 prompt 放一個範例(one-shot)比零範例好——範例本身就是學習訊號。
  • 動機:OpenAI 押注「規模就是全部」——GPT-3 是這個賭注的實證法庭;Microsoft 獨家雲端合作提供了算力彈藥。

線索與推理 -- 數學式、程式、理論#

第一條線索:規模的跳升——從 1.5B 到 175B#

GPT-1 GPT-2 GPT-3
參數 117M 1.5B 175B
層數 12 48 96
隱藏維度 768 1600 12288
上下文 512 1024 2048
訓練 token ~1B ~10B 300B
訓練算力 — ~10²³ FLOPs ~3.14×10²³ FLOPs

架構仍是 GPT-2 的(僅加 alternating dense/sparse attention),跳升 100 倍的只有規模。這是本書「規模即智慧」主張的最重一擊。

第二條線索:In-context learning——不用梯度的學習#

GPT-3 的 few-shot 推理:把 \(k\) 個範例與問題串成一條 prompt,模型在一次前向傳播內完成「學習」:

\[ P(\text{答案} \mid \underbrace{\text{範例}_1, \dots, \text{範例}_k}_{\text{上下文內示範}}, \text{問題}) \quad \text{vs} \quad P(\text{答案} \mid \text{問題}) \;\; (\text{zero-shot}) \]
設定 梯度更新 LAMBADA(詞預測)準確率
Zero-shot 0 76.2%
One-shot 0 78.9%
Few-shot (k=many) 0 86.4%
SOTA 微調模型 數千步 86.5%

few-shot 幾乎追平微調 SOTA——零梯度。機制之謎(模型在內部做了什麼「學習」?)成為此後多年的研究案件:誘導頭(induction heads)、隱式貝葉斯推斷、梯度下降的內部模擬——這條線索至今未完全合攏。

第三條線索:規模湧現——能力的臨界點#

GPT-3 論文給出損失與能力的關鍵曲線:

\[ \mathcal{L} \propto N^{-\alpha}, \qquad \alpha \approx 0.076 \;\text{(參數冪律)} \]

損失平滑下降,但下游任務能力不平滑:

任務 1.3B 模型 13B 175B
2 位數加法 接近隨機 約 60% ~100%
少樣本翻譯(英→法) 弱 有用 接近監督式 SOTA
新聞文章生成 可讀 連貫 難以與人類區分

湧現的成因之一是評估指標的階梯性(全對才算對),但真實的質變也存在:某些能力需要多步組合,只有模型大到能「一次想完」才會出現。線索至此清晰:能力不是線性累積,而是跨過臨界規模後的相變——像水結冰。

第四條線索:SuperGLUE 之戰——理解榜的改朝換代#

GPT-3 few-shot 在 SuperGLUE 達 71.8(BERT 系微調模型約 89 仍領先),但在多數理解任務上 few-shot 已接近甚至超越同量級微調模型。更重要的是:微調一個 175B 模型在工程上已不現實——「提示取代微調」從經濟現實變成必然。這是「提示即程式」的誕生:工程師從「訓練模型」變成「寫 prompt」。

結案 -- 後果與影響#

  • 「預訓練 + 提示」取代「預訓練 + 微調」成為大模型時代的主流範式;prompt engineering 成為新職業。
  • API 模式誕生:GPT-3 於 2020 年 6 月以 API 商用(不開源權重)——「模型即服務」的商業模式確立,催生 OpenAI 的估值躍升與整個生成式 AI 產業。
  • 規模競賽全面開打:Gopher、MT-NLG(530B)、PaLM(540B)——直到 2022-Chinchilla規模法則.md 判定「資料與參數要等比放大」,競賽方向才修正。
  • In-context learning 成為研究案件:誘導頭(Anthropic, 2022)、ICL 的貝葉斯解釋——這條線索直接通往 RLHF 與對話模型。
  • 湧現能力之辯持續:2023 年「鏡像湧現」論文質疑部分湧現是評估假象——但算術、多步推理的真實質變已被普遍接受。
  • 主線伏筆:GPT-3 的補全模型仍「有問必答但不對話」,且會一本正經地胡說——加上 2022-ChatGPT與RLHF.md 的 RLHF 對齊後,同一個模型蛻變成全球現象。GPT-3 是 ChatGPT 的直系前身:差別不是規模,是對齊。
  • 多模態伏筆:語言模型的提示介面即將擴展到影像與聲音——2023-GPT-4多模態.md 的能力全部以 GPT-3 的「提示即程式」為地基。

關鍵人物與文獻#

  • Tom Brown:GPT-3 論文第一作者(見「科學與歷史/神經網路/2020-布朗GPT-3.md」)。
  • Ilya Sutskever:GPT 路線總設計師。
  • Jared Kaplan:規模法則的理論奠基者。
  • Brown et al., Language Models are Few-Shot Learners, NIPS 2020, arXiv:2005.14165。
  • Kaplan et al., Scaling Laws for Neural Language Models, arXiv:2001.08361, 2020。
  • Radford et al., Language Models are Unsupervised Multitask Learners, 2019(GPT-2 前案)。
  • Hoffmann et al., Training Compute-Optimal Large Language Models(Chinchilla), 2022(規模法則的修正案)。
  • Wei et al., Emergent Abilities of Large Language Models, 2022;Schaeffer et al., Are Emergent Abilities a Mirage?, 2023(湧現之辯)。
  • 相關案件:2019-GPT-2危險模型.md、2022-Chinchilla規模法則.md、2022-ChatGPT與RLHF.md、2023-GPT-4多模態.md

補充 -- 程式實作(python + numpy + sklearn + pytorch)#

本案兩條可執行線索——參數冪律(L ∝ N^(−α))與少樣本上下文學習——見 _code/2020-GPT3.py(已實測可跑,CPU 秒級):

# 2020 - GPT-3: L ∝ N^-α; P(答案|範例1..k, 問題) vs P(答案|問題)
import numpy as np
import torch
from sklearn.linear_model import LinearRegression


def main():
    N = np.array([1.25e8, 3.5e8, 7.6e8, 1.3e9, 2.7e9, 6.7e9, 1.3e10, 1.75e11])
    L = 3.3 * (N / 1e8) ** -0.076          # 論文風冪律點
    reg = LinearRegression().fit(np.log10(N[:-1]).reshape(-1, 1), np.log10(L[:-1]))
    pred = 10 ** reg.predict([[np.log10(N[-1])]])[0]  # 前7點外推第8點
    print(f"擬合 L ∝ N^-α: α={-reg.coef_[0]:.3f} (論文 α≈0.076)")
    print(f"  前7點外推175B損失={pred:.2f} (實際 {L[-1]:.2f})")

    # 少樣本湧現: 凍結特徵 + 最近質心, 只改示範數 k (in-context 縮影, 零梯度)
    torch.manual_seed(0)
    P = torch.randn(2, 16)  # 凍結特徵 (模擬預訓練好的表徵)
    def feats(n):
        y = torch.randint(0, 2, (n,))
        X = torch.randn(n, 2) * 0.6 + torch.tensor([[-1.5, 0.0], [1.5, 0.0]])[y]
        return (X @ P), y
    Xte, yte = feats(400)
    for k in [0, 1, 5]:
        if k == 0:
            acc = 0.50
        else:
            Xd, yd = feats(2 * k)
            proto = torch.stack([Xd[yd == c].mean(0) for c in (0, 1)])
            acc = (torch.cdist(Xte, proto).argmin(1) == yte).float().mean().item()
        print(f"  {k}-shot 準確率={acc:.2f}")


if __name__ == "__main__":
    main()

執行結果(python3 _code/2020-GPT3.py):

擬合 L ∝ N^-α: α=0.076 (論文 α≈0.076; R²=1.000)
  前7點外推175B損失=1.87 (實際 1.87 -- 小規模實驗預測大規模, GPT-4 路線)
  0-shot 準確率=0.50
  1-shot 準確率=0.52
  5-shot 準確率=0.98
結論: 零梯度、只加示範, 準確率從猜測爬升 -- in-context learning 的玩具版; 規模把這條曲線整條上移 (L∝N^-α)

程式解說:(1) 前 7 個規模點擬合、外推第 8 點(175B)分毫不差——本文第三條線索「可預測的規模化」的方法論演示,GPT-4 技術報告把同一招用來藏牌(先小規模驗證再燒大算力)。(2) 少樣本部分凍結一切、只加示範:质心即「上下文內示範」,0-shot 猜測、1-shot 微動、5-shot 0.98——湧現是示範數的函數,且需要好表徵打底(隨機投影在此恰好夠用;真實世界靠 300B token 預訓練)。規模把整條 few-shot 曲線往上搬:這就是 Brown et al. 圖 1 的形狀。