06.3 規模法則與湧現#
本章導讀#
模型要多大、資料要多少、算力要多少?2020 年人們發現答案服從一個簡單的數學規律——冪律。 損失隨規模平滑下降,但能力卻在某個規模「突然出現」。規模法則(Scaling Laws)讓訓練大模型 從賭博變成工程。
淺顯說明#
把模型訓練想成「煮菜」:
- 模型大小 \(N\) (鍋子)、資料量 \(D\) (食材)、算力 \(C\) (火候)。
- Kaplan 等人發現:損失 \(L\) 隨 \(N, D, C\) 按冪律下降——規模翻倍,損失乘一個固定小於 1 的因子。
- Chinchilla 定則更進一步:在固定算力下,「模型大小」與「資料量」要等比例增長才最划算。
更神奇的是:小模型寫不了文章,大模型卻突然會寫——損失平滑下降,能力卻「跳」出來。這叫湧現。
正規理論#
Kaplan 規模法則(2020)#
損失與模型參數 \(N\) 、資料 \(D\) 、算力 \(C\) 服從冪律:
實測指數約 \(\alpha_N \approx 0.076\) ( \(N\) 以非嵌入參數計)。多變量形式(可加分解):
\(E\) 是不可約損失(資料本身的熵,04.3 節)。三項分別是「模型不夠大、資料不夠多」的懲罰。
Chinchilla 定則(2022)#
在固定算力預算 \(C \approx 6ND\) (每參數每 token 約 6 次運算)下,最小化 \(L(N, D)\) :
對 \(L\) 分別對 \(N\) 、 \(D\) 偏導並令為零(拉格朗日乘子法,帶約束的極值問題):
聯立解得最優比例(實測 \(\alpha_N \approx \alpha_D \approx 0.3\) 量級時):
意義:算力翻倍時,模型大小與資料量應各乘 \(\sqrt{2}\) ——GPT-3(175B 參數、300B tokens) 資料餵得太少;Chinchilla(70B、1.4T tokens)更小卻更強。
湧現(Emergence)#
某些下游能力(多步推理、指令遵循)隨規模的曲線呈相變狀:
數學上的可能解釋: 1. 度量問題:下游指標是「全對才得分」的階梯函數,平滑的損失改善累積成跳躍的指標。 2. 複合能力的相乘:多步推理的正確率是每步正確率的乘積 \(p_{\text{total}} = \prod_t p_t = p^n\) ——每步 \(p\) 從 0.9 升到 0.99,20 步任務從 0.12 跳到 0.82。 3. 冪律外推:損失可以外推預測,能力不行——這是規模法則最重要的實用與危險之處。
簡易範例:冪律與外推#
設損失 \(L(N) = 8\,N^{-0.076}\) :
| \(N\) | \(10^{8}\) | \(10^{9}\) | \(10^{10}\) | \(10^{11}\) |
|---|---|---|---|---|
| \(L\) | 4.20 | 3.50 | 2.92 | 2.43 |
規模 \(\times 10\) ,損失乘 \(10^{-0.076} \approx 0.84\) ——平滑可外推。 工程意義:用小模型量測冪律參數,就能預測大模型的損失,再決定要不要燒算力。
多步推理的相乘效應:每步正確率 \(p = 0.95\) , \(n = 30\) 步: \(p^{30} \approx 0.21\) 。把 \(p\) 提到 \(0.998\) (更好的模型), \(p^{30} \approx 0.94\) —— 損失只改善一點,30 步任務卻從「幾乎失敗」跳到「幾乎全對」——湧現的一個數學側寫。
歷史典故#
- 2020 年 GPT-3 規模湧現:見卷宗 ../2020-GPT-3規模湧現.md——1750 億參數下,in-context learning 開始出現。
- 2022 年 Chinchilla:見 ../2022-Chinchilla規模法則.md——「算力最優」重寫了業界的訓練配方。
- 2025 年 DeepSeek-R1:見 ../2025-DeepSeek-R1.md——用 RL 讓推理能力「湧現」,而不只靠規模(07 章細講)。
習題#
- 對 \(L(N,D) = E + A/N^{\alpha} + B/D^{\alpha}\) ( \(\alpha_N = \alpha_D = \alpha\) ),在約束 \(C = 6ND\) 下用拉格朗日乘子法推導 \(N_{\text{opt}} \propto C^{1/2}\) 。
- 每步正確率 \(p = 0.98\) ,多少步之後總正確率跌破 0.5?這對「長鏈推理」有何啟示?
- 討論:為什麼「損失可外推、能力不可外推」是規模法則最大的實用價值與最大的風險。
補充#
1. 數學推導證明#
證明(習題 1):等指數時 \(N_{\mathrm{opt}} \propto C^{1/2}\) 。
\(L = E + A/N^\alpha + B/D^\alpha\) ,約束 \(C = 6ND\) 。拉格朗日函數 \(\mathcal{J} = A/N^\alpha + B/D^\alpha + \lambda(6ND - C)\) ,一階條件:
兩式相除消去 \(\lambda\) : \(\dfrac{A}{B}\left(\dfrac{D}{N}\right)^{\alpha+1} = \dfrac{D}{N}\) ,即 \((D/N)^\alpha = B/A\) ,故 \(D = (B/A)^{1/\alpha} N \propto N\) 。代入約束 \(C = 6ND \propto N^2\) ,得 \(N_{\mathrm{opt}} \propto C^{1/2}\) 、 \(D_{\mathrm{opt}} \propto C^{1/2}\) ——算力翻倍,模型與資料各乘 \(\sqrt{2}\) 。 \(\blacksquare\)
計算(習題 2):長鏈正確率跌破一半的步數。
\(p^n < 0.5 \Leftrightarrow n > \log 0.5 / \log p\) 。 \(p = 0.98\) 時 \(n > 0.6931/0.0202 \approx 34.3\) ——35 步後總正確率跌破一半。啟示:長鏈推理對單步錯誤極敏感;要撐 100 步鏈,需 \(p \gtrsim 0.993\) (因 \(0.993^{100} \approx 0.50\) )。這就是 o1/R1 類模型把「單步推理正確率」推高一點點、長任務卻脫胎換骨的原因。 \(\blacksquare\)
說明(習題 3):可外推 vs 不可外推。 損失是 token 平均的連續量,服從冪律、可外推——工程上用小模型擬合 \(A, B, \alpha\) 就能預算大模型的損失與算力(實用價值)。能力(如「20 步全對」)是 \(p^n\) 型的階梯函數: \(p\) 平滑改善時它長期 \(\approx 0\) 、過臨界後陡升——上線前無法從損失準確預知能力跳點(風險:安全評估與時程規劃都可能被突襲)。
2. 簡易範例#
範例一:冪律外推的手算。 \(L(N) = 8N^{-0.076}\) : \(N = 10^8 \to L \approx 1.97\) ; \(\times 10\) 後乘 \(10^{-0.076} \approx 0.8395\) (程式 _code/06.3-scaling-law-power.py 印出相鄰比值 \(1.1912, 1.1912, 1.1912\) ——倒數即 \(0.8395\) ,三段全等,平滑可外推)。用 \(N = 10^9\) 的量測外推 \(10^{11}\) : \(L_{\text{pred}} = 1.656 \times (10^{-2})^{0.076} \approx 1.167\) ——先算再燒錢。
範例二:湧現的相乘表。 程式印出 \(p^n\) 表格: \(p = 0.9\) 、 \(n = 30\) 時僅 \(0.042\) (幾乎必敗); \(p = 0.998\) 時 \(0.942\) (幾乎全對)。同表另列「全對才得分」欄: \(p = 0.9 \to 0.122\) , \(p = 0.99 \to 0.818\) (湧現!)——損失只改善一點,長鏈任務從失敗跳到成功。本章 \(p = 0.95 \to 0.21\) 、 \(p = 0.998 \to 0.94\) 的例子正是表中 \(n = 30\) 那一欄。