7.4 從寫程式到寫證明#
本節目標#
- 回顧 2021–2022 年程式生成技術的爆發:Codex/Copilot 與 AlphaCode
- 檢視 2022–2023 年以 Codex 系模型做數學的成果(GSM8K,Cobbe et al.)
- 分析程式合成與定理證明的異同:兩者都是「搜尋 + 驗證」
- 論證 Lean 作為「可執行的數學 Python」的定位
- 解釋為什麼 2023 年是轉折點:GPT-4 出現 + Lean 4 穩定
2021:程式碼成為 LLM 的新戰場#
Transformer 與 GPT 路線確立後,下一個自然的語料礦脈是程式碼。GitHub 上數千萬個開源儲存庫,是人類寫過的、規模最大、且語意高度結構化的文字集合——程式碼不能亂寫,寫錯了跑不起來。
2021 年夏天,兩個事件接連發生:
- OpenAI Codex(2021.08 論文):在 GitHub 程式碼上微調 GPT-3,成為 GitHub Copilot 的引擎。Copilot 於 2021 年 6 月預覽上線,把「補全下一行程式」變成了 IDE 裡的日常。
- 人類評估(HumanEval):Codex 論文同時發布了 164 道手寫 Python 題的基準,確立「pass@k」作為程式生成的標準指標。
程式碼訓練帶來一個關鍵紅利:它大幅提升了模型的符號推理能力。程式本質上是「中間值的鏈條」——變數賦值、條件分支、逐步計算——這與數學的逐步推導同構。2022 年的研究很快證實了這一點。
2022:AlphaCode 與競賽程式#
2022 年 12 月,DeepMind 發表 AlphaCode(Li et al., Competition-Level Code Generation),在 Codeforces 平台的競賽題上達到約前 54% 參賽者的水準。它的方法論預示了 AlphaProof 的形狀:
- 大規模生成候選(每題生成數十萬個候選程式)
- 用範例測試過濾(sampled examples 剪掉大量錯誤)
- 聚類(clustering)保留多樣的代表性解法,只提交少數
搜尋、過濾、驗證——這三件套與 GPT-f 的 beam search、AlphaGo 的 MCTS 在結構上是同一個家族。
2022–2023:Codex 做數學——GSM8K 與思維鏈#
2021 年 OpenAI 發布 GSM8K(Grade School Math 8K):8.5 千道小學數學應用題。2022 年 3 月,Cobbe et al. 的 "Training Verifiers to Solve Math Word Problems" 用 Codex 系模型展示了兩個重要結果:
- 微調 + 驗證器(verifier):訓練一個模型判斷「這個解法對不對」,對候選解做重排序,可顯著提升最終正確率——正確答案從約 35%(基準微調)提升到 50% 以上(verifier + best-of-n)。
- 同期,Wei et al. 的 chain-of-thought(2022.01)發現:在 prompt 中加入「逐步推導」範例,能讓大型模型在 GSM8K 上跳躍式提升。把推理寫出來,就是給模型延展計算的空間。
這兩條線合流的訊息非常清楚:數學解題 = 生成候選推理鏈 + 用某種驗證機制過濾。唯一的問題是:那個「驗證器」還是學出來的(神經網路),會犯錯、會被欺騙。什麼驗證器絕對不會錯?——形式化系統的 kernel。
程式合成 vs 定理證明:同構與差異#
把兩個領域並排,會發現驚人的結構同構:
| 程式合成 | 定理證明 | |
|---|---|---|
| 輸入 | 規格(函數簽名 + 範例) | 命題(型別 Prop) |
| 輸出 | 程式碼 | 證明(proof term / tactic 腳本) |
| 驗證 | 跑測試 / 型別檢查 | kernel 型別檢查 |
| 搜尋 | 生成候選 + 過濾 | 生成 tactic + 搜尋樹 |
| 獎勵 | 測試通過 | 目標關閉(Proof finished) |
依值型別論甚至指出更深的聯繫:Curry–Howard 對應下,程式就是證明、證明就是程式。定理 \(P\) 的證明是型別 \(P\) 的一個 inhabitant;寫一個型別為 A → B 的函數,與證明蘊含式 \(A \Rightarrow B\) ,在 Lean 裡是同一件事。
差異則在於語意環境:
- 程式的「對」由執行結果定義——測試是抽樣的,可能漏掉邊界情況
- 證明的「對」由邏輯定義——kernel 檢查是全稱的、完備的(對證明本身而言)
flowchart LR
subgraph 共同結構
S[規格 / 命題] --> G[LLM 生成候選]
G --> V[驗證器]
V -->|失敗| G
V -->|通過| OK[輸出]
end
V -.程式: 測試抽樣.-> T1[不完備但快]
V -.證明: kernel 檢查.-> T2[完備且可信]Lean 作為「可執行的數學 Python」#
這個同構指向一個定位:Lean 之於數學,就像 Python 之於資料科學。
- Python 把統計/機器學習的想法變成可執行的程式;Lean 把數學論證變成可執行的證明(「執行」= kernel 檢查)。
- Python 有 pip、有社群套件;Lean 有 Lake、有 mathlib(超過一百萬行程式碼的數學函式庫)。
- LLM 學 Python 很有效,因為它可以跑、可以看錯誤、可以自我修正;LLM 學 Lean 也可以用完全一樣的迴路——寫 tactic、看編譯錯誤、修正、重試。
這個類比讓「把程式生成的成功公式搬到數學」從口號變成了工程路線圖:Copilot 的補全 → tactic 補全;HumanEval 的 pass@k → miniF2F 的成功率;測試過濾 → kernel 過濾;程式的 RL → 證明的 RL。
外卡:DeepMind「用電腦教數學」(2021)#
在主線之外,DeepMind 於 2021 年發表 "Teaching mathematics with computers: A vision for the future"(Davis et al.),呼籲把形式化數學軟體(包括證明助理與電腦代數系統)變成數學教育的核心工具。這份立場文件常被忽略,但它在時間軸上是一個訊號:DeepMind 內部已經把「電腦可驗證的數學」列為戰略方向。同年 DeepMind 的 HOList/Isabelle 工作也在累積「LLM + 互動定理證明」的內部經驗。兩年後的 AlphaProof,正是這條伏筆的兌現。
2023:為什麼是轉折點#
回顧 2023 年,三件事同時到位:
- GPT-4(2023.03):通用推理能力跨過門檻。它在專業考試(含數學)上首次展現接近人類專家的水準,chain-of-thought 的品質產生質變。模型夠強,才有資格當證明搜尋的策略網路。
- Lean 4 穩定:2023 年 Lean 4 移植 mathlib 完成(mathlib4),生態從 Lean 3 過渡到效能更好、metaprogramming 更強、可用 Python 橋接的 Lean 4。基礎設施從「研究原型」變成「可用平台」——LeanDojo 正是基於 Lean 4。
- 範式匯流:程式生成的「生成 + 驗證 + 過濾 + RL」全套方法論,被明確移植到證明領域(LeanDojo、ReProver、以及後續的 Draft-Sketch-Prove 等)。
flowchart TD
A[2021 Copilot \n 程式補全日常化] --> D[2023 轉折點]
B[2022 AlphaCode \n 搜尋+驗證規模化] --> D
C[2022-23 GSM8K/CoT \n 推理鏈+驗證器] --> D
E[2023 GPT-4 \n 推理質變] --> D
F[2023 Lean 4 + mathlib 穩定 \n 環境成熟] --> D
D --> G[2024 AlphaProof \n IMO 銀牌]此後的故事——AlphaProof 的 IMO 銀牌、DeepSeek-Prover、整數論式的自動化證明大量出現——都建立在這個 2023 年的匯流之上。程式與證明,兩條平行了七十年的河流(從 AUTOMATH 與 ALGOL 的年代算起),在依值型別論與大規模語言模型的交界處正式合流。
小結與練習#
Codex/Copilot(2021)與 AlphaCode(2022)證明了「生成 + 驗證」在程式領域的威力;GSM8K 與 chain-of-thought(2022)把這套方法套到自然語言數學,但驗證器仍是會犯錯的神經網路。程式合成與定理證明在 Curry–Howard 對應下深度同構,Lean 因此成為「可執行的數學 Python」。2023 年 GPT-4 的推理質變與 Lean 4 生態的穩定同時到位,構成 AI 數學證明的轉折點。
練習
- 畫表比較 Codex、AlphaCode、GPT-f 三者的「搜尋 + 驗證」結構差異。
- Curry–Howard 對應下,型別
A → B的項與蘊含式證明是什麼關係?用 Lean 的Example : 1 = 1 := rfl說明「程式即證明」。 - 為什麼神經網路驗證器(verifier)會被欺騙,而 Lean kernel 不會?這對「best-of-n 選擇」策略有何影響?
- 討論「測試通過 ≠ 程式正確」與「kernel 通過 = 證明正確」的不對稱,以及它為什麼使定理證明成為更乾淨的 RL 環境。
- 思考題:如果 GPT-4 提前兩年出現但 Lean 仍是 Lean 3,AI 數學證明的發展會如何不同?基礎設施與模型能力哪個是更強的約束?