0
| 本文作者: 王悅 | 2025-02-28 20:26 |
在 DeepSeek 能夠破圈而出的一眾原因中,完全摒棄傳統的監督微調(SFT)、轉而采用大規模強化學習(RL)的創新之處是關鍵所在,這使得模型推理能力在質上取得顯著突破,更證明了強化學習在提升大語言模型推理能力方面的巨大潛力。
近幾年,學界和業界關于 RL 和 LLM 也涌現出了頗多具備開創性意義的研究成果。在 AI 智能體推理與決策研討會(AIR 2025)上,來自倫敦大學學院、加州大學伯克利分校、普林斯頓大學、華盛頓大學、卡內基梅隆大學、Meta、華為等多位學術界和工業界的研究人員圍繞強化學習、推理決策、AI 智能體展開討論,回答了諸多問題,例如:
AI 系統如何模擬類人推理和決策過程?
最新的算法、框架和工具如何支持在不確定性下進行穩健的決策?
如何確保 AI 的決策過程是道德的、透明的且公正的?
……
從一系列前沿的推理決策研究中,可以看到 DeepSeek 的影子。2023 年,來自華盛頓大學的 Hanna Hajishirai 教授團隊發布了一項關于大語言模型推理的開放訓練方法的工作,研究強調,為了從預訓練模型發展到最終模型,需要經歷了三個階段:指令微調、偏好微調以及具有可驗證獎勵的強化學習。而這一方法也是 DeepSeek 所采用的推理開放訓練方法。
Meta GenAI 的田淵棟教授系統總結了當下應對大語言模型局限的解決方式,除了 Scaling Law 之外還有Test-time Scaling(測試時擴展),即使用更大的模型加工具或思維鏈,使用不同的策略,最終可能會找到一個比單純的大型模型更好的解決方案。田淵棟教授也分享了通過使用梯度上升(gradient ascent)對神經網絡進行訓練的方式,從而試圖將符號結構與神經網絡表示統一起來,但這一方法還處于非常初級的階段,并不確定未來是否能成為主流。
俄亥俄州立大學的 Huan Sun 教授從隱式推理出發,探討了數據集中的兩種事實:原子事實與推斷事實,并提出了一個與主流不相同的研究發現:泛化速度與絕對數據量并沒有關系,而是與關鍵數據分布、特別是推斷事實與原子事實的比例密切相關,且比例越高,泛化速度就越快。
同時,也有研究圍繞 AI for Math 這一主流的推理能力應用領域。普林斯頓大學的金馳教授團隊開發了Goedel-Prover 這一開源的大模型,通過將自然語言數學問題翻譯成形式語言(如Lean 4),并生成形式化證明,從而解決形式化數學陳述和證明稀缺的問題,這一模型在自動定理證明方面達到了當前世界范圍內的最佳性能水平。
更有實用性較強的 AI 智能體研究。卡內基梅隆大學的 Graham Neubig 教授團隊提出了一個混合 Agents 方案,這種 Agents 能夠交替執行瀏覽和 API 調用操作,并且在每一步中,它會選擇與人類溝通、生成自然語言、執行Python代碼(包括API調用)以及執行網頁瀏覽操作。
AIR2025 由倫敦大學學院汪軍、Meta GenAI 田淵棟等教授聯合主辦,致力于推動智能系統的發展,使其能夠自主、適應性強且負責任地運行(會議詳情及注冊可訪問官網:https://ai-agent-reasoning.com)。本次會議特別鳴謝來自加州大學伯克利分校的博士后研究員顧尚定。
這是一篇圍繞 DeepSeek 的過去、當下與未來所展開的對人工智能的精彩討論。AI 科技評論截取會議部分精彩內進行編譯,以下為核心內容的演講實錄:
一、DeepSeek 的語言模型推理開放訓練方法
華盛頓大學的 Hanna Hajishirai 教授做了主題為“Open Training Recipes for Reasoning in Language Models”的演講,探討了語言模型推理的開放訓練方法。
為了從預訓練模型發展到最終模型,我們經歷了三個階段:指令微調、偏好微調以及具有可驗證獎勵的強化學習。這是我們 2023 年論文中引入的新內容。這基本上也是 DeepSeek 所采用的方法,后來我們發現 DeepSeek 也引入了同樣的方法。
我們先來談談指令微調。指令微調中,人們也把它稱為 SFT,即監督式微調。其核心思想是,你拿一個預訓練的語言模型,然后向模型輸入各種不同類型的任務指令,接著對模型進行微調,教會它如何遵循這些指令。
我們團隊在這個方向上已經投入了很長時間。我們在 2022 年開始專注于語言模型的指令微調,當時主要關注的是自然語言處理(NLP)標簽等語言測試。
2023 年,我們引入了一個自我指導框架(self-instruct framework),在這個框架下,我們教會模型合成生成越來越多的數據,以便我們能夠獲得更好的、更多的數據用于監督式微調。
這種范式在 2023 年得到了廣泛的關注,我們看到在工業界和學術界都有很多工作基于自我指導框架展開,并設計了像 Alpaca、Vicuna 等模型。這些模型都大量使用了合成生成的指令數據進行訓練。
下一步就是在監督式微調中進行偏好微調。這里有一個非常重要的步驟,就是數據整理。這和我剛才提到的合成數據生成是一樣的,但同時也是一個很好的數據混合設置,因為當我們關注一組任務和我們試圖優化的目標技能時,當我們增加一組任務的提示和完成內容時,我們可能會在其他組上失去準確性和改進。
比如,如果你在監督式微調中添加了大量數學提示和數學類型的數據,你可能會在知識回憶方面表現下降,因為你總是希望生成越來越長的思考鏈。所以,數據混合是構建一個好的微調模型中非常重要的一步。
剛才我們一直在講數據,但現在我想聚焦于什么樣的數據才真正有助于推理。這里所說的“推理”,舉個例子,比如一個數學問題:一家商店正在進行襯衫促銷,每件襯衫售價 25 美元,現在我們想買 7 件襯衫,總共要花多少錢?我們可以很容易地標注出答案是 125 美元,但僅僅用這種問題和金額答案作為監督式微調數據是不夠的。
大家已經認識到,真正重要的是處理這種逐步推理的輸出,它能一步步告訴我們發生了什么。這種數據可以成為監督式微調的優質來源。
這其實并不是一個新想法,它在自然語言處理(NLP)領域的語義解析、語義理解和推理方面已經被研究很久了。但現在它又在語言模型中重新受到關注,因為如今我們可以處理這種既包含語言又包含形式化表達的推理鏈。
在早期的研究中,我們只能依賴于形式化的推理圖或推理思路。但現在面臨的巨大挑戰是:
這種逐步推理的標注雖然很好,能夠幫助模型處理復雜的多步驟問題,也能揭示模型在預訓練過程中所獲得的推理過程,甚至因為有了這些標注,我們還能發現推理鏈中間可能出現的錯誤,比如答案是125,但推理過程中可能有錯誤,這有點類似于人類的思維過程。標注這種類型的推理提示非常困難。它成本高昂、耗時費力,而且不夠多樣化。
我們的方法是做混合數據策劃,即:查看現有的資源,然后將其與合成數據生成相結合。事實上,我們采用了這篇非常有趣的論文中介紹的方法,用于合成地生成數據,但針對不同的用戶角色。這為什么重要呢?因為它增加了生成提示的多樣性。而且,它還使我們能夠不斷擴大這種思維鏈條以及這種很難收集的推理數據的規模。
論文鏈接:https://arxiv.org/abs/2406.20094
這是如何運作的呢?我們會給模型設定不同的用戶角色,比如“這是一個化學動力學研究人員”,然后讓模型以這個角色生成數據和數學問題。接下來,我們再給它設定一個不同的角色,讓它生成一個邏輯推理問題,就可以得到這樣的結果。
我們給模型提供了許多不同類型的用戶角色。事實上,我們使用了25萬種角色,包括計算機科學家、化學教授、五歲小孩等等。然后,我們讓模型根據這些角色生成數學問題。通過這種方式,我們收集了 15 萬道硬件數學題和 5 萬道小學數學題。
我們還讓模型生成編程問題,這主要是 Python 代碼生成以及精確指令的遵循,貫穿于這些角色之中。在收集完這些提示后,我們使用了像 GPT-4o 或 Claude 這樣的大模型來為我們生成思維鏈條數據。然后,它們生成了逐步的解決方案。
我們來看一下這是否有所幫助。我們已經在這些設置下進行了評估,查看了一個公開的數據集,例如在數學領域,有一些由社區驅動的公開開源數據集,這些數據集是由其他團隊、朋友和學術界生成或策劃的。然后,我們開始引入一些我們基于角色生成的合成數學問題。
這些曲線展示了在不同百分比下整合角色數據的情況,32 和 69 是我們不包含任何角色數據時在數學和 GSM8K 上的結果。而最后一列則顯示了逐步增加角色生成數據的數量。
在數學領域,我們在 GSM8K 或高年級數學問題上取得了顯著的提升。相比之下,我們在小學數學(GSM with K)上的提升較小,但仍然很有趣。
在生成合成數據時,一個重要的問題就是結果的質量。你可能會說:“好吧,你們生成了這些數學數據,然后讓GPT-4為這些生成內容做標注,那么這些標注的質量高不高呢?”
為了提高數據的質量,我們做了以下工作:我們讓 GPT-4 生成多個實例或者多條思維鏈條,然后進行了多數投票,并保留了那些大多數情況下答案正確的實例。
通過這種方式,我們刪除了很多數據。我們基本上只保留了 60% 的數據。好消息是,即使只使用了 60% 的數據,我們在數學領域的準確率仍然相似,GSM8K 上甚至略有提升。
在整個通用方案中,我們不僅僅局限于數學,而是涉及許多不同類型的數據。
這是我們早期的混合方案,比如用于 Tulu 2 的。隨著時間的推移,我們嘗試了許多不同類型的混合方式,最終我們的混合方案給出了最佳的平均效果。正如你在中間看到的,例如,有些混合方案在安全性方面表現更好,而在其他方面表現稍差。但最終,我們希望在平均意義上達到一種平衡,于是我們最終選擇了這種最終方案。
這是監督式微調階段的結果。現在我們進入下一個階段:偏好微調。
那么,偏好微調的作用是什么呢?它的想法是,我們將比較同一個提示的不同完成結果,并選擇我們認為更強的那個。通常,這在風格和聊天評估中非常有用。比如它會告訴我們:“這個結果可能更符合人類的偏好。”但我們也發現,它甚至在推理測試中也有所提升。
我們將使用基于強化學習的方法來根據這種反饋、這種偏好數據進行優化。在優化步驟中,我們將優化一個獎勵,這個獎勵是受到人類偏好的啟發。同時,我們希望確保不會偏離原始語言模型太遠。因此,我們加入了一個 KL 散度懲罰項。
我們如何進行優化?有哪些不同的算法可以用于優化這種形式化問題?通常,人們會使用 PPO(近端策略優化)。然后,去年還引入了一種更簡單的算法,稱為直接近端偏好優化(Direct Proximal Preference Optimization)。而我們的問題是:這兩種算法中,哪一種更好?
在直接近端偏好優化(DPO)中,它就像是一種非常簡單的基于學習的算法,與機器學習中的排序算法非常相似。而在近端策略優化(PPO)中,它是一種真正的強化學習方法,你有一個獎勵模型,然后我們希望對策略模型進行優化。
在最近的研究中,我們決定從理論和實證的角度更深入地研究這個問題,以了解這些算法中哪一個更好。我們發現PPO(近端策略優化)始終優于DPO(直接近端偏好優化)。然而,PPO 的實現要復雜得多。它需要大量內存,因為我們希望同時將獎勵模型和策略模型保留在內存中進行優化。而當我們處理更大的模型時,這會變得更加困難,吞吐量也會顯著降低。
論文鏈接:https://arxiv.org/abs/2406.09279
這些是關鍵的發現。我們在比較這兩種算法時注意到,有很多不同的變量在起作用。因此,我們開始分別對它們進行消融研究。比如說,這是我的初始監督微調結果,這些是我的平均性能,以及它們在一組任務——大量任務中的變化情況。
我們首先想研究數據的作用。我們最初加入了較弱的偏好數據,效果并不太強,所以只有一點點提升。當我們提高了偏好數據的質量時,我們看到了一個很大的跳躍。我們使用完全相同的數據,只是替換了算法,結果 PPO 帶來了更好的提升。
當我們引入更大的獎勵模型時,這是非常直觀的——當我們有一個更大的獎勵模型時,我們期望PPO能取得更好的結果,但實際的提升并沒有達到我們的預期。我們原本以為,有了更大的獎勵模型,我們應該會看到一個很大的跳躍,但結果卻只是這么多。我們并沒有看到太多提升,這讓我們感到非常驚訝。
現在讓我更具體地談談特定的推理測試,在一些數學推理測試上看到了幾乎完全相同的趨勢。但有趣的部分是,當我們將其與PPO結合時,我們實際上看到了一個更大的提升,尤其是在引入更大的獎勵模型時。這非常有趣。當我們開始引入更具體的數學提示時,我們在這里看到了一個很大的跳躍。
因此,我們意識到,當我們專注于推理的提示時,情況就是這樣。這也是我們在偏好微調階段看到改進的方式。比如我們希望整合更多特定領域的數學問題。
我們把所有的發現匯總起來,然后設計了我們 2.3 模型中的偏好微調階段:
首先,我們非常謹慎地選擇提示詞。我們使用了在監督微調階段已經引入模型的一部分提示詞。我們引入了新的提示,專注于像推理領域這樣的特定領域,我們希望在這些領域看到更大的改進。同時,我們也引入了一些領域外的提示,并且發現這實際上也非常有幫助。
我們收集這些提示詞,并從一個非常大的模型集合中查看偏好響應,比如從 70 億參數的模型到像 GPT-4o 這樣非常強大的模型。我們開始比較它們之間的偏好,看看哪一個更好,這樣你的模型就會逐漸得到改進。我們還確保包含未請求的數據,確保將 Tulu 38B 和 70B 數據納入其中,因為這是符合策略的。
然后,我們使用 GPT-4o、LLaMa 這樣的模型作為評判,來為我們對這些四個維度(幫助性、指令遵循性、真實性、誠實性)的偏好進行排序。我們也嘗試了不同的 LLM 作為評判,但結果差異不大。它們的結果幾乎都差不多。
研究發現,我們在使用所有模型時看到了很大的提升。我們展示出,與之前的偏好數據混合集相比,我們看到了一個巨大的進步。同樣,我們進行了大量的數據混合分析,研究應該從監督微調(SFT)中引入多少初始提示,以及應該引入多少新的提示。這經過了大量的實驗,以確定最佳的混合比例。
我想在這里強調一點,對于 2.3 版本,我們決定在這個階段再次使用 DPO(直接近端偏好優化),因為我們還想訓練更大的模型,我們認為它的實驗速度更快,而且很有幫助。因此,我們對 DPO 做了很多改進,比如我們讓它進行了長度歸一化等。我們進行了大量的超參數調整,最終發現,這真的效果很好,尤其是在這里使用 DPO。
但對于我們的 2.3 版本,我們實際上引入了一種新算法。我們將其稱為“可驗證獎勵的強化學習”。當我們觀察偏好微調時,我們實際上是在訓練一個獎勵模型,這是一個為模型的某種輸出分配分數的神經網絡。
我們的想法是,如果我們使用一個更簡單的設置,僅僅使用一個驗證機制,會怎么樣呢?也就是說,如果我們生成的內容與標準答案等價,就返回 1,否則返回 0。所以它只是一個基于規則的、非常簡單的獎勵模型。
然后,我們訓練這個非常簡單、非常基礎的強化學習框架,訓練數據以提示的形式輸入。如果生成的結果非常好,我們就優化并改進我們的策略。
它對于這類推理任務非常有用,因為我們在一開始就已經提到,為復雜的數學問題標注思維鏈條是非常困難的。然而,在很多情況下,最終答案就足夠了。得出一個最終答案相對容易。或者我們處理的是一些生物學相關任務。對于所有這些任務,我們只需要兩種標注:原始提示和最終答案。然后我們就可以進行驗證。
我們甚至可以將其用于精確指令的遵循,如果給出一個非常復雜的指令,讓模型生成一些內容。然后,我想了解滿足的約束條件的百分比是多少,所以我們可以將這種驗證擴展到不同的階段。
這并不是一個全新的想法。但變化在于,現在的基礎模型,或者是在監督微調階段結束時的模型,已經得到了很大的改進。如今,我們能夠生成相對較好的思維鏈條,并將其與真實情況相對比,從而判斷它是否足夠好,是否不好,等等。
這就是我們的最終方案。我們使用最終答案或可驗證的約束來進行驗證。我們并不是在訓練中間的思維鏈條,而是讓模型自己生成思維鏈條。我們采用了經典的強化學習實現,特別是這里我們使用了 PPO 算法,并且我們嘗試了三個數據集。
結果是好的。以下展示是與這些數據集的基準對比,包括一些模型,比如DeepSeek V3、GPT-4o以及我們模型的不同版本,這些版本分別來自監督微調(SFT)、直接近端偏好優化(DPO)和可驗證獎勵的強化學習(RLV)。
這里有一個非常有趣的觀察:當我們處理一個更大的模型,比如 405B 模型時,我們在強化學習驅動的推理(RLDR)階段看到了更大的提升。所以,這條綠色的線顯示了在自動驗證強化(Auto VR)階段的不同輪次中,我們的數學推理能力提升了多少,而粉色的線則顯示了我們在處理 70B 參數模型時提升了多少。
這也與 DeepSeek V3 的發現非常一致,他們發現在處理更大模型時,強化學習帶來的改進更為顯著。這實際上是一個非常有趣的觀察。這也引出了我們在本次討論開始時提到的觀點,即如果基礎模型變得更好,那么我們對強化學習微調(RFM)的期望也會更高。
我們最近做了一個很小的改動,就是把 PPO 換成了 GRPO。我們借鑒了 DeepSeel 的想法,嘗試將強化學習的實現從 PPO 遷移到 GRPO,并將其應用于一個更好的基礎模型——QwenMath。我們在數學推理方面看到了顯著的提升。
我們在一個非常大的任務集合上進行了評估,這些任務涵蓋了推理、知識回憶、安全性等方面,且在所有這些方面都保持了良好的平衡,結果如下:
最后,我在這里提到的所有內容都與訓練有關,即如何從基礎模型發展到能夠進行推理的真實且良好的模型。我們在最近的一篇論文中,還沒有將其整合到 Tulu 配方中,但我們目前正在做這項工作,我們開始專注于數學類任務,即數學推理任務。
然后我們開始收集非常高質量的推理數據和更復雜的數學問題。我們最初收集了 6 萬個樣本,然后進行了大量的質量篩選,最終得到了 1000 個多樣化的樣本。然后我們生成了這種深度思考的推理鏈條,通過從 Gemini 思考模型中提煉出深度思考的標記。不久前,我們將其替換為DeepSeek R1推理模型。到目前為止,我們只進行了簡單的監督微調(SFT),結果非常好。
然后我們采用了一種非常簡單但令人驚訝的推理時擴展方法,得到了一個非常有趣的結果。我們允許模型在生成結果時有一定數量的標記預算,然后我們將這個標記預算從 512 調整到 2048,或者對于 GPQA 來說,調整到 496 等等。
如果模型沒有用完它的標記預算,我們就添加一種延續標記,后讓模型再思考一會兒。通過這種方式,我們發現模型現在能夠生成更好、更深入的推理路徑,這非常有趣。還有一個更有趣的事實:當我們沒有添加任何標記,只是簡單地讓模型生成更多內容時,我們并沒有看到這種效果。
二、領悟的 Transformer 是隱式推理器
俄亥俄州立大學的 Huan Sun 教授做了主題為“Understanding Reasoning in LLMs and Agents:From Grokking of lmplicit Reasoning to Test-Time Scaling with Verifiers”的演講,探討了從隱式推理的領悟到測試時通過驗證器進行的擴展。
首先來談談什么是隱式推理。
論文鏈接:https://arxiv.org/abs/2405.15071
當模型已經掌握了原子效應,我們希望模型能夠推理出多跳查詢,比如“奧巴馬妻子的生日”或者“比較年齡屬性值后,預測誰更年輕”等問題。我們希望模型能夠直接預測答案,而不是在模型內部進行語言化的思考,也不需要語言化地表達中間步驟。
CoT(思維鏈)現在非常流行。那么,為什么“隱性”的推理很重要呢?
首先,大規模訓練或預訓練的默認模式大多數情況下是不需要 CoT 的,所有數據都是可用的。實際上,為訓練提供推理器可能會非常昂貴。而且,從根本上來說,我認為這決定了語言模型從數據中學習事實和規則結構的能力。如果一個模型能夠在內部進行思考,那么它在壓縮和整合信息方面可能會更強大。
我們對這樣的結果感到好奇,想要了解其中的原因,于是我們開始了探索之旅,試圖回答以下問題:
Transformer 是否能夠學會隱式推理呢?又或者,是否存在一些根本性的限制,阻礙了模型獲得這種能力?
哪些因素會影響這種能力的獲取?是數據、技能、分布,還是模型架構?
這個數據集非常有趣。我們使用合成數據設置來控制研究,以便得出嚴謹的結論。
在我們的數據集中有兩種事實:一種被稱為原子事實(atomic facts),另一種被稱為推斷事實(infer factor)。
原子事實就像是知識圖譜中的每個邊,是單一關系,單一關系不能再進一步拆分,這就是原子事實。
而對于推斷事實,你可以將它們視為由原子事實組合而成的多跳關系。在這里,我們專注于兩種組合。例如,將“母親”這一關系和“出生地”結合起來,模型應該能夠回答這樣的問題:當提到母親的出生地是阿拉巴馬州時,模型能夠推斷出答案。這就是我們所說的推斷事實。
模型的目標是能夠歸納并應用潛在的規則。為了使模型能夠歸納出潛在規則,我們在訓練過程中提供了一種混合的原子效應和推斷事實。我們希望模型在訓練中能夠學會這些潛在規則,比如如何應用這些原子效應來推導出多跳事實。
例如,現在給定一個新的查詢,比如關于哈勃望遠鏡的查詢,我們希望模型在測試時能夠應用這些歸納出的規則,并正確回答這個新的多跳查詢。
但更有趣的是,我們有 ID 和 OOD 兩種設置,基本上涵蓋了分布內和分布外的所有情況。這意味著我們將所有的原子效應分成兩組:一組用于 ID 設置,另一組用于 OOD 設置。
對于用于 ID 設置的原子效應,我們會將這個集合中的所有原子事實進行組合,并將推斷出的事實劃分為訓練集和測試集。在這個測試設置中,我們稱之為 ID 測試集。對于另一組原子效應,我們會對這個集合中的原子事實進行組合,而這些推斷出的事實將被用作測試。
所以,你可以這樣理解:如果一個多跳查詢,比如(h,r1)、(h,r2)屬于 ID 設置,這意味著它們涉及的原子事實已經在訓練中與其他原子效應組合過。但如果這個多跳查詢屬于 OOD 設置,那么這些原子效應雖然在訓練中出現過,但它們與其他任何因素的組合在訓練中都沒有出現過。
我們在訓練集上訓練這個模型,并測試其在 ID 的表現。現在,我們先來看一下這兩個任務的學習曲線,可以觀察到,模型能夠達到完美的分布內泛化性能,但是,這需要在過擬合之后進行更長時間的訓練。
對于這兩個任務,正如你所看到的,過擬合大致發生在這里,這意味著模型在這一點上傾向于完美地擬合訓練性能,但它需要經過更多步驟的優化,才能使分布內泛化性能趕上并達到完美的表現。這種延長的訓練周期就是我們所說的“阻塞期”。
第二個發現是,我們來看一下藍色曲線。可以觀察到,在組合性任務中,Transformer 并沒有實現完全的泛化。所以,分布內泛化性能從未提升,但相比之下,它最終趕上并達到了完美的表現。
我們還發現,泛化速度與絕對數據量并沒有關系,而是與關鍵數據分布、特別是推斷事實與原子事實的比例密切相關。也就是說,比例越高,泛化速度就越快。
這似乎與之前的研究結果相矛盾,他們認為存在一個臨界數據量的概念,即所謂的“突破現象”。但我們認為實際上起決定作用的是推斷事實與原子事實之間的比例。
然而,仍有一些更重要的問題有待進一步探討。例如,泛化過程中發生了什么?為什么會出現泛化?為什么不同任務之間的泛化水平會有所不同?
這就需要我們進行更多的分析,以剖析在泛化過程中模型內部的工作機制。在這部分,我們使用了來自機制可解釋性文獻中的一些標準技術,稱為 Logit lens。
我們可以利用 logit 鏡頭將模型的內部狀態投影回輸入空間。例如,你可以看到這里的標記 r1 是最大的成分之一,我們將其視為代表 r1 關系的隱藏狀態。這是一個高層次的想法。因果歸因(Causal Attribution)的目的是衡量一個隱藏狀態與另一個狀態之間的因果關系。在這里,我們關注的是 r1 在第四層的隱藏狀態與目標預測之間的差異。
具體操作如下:在正常的運行過程中,我們輸入一個常規的查詢,然后生成最終的預測結果。這個過程是在模型已經過擬合之后進行的,因此模型總是能夠預測出目標。關鍵在于,我們還會進行一種干擾實驗,即用隨機采樣的 r1' 替換 r1,然后通過網絡獲取 r1' 的隱藏表示,并用它替換正常運行中 r1 的隱藏表示,觀察這一變化如何影響最終的預測結果。我們會多次重復這個過程,通過采樣許多不同的隨機實體,觀察最終預測結果的改變頻率。
在那之后,你可以將整個神經網絡視為一個從輸入到輸出傳播信息的計算圖。基于連接的強度,我們可以在那些連接非常弱的邊上進行剪枝。在經過阻塞或者在阻塞的最后階段,我們在模型檢查點(checkpoint)上進行機制分析。我們發現了我們所說的“泛化電路”,用于這兩個任務。讓我帶你看看這個,這對我們來說非常有趣。
對于組合任務,這個泛化電路是這樣的:它看起來像一個順序的或分階段的電路。你可以看到,在前四層,模型試圖檢索第一個事實。然后在最后四層,模型試圖檢索第二個事實。在前四層,也就是底層,模型試圖同時并行地檢索這兩個實體的屬性級別,這就是為什么我們稱其為并行的。然后在上層,模型試圖進行比較操作,并得出結論,比如 a 是否大于或小于 b。
我們還通過 Logit lens 檢查每個隱藏狀態代表的輸入 token。我們發現,這個隱藏表示實際上代表標記 B,它是橋接實體(bridge entity),也是 r1 的目標,并且這個隱藏表示還代表關系 r2。基本上,兩個關系確實被保留了,上層確實正在執行第二階段的知識檢索。
我們想要深入了解在 grokking(領悟)過程中發生了什么。因此,我們在 grokking 期間對許多檢查點進行了類似的分析,并跟蹤隱藏狀態與目標預測之間的因果聯系。這些特征實際上展示了隱藏狀態與最終預測之間的因果關系。兩者之間的差異被稱為在阻塞期間的變化。
同時,我們還跟蹤了 r1 在第五層的隱藏表示,以及 r2 在第五層的隱藏表示。我們通過大量樣本檢查橋接實體(bridge entity)的排名,以及 r2 在這些成分中的關系。這些特征非常密集。
總結一下這里的關鍵發現:首先,我們觀察到 r1 在第五層的隱藏狀態與最終預測之間的因果聯系顯著增強,這種變化在阻塞期間非常明顯。另一個有趣的現象是,r2 在第五層的隱藏表示逐漸出現,這意味著 r2 關系在阻塞期間得到了保留。此外,r1 在第五層的隱藏狀態始終是橋接實體,這表明原子效應在過擬合之前已經被記憶。因此,橋接實體始終存在,只是它與最終預測之間的因果強度在不斷增強。
基于這些證據,我們認為這表明模型在阻塞期間逐漸形成了操作。在 grokking 之前,模型很可能只是在進行記憶化操作,即將查詢直接與目標關聯。
那么,為什么會出現“grokking”現象?我們認為,在我們的模型訓練初期,會形成一個記憶化電路,它直接將輸入與目標預測關聯起來,而無需經過中間步驟。然而,在訓練的后期,隨著模型逐漸泛化,會形成一個泛化路線,這個泛化路線是從記憶化路線中分化出來的。
那么,為什么會出現這種分化呢?或者,為什么記憶化路線會在訓練后期被泛化路線取代?
這是因為在優化過程中,模型被激勵去變得更高效。從記憶化到泛化的轉變,我們可以從效率的角度來理解:記憶化路線需要存儲大量的事實,而泛化路線需要支持的事實數量要少得多。
此外,我們還可以從優化過程中的權重調整來理解這一點。在 grokking 階段,當模型達到完美的訓練性能后,模型開始優化權重,其中權重項會顯著減小。這表明模型試圖找到一種更簡潔的方式來保持相同的訓練精度。
那么,為什么這兩個任務并沒有總是實現 OOD 泛化呢?更根本的原因是,Transformer 架構的非遞歸設計阻礙了跨層的記憶共享,從而限制了模型在 OOD 任務中的泛化能力。
我們還嘗試了一個小規模的實驗環境:我們在模型的不同部分共享參數,比如前四層和后四層使用相同的參數,然后我們重新進行訓練,結果發現泛化性能有了顯著提升。但我們沒有等到它完全收斂,就像一個生成器達到完美性能那樣。我們認為這種參數共享的方式能夠解鎖更好的泛化性能,但這只是潛在的一種方法,還有其他方式可以改進架構。
三、統一符號結構與神經網絡表示
Meta GenAI 的田淵棟教授做了主題為“Towards a unified framework of Neural and Symbolic Decision Making”的演講,探討了邁向神經與符號決策的統一框架。
今天,我們仍然能看到大語言模型(LLM)存在一系列問題,關于這一問題有幾種不同的方法可以解決:
首先,當然你可以將越來越多的數據輸入到模型中,希望能夠通過數據量的增加來幫助模型更好地學習;
第二,我們希望利用測試時擴展(test time scaling)。也就是說,我們可以使用更大的模型加上工具,或者更大的模型加上思維鏈。通過這種測試時擴展,使用不同的策略,我們最終可能會找到一個比單純的大模型更好的解決方案。
最后,我會簡要介紹我們最近的一些理論研究,這些研究試圖將符號結構與神經網絡表示統一起來。實際上,通過使用梯度上升(gradient ascent)對神經網絡進行訓練,我們可以發現符號結構逐漸出現。通過這種方式,我們實際上看到了符號表示和神經表示在同一框架內的統一。但目前這還處于非常初級的階段,希望未來它能成為主流,但我們還不確定。
就像在第一種選擇中,我們需要大量的計算資源、大量的數據,而且這非常昂貴。所以,我們不確定這種方法是否適用。
第二種選擇是測試時擴展。接下來,我會稍微講一下這兩個部分:第一部分是工具的使用,第二部分是使用某種思維鏈。
對于工具的使用,我們實際上可以調用外部工具來解決推理問題。以旅行規劃問題為例,我們并不是讓用戶直接向模型提問,而是讓模型首先將用戶的需求轉化為符號形式。這個符號形式能夠準確地描述用戶的需求。然后,結合來自外部的航班和酒店信息,將這些信息整合成一個大型的優化問題,并通過混合整數線性規劃(一種組合求解器)來解決。
這個求解器會給出最優行程的符號表示,然后你可以通過現有的大模型將其翻譯回自然語言,從而得到由 Agents提供的答案。通過這種方式,你可以得到一個有保證的解決方案。同時,這個過程并不慢。如果你走完整個流程,它實際上是非常快的。
我們基于這個思路構建了一個演示,在兩到三秒內,就能得到一個保證正確的解決方案。當然,這是在用戶請求被準確翻譯的前提下,大模型的翻譯是相當準確的。你可以看到有一個兩秒的延遲,但整個演示仍然可以很好地運行。此外,我們還讓人類標注員進行了測試,他們對結果非常滿意。
當然,如果你考慮到旅行規劃,我們也會希望讓 Agents提出澄清性的問題,也就是說,我們希望 Agents 能夠真正思考用戶請求中缺少的細節,并且判斷 Agents 是否可以提出越來越多的問題來澄清這些細節,以確保他們理解用戶的需求。
這促使我們開展了一項后續研究,探討如何構建多輪對話,以便 Agents 能夠更有效地與人類互動。
我們基本上是通過要求 Agents 遵循 Agents 章程來構建的。也就是說, Agents 需要根據幾項標準進行評估。有些標準是非常客觀的,而有些則是比較主觀的。所謂客觀,是指 Agents 最終需要得到一個準確的答案。同時, Agents 還需要積極主動地針對特定人物提出正確的問題。因此,Agents 在進入實際解決方案之前,還需要高效地完成所有問題的提問和回答。
我們基本上以一種有指導的方式進行了這種直觀的 DPO(可能是某種優化方法)和項目采樣,并且我們已經展示了,通過這種方式訓練的 AB 模型在多輪對話的多個方面,相比沒有經過這種訓練的原始 700 億參數模型要好得多。
第一部分是我們實際上可以利用工具來解決復雜的規劃問題。第二部分,我會稍微講一下更大的模型加上思維鏈,以及如何構建思維鏈來解決這些棘手的規劃問題。
為了開始這個話題,讓我們從第一篇論文開始,這篇論文的標題是“Searchformer”。在這篇論文中,我們利用現有的組合求解器的軌跡來構建思維鏈。
當我們思考導航問題時,我們有一個起點和一個終點,然后我們要求模型找出從起點到終點的最短路徑。在任何階段,我們既可以要求人工,標注也可以要求符號求解器對問題進行建模,并通過符號搜索來解決問題。A*算法(啟發式搜索算法)會打開一個優先級表,這個表基本上會找到搜索中需要探索的下一個正確狀態。
然后,按照探索的方式,我們最終會找到通往目的地的路徑,并且它會保證給你一個最優的軌跡。因此,按照A*算法的搜索過程,我們可以構建如下所示的思維鏈。我們從一個提示開始,這個提示是問題規范的表示。
然后,我們可以通過像轉儲整個A搜索過程一樣來構建一個軌跡。每次A搜索器在搜索空間中創建一個新節點時,我們實際上就在軌跡中插入一個創建操作;每次A*搜索器關閉一個節點時,我們在軌跡中插入一個關閉操作。因此,我們基本上會得到一個很長的軌跡,然后一旦開始找到目標,我們就會插入一個計劃,這個計劃輸出最終的最優軌跡。
這基本上為你提供了一個搜索增強模型的基本框架。我們有一個作為輸入的提示,同時我們還要求模型生成軌跡和計劃。這與僅輸出解決方案的模型形成了對比。在那些模型中,我們從一個提示開始,然后直接要求它們輸出計劃。
當然,生成的標記(token)數量會有很大不同。這篇論文是在 2024 年年初發表的,那時候,人們還沒有充分意識到使用非常長的思維鏈來解決復雜規劃問題的強大能力。但現在,我認為每個人都已經意識到這一點了,人們開始接受使用非常長的軌跡來解決問題。
我們發現,使用這種帶有軌跡增強的搜索增強模型時,情況會有所不同。我們看到,如果你只使用僅輸出解決方案的模型,那么你需要 100 萬樣本才能達到接近 100% 的準確率。但如果你使用搜索增強模型,你實際上只需要十分之一的數據量,同時,你也只需要十分之一的參數量,就能達到類似的性能。所以,搜索增強模型不僅更簡單高效,而且在參數使用上也更加高效。
這種情況也適用于其他類型的規劃任務,比如讓 Agents 將箱子推到目的地,這需要非常謹慎的規劃。因為如果箱子被推到角落,就沒有回頭路了。
一旦我們有了這些操作模型——這些模型基本上是通過模仿學習實現的——我們可以通過在這些搜索增強模型的基礎上進行微調來做得更好。具體來說,我們可以通過微調這些原始模型,使其生成更短的軌跡,但仍然保持最優的計劃。這其實是一個非常典型的強化學習任務,因為目標是明確的,但我們不知道如何實現這個目標。所以,我們讓強化學習 Agents 去探索并找到解決方案。
通過“Searchformer”,我們發現最終得到的模型比原始的 A* 搜索模型更好,因為它具有更短的搜索軌跡。這是由于采用了“直觀地址采樣”(Intuitive Address Sampling),這是一種簡化的強化學習版本。
從數據上看,我們發現減少后的軌跡與原始A*軌跡之間的比例越來越高,這意味著從數值上來看,這種情況確實存在。
不僅如此,我們還發現,不僅軌跡變得更短,而且經過微調后的性能也在不斷提高。每次迭代后,解決方案達到最優的比例越來越高。在這種情況下,你已經可以看到,擁有 45M 個參數的模型——這里的參數指的是模型的參數數量——實際上可以與用 700M 個參數訓練的模型相媲美,而后者是用一個更大的數據集進行訓練的。
這非常有趣,我相信這是最早展示在測試時間和訓練推理數據上存在某種“皮膚法則”(可能是指某種優化或提升性能的規律)的少數論文之一,這種法則有可能提高閱讀任務的性能。
我們還有一篇論文叫作“DualFormer”。在這篇論文中,我們嘗試減少用于訓練的軌跡的大小和長度。你可以隨機地丟棄一些搜索軌跡中的token。
論文鏈接:https://arxiv.org/abs/2410.09918
這種丟棄 token 的方式可以有很多種。例如,你可以丟棄所有帶有成本的子句,甚至你還可以直接丟棄整個軌跡。這意味著我們實際上是在解決方案數據和搜索增強數據的混合體上進行訓練。
這種訓練方式非常有趣,最終得到的模型也非常強大。因此,我們最終得到了這種雙模式模型,它可以自動在快速模式(即直接給出答案)和慢速模式(即通過思維鏈給出答案)之間切換。也就是說,你可以擁有一個同時具備這兩種能力的模型,并且它在兩種模式下都比單一模式的專用模型表現更好。
我們在兩種模式之間切換方式非常簡單——你只需要讓雙模式模型的第一個生成標記要么是搜索開始標記,要么是計劃標記,這樣模型就會直接給出最優答案。也就是說,你只需要固定第一個標記,模型的行為就會大不相同,它會表現出快速模式或慢速模式的性能。
經過訓練,我們發現這種模式比單獨的快速模式更好,也比單獨的慢速模式更好。這是一個非常有趣的發現。
我們還注意到,DeepSeek 也表現出類似的行為。在 DeepSeek 的同步模式中,有一些技巧。如果你有兩個空格,在同步 token 之后,模型生成的同步序列往往會更長一些。如果你在同步 token 之后只有一個返回,那么模型生成的內容往往會更短一些。
我認為這可能是因為他們用來訓練模型的數據具有這種特定的結構,而模型在學習過程中會捕捉到這些結構,從而作為一種副作用來控制模型的行為。我們很高興看到這種行為也出現在最先進的大型模型中。
我們也將雙模式模型應用于數學問題,基線模型會有一個非常長的思維鏈。但一旦你隨機丟棄一些句子,并用這些數據進行微調,會非常驚訝地發現,序列的長度會基本保持不變,同步標記會變得非常短,而且短得多。同時,生成的內容仍然是合理的,并且能給出正確的答案。
這種行為挺有意思的。我們是在基礎模型上進行這種大規模微調。這些是基礎模型,它們并不是針對特定任務優化的,所以性能并不算出色。但即便如此,你仍然會看到性能有所提升。
四、基于 API 的網絡智能體
卡內基梅隆大學的 Graham Neubig 教授做了主題為“LLM Agents that Learn from Experience”的演講,展示了其近期一項名為“Beyond Browsing: API-based Web Agents”的研究工作。
論文鏈接:https://openreview.net/forum?id=TPiJKs7ccR
我們實現了一個基礎的瀏覽 Agent。它基于無障礙功能樹運行,能夠在簡單布局的網頁上合理地導航并填寫表單。這就是我們的基線模型,也是我們在“Agents工作流記憶”論文中所使用的基線模型。
但挑戰在于無障礙功能樹結構的復雜性,許多語言模型對此并不熟悉。當內容并非立即可見時,導航也會變得棘手,因為你需要滾動頁面、切換頁面,以及其他類似的操作。
一個失敗的例子是詢問:“Saptaks 對 Allyproject 做了多少次提交?”于是, Agents嘗試進行瀏覽,它試圖訪問 GitLab.com,使用憑據登錄,點擊項目,點擊提交記錄,然后不斷向下滾動、向下滾動……最終,它耗盡了時間,并得出結論說沒有找到任何提交記錄,因此它認為沒有提交發生,提交次數為零。
另一方面,我們還有另一種與環境交互的界面。這可以是像調用API這樣的方式。它為機器與網絡服務之間的通信提供了一個直接的接口,減少了操作復雜性,并且理想情況下,我們會得到更好的結果。
如果我們看看 API,它們是預定義的端點,允許計算機高效地執行任務,并通過 GET、POST、PUT 等請求實現交互,返回結構化數據,比如 JSON。有趣的是,我們在標準基準測試(比如 Web)中使用的許多網站已經提供了 API,所以在許多情況下,這些 API 已經存在。如果我們能夠恰當地使用它們,我們就可以通過 API 與這些網站進行交互。
在許多情況下,我們已經這樣做了。但有時,雖然有API,但文檔并不完善。不過幸運的是,這也是語言模型擅長的事情。你可以直接讓語言模型為 API 生成文檔。
這是一個例子,在一個 API 文檔中,它會告訴你屬性的類型、屬性的描述,以及 API 的輸出會是什么,以及你可以如何執行調用。API調用本質上是通過調用代碼實現的。你可以使用requests.get這樣的請求,而這就是一個響應的例子。
我們考察的是,如果我們把傳統上由瀏覽 Agent 解決的任務,讓 AI Agents 通過 API 來完成,會怎么樣呢?
這是我們基于 API 的 Agents。我們的實現方式是使用我們 Agents 框架中的標準編碼 Agents(OpenHands),并以我接下來會講的方式,為它提供對 API 的訪問。
在過去,我們需要在網站上一步步地操作,執行許多不同的步驟,以及其他類似的操作。但在這種情況下,你只需要用三行 Python 代碼就能解決任務。
那么,問題來了,你知道的鑒于 API 調用的好處,我們應該完全拋棄網頁瀏覽嗎?當然,答案是否定的。如果我們查看一百個隨機抽樣的任務的錯誤分布,當我們將 API 提供給模型時,會發現其中大約三分之一的任務實際上是正確的,但 WebArena 的驗證器卻判定它們是錯誤的,而另外 50% 的任務根本無法通過 API 解決。
原因在于,并非所有網站都提供全面的 API 支持。它們并非都有完善的 API 文檔,而且網站的深度復雜性也是一個問題。
因此,我們提出的一個解決方案是創建一個混合 Agent。這種 Agent 能夠交替執行瀏覽和 API 調用操作,并且在每一步中,它會選擇與人類溝通、生成自然語言、執行 Python 代碼(包括API調用)以及執行網頁瀏覽操作。
我們根據當前可用的 API 的質量來選擇操作:
我們提示 Agent,如果存在足夠的 API,就應該嘗試使用 API。但如果足夠的 API 不存在,它就可以回到瀏覽模式。在其執行軌跡的最后,當它完成了所有需要做的事情后,我們要求 Agent 訪問一個能夠為用戶提供答案的網頁。這樣做的想法是,它可能會使用 API 調用,但最終會將結果展示在網頁上。這也符合 WebArena 評估的要求,即需要訪問特定的 URL。
我們在 WebArena 上評估了我們的 Agents框架。我們使用了 OpenHands,這是我們正在開發的一種兼具編碼和瀏覽功能的 Agent。
如果你查看 Agent 的性能,我們在多個網站類別上對其進行了評估,發現在某些特定類別上轉向使用 API 后,性能有了顯著提升。例如,在 GitLab 和地圖上,轉向使用 API 后性能大幅提升;而在 Reddit 和管理類網站上,轉向使用 API 后性能提升較小,但當我們切換到使用混合 Agent 時,性能有了更大的提升。
那么,問題可能就來了,為什么會這樣呢?其中一個原因是 API 的質量很重要。GitLab 和地圖的 API 非常好,它們允許你完成在這些網站上需要做的大多數事情。而購物和管理類網站的 API 還算可以,但在 Reddit 風格的任務中,API 的覆蓋范圍非常差,這導致了在 Reddit 上使用 API 的效果不佳。
我們所做的就是查看了所有的 API,并且編寫了一些新的 API。雖然數量并不多,但我們手動編寫了幾個,這使得在 Reddit 上使用 API 的 Agent 的準確率翻了一番。所以,擁有高質量的 API 對于網站來說是很重要的。
但就這項工作的未來方向而言,其中之一是獲取或生成合適的 API。那么,我們如何能夠自動生成網站的 API,以便我們能夠調用一個函數,而無需 Agent 事先具備該函數、以及改進端點的檢索和利用?我們可能會有非常豐富的 API,如何從中篩選出我們需要的部分呢?
未來需要我們繼續探索,探索的方向如下:
五、AI 新前沿:形式化數學推理
加州大學伯克利分校的 Dawn Song(宋曉冬)教授做了主題為“Formal Mathematical Reasoning: A New Frontierin Al”的演講,探討了 AI 的新前沿——形式化數學推理。
論文鏈接:https://arxiv.org/abs/2412.16075
AI 在形式化數學中有廣泛應用。事實上,我們可以利用各種經過形式化驗證的工具,比如定理證明器等。而且,實際上存在許多不同類型的定理證明系統。
例如,在 Lean 中,當我們使用 AI 進行形式化時,本質上有一個工作流程。一旦我們有了形式化的定理陳述,我們就希望使用定理證明器來生成形式化證明。
在這一過程中,這一步是 AI 可以自動化的步驟之一。然后,生成的形式化證明和經過驗證的定理可以被納入形式化數學庫。
此外,我們可以使用自動形式化(auto formalization)將非形式化的數學內容轉換為形式化的數學陳述。
在這個工作流程中, AI 可以在多個步驟中提供幫助。其中一個關鍵步驟是,給定一個定理陳述,我們需要進行證明搜索,以遍歷證明樹,最終找到一個有效的證明。我們希望利用 AI ,特別是利用這些大語言模型,能夠構建出 Proof Agents,從而使這一證明搜索步驟自動化。
此外, AI 還可以幫助自動形式化,即將自然語言中的非形式化數學陳述轉換為形式化的數學定理陳述。例如,最新的研究和模型已經展示了如何利用大型語言模型(如 Goedel-Prover)將自然語言數學問題翻譯成形式語言(如 Lean 4),并自動生成完整的證明。這種自動形式化技術為數學形式化推理提供了新的可能性,顯著提升了數學問題的形式化和證明效率。
近期 AI 在形式化數學領域也取得了許多進展。例如,谷歌 DeepMind 的 AlphaGeometry 2 在解決國際數學奧林匹克競賽(IMO)幾何問題上取得了接近金牌水平的成績。此外,Goedel-Prover 作為開源的形式化推理模型,通過將自然語言數學問題翻譯成形式語言(如 Lean 4),并自動生成完整的證明,顯著提升了形式化數學問題的解決效率。
盡管整個社區已經取得了非常顯著的進展,但我現在想簡要介紹一下一些開放性挑戰和未來發展方向。
首先就是數據問題。
一般來說,在數學領域,尤其是形式化數學中,我們面臨數據稀缺的問題。例如,對于訓練Code Llama,其訓練數據集大約有 5000 億個 token,但當我們看這些證明時,可用的證明數據量卻遠遠少于這個規模,甚至相差幾個數量級。因此,對于這些領域,開發各種方法來解決數據稀缺問題顯得尤為重要。
為了解決形式化數據的稀缺問題,幸運的是,我們確實有一些很有前景的方向,可以提升這些形式化數據的可用性。
首先是通過自動形式化來創建數據。這種自動形式化本質上是訓練大型語言模型,使其能夠將非形式化的數學內容自動轉換為形式化的數學陳述。
鑒于我們有大量的非形式化數學內容,比如教科書和其他各種材料,通過成功的自動形式化,我們可以自動地生成這些形式化的數學陳述。我們最近在利用反饋循環來改進大型語言模型的自動形式化方面,已經看到了令人興奮的進展。
另外,最近我也了解到,AlphaGeometry 能夠支持形式化步驟,生成大約 1 億個形式化問題陳述。這也顯著促進了它在最近的國際數學奧林匹克競賽(IMO)中取得的成功。
此外,AlphaGeometry 在 IMO 中的成功還歸功于它生成合成數據的另一種方式。它通過幾何規則生成了 1億個合成定理和證明,從而幫助它成功解決了 IMO 中具有挑戰性的幾何問題。這也為解決數據稀缺問題提供了一個很好的例子。
解決數據稀缺問題的另一個有前景的方向是合成數據生成,我們稱之為“神經猜想”(neuro conjecturing)。
其核心思想是,可以開發模型來為定理和引理生成猜想,然后利用定理證明器嘗試自動證明這些猜想。如果成功生成了證明,那么這些經過驗證的猜想就成為了定理和引理,并可以被添加到陳述和證明的庫中。
這可以幫助產生額外的數據,進一步幫助訓練模型,使其在生成更好的猜想和證明方面表現得更好。到目前為止,我們已經在相對簡單的引理和定理上看到了這方面的進展,因此未來我們可以在這方面努力,顯著提高能夠猜想和證明的定理的可擴展性和難度水平。
在這一領域,我們需要解決許多不同的算法挑戰。例如,對于自動形式化,我們該如何擴展自動形式化?我們如何高效且有效地進行證明搜索?我們如何利用理論改進中的層次結構,以及如何真正學習數學抽象?此外,我們如何利用現有的數學知識,以及如何調和專家型和通才型方法?
首先是,我們如何真正實現大規模的自動形式化?在進行自動形式化時,實際上存在許多挑戰。
因為我們進行自動形式化時,并沒有后續的驗證步驟,所以我們無法確切知道其他形式化的陳述是否真正正確。我們需要對它們進行評估,并且需要開發良好的指標來評估這些形式化的陳述。
此外,我們還需要能夠自動驗證這些自動形式化的陳述,理想情況下是利用改進的形式化步驟等。因此,我們的期望是,對于復雜的自動形式化任務,我們實際上可以將其分解為更小的步驟,然后與形式化系統進行交互以提供幫助。
對于評估自動形式化的陳述,有幾個原因使其相當具有挑戰性。首先,我們不能依賴人工評估,因為這種方法無法擴展。而對于其他形式化的陳述,通常存在不同的形式,即存在多種正確的方式來完成形式化,而自動等價性檢查本身其實并不簡單。
因此,為了應對這一挑戰,我們需要利用像以太坊證明器這樣的正式驗證系統。我們希望借助定理證明器的反饋,迭代式地改進自動形式化。
另一個挑戰是如何更高效、更有效地進行證明搜索。這當然是使用 AI 進行形式化數學的一個關鍵目標。對于理論改進,有許多不同的方面和組成部分。我們可以做的是,從本質上提升證明搜索的能力。
推理時間計算的擴展(即擴大推理時的計算量)對提升這些模型的通用推理能力非常有幫助。我們希望,增加測試時的計算量也能幫助加速證明搜索,這本身也是非常自然的契合。
此外,我們還希望開發更好的價值模型,以幫助評估和優先排序不同的證明目標,以及證明搜索樹的不同部分。同時,我們希望系統地評估模型和搜索算法,并設置參數,以便能夠開發出更適合證明搜索的模型。
到目前為止,我們已經看到,擴大測試時的計算量對于提升模型的推理能力非常有效。比如在 AlphaGeometry 和 AlphaProof 等項目中,理論改進是一個非常自然的方向。通過在證明搜索過程中增加計算量,我們可以幫助提升模型的證明搜索能力。
另一個重要話題是我們如何引導并更好地優先排序研究。特別是,我們需要開發更好的價值模型,以幫助評估和優先排序證明目標。因此,一個關鍵的挑戰和未來方向是如何更好地訓練價值模型,以及我們如何獲取更好的數據并利用獎勵模型(RM)來幫助解決這些問題。
目前在形式化數學中使用 AI 的方法,例如 DeepSeek Prover 等工具,通常是直接生成完整的證明,而沒有充分利用證明搜索。這種方法雖然在某些情況下有效,但缺乏對不同搜索算法(如蒙特卡洛樹搜索、最佳優先搜索等)的整合。因此,我們希望對這些不同的算法進行系統性評估,以開發出更好的解決方案。
另一個開放性挑戰和正式的研究方向是,我們希望更好地利用定理證明中的層次結構。特別是在理論證明中,當你面對一個復雜的定理時,通常即使是數學家手動證明時,也會將這些復雜定理分解為一些不同層次的高級證明目標,以及一些不同的高級引理等。然后,這些復雜的定理會被進一步分解為更小的目標,依此類推。
這很重要——正如我們在形式化數學中應用 AI 一樣,我們也需要開發具備這種能力的模型,能夠逐步將高級證明目標分解為更小的目標。
所以,我們并不是主張用形式化數學的 AI 來取代非形式化數學的 AI。事實上,非形式化數學的 AI 和形式化數學的 AI 之間存在著一種自然的協同作用。重要的是將兩者結合起來,本質上是將非形式化推理的靈活性與形式化推理的嚴謹性結合起來。
例如,對于非形式化的陳述,我們可以嘗試對其進行自動形式化,然后利用形式化驗證和改進等手段來驗證其正確性。對于非形式化的定理陳述,以及用于非形式化數學的模型,它們可以幫助生成例如非形式化的證明草圖,這些證明草圖隨后可以被轉化為形式化的證明草圖,并最終生成經過驗證的形式化證明。
通過這種方式,非形式化數學部分可以幫助提升生成形式化證明的可擴展性、靈活性以及提供高層次的直覺,而形式化證明則可以為這些非形式化證明提供驗證。沒有這樣的形式化驗證,就無法真正推理并確保非形式化證明的正確性。
即使是數學論文和密碼學論文等領域的非形式化證明,有時也會出現錯誤。而對于 AI 生成的非形式化證明,出現錯誤和漏洞的可能性甚至更高。因此,將非形式化和形式化結合起來,最終生成經過形式化驗證的證明,是非常重要的。
通過將兩者結合起來,模型可以生成多種非形式化的解決方案,最終,正確的解決方案將被形式化地驗證。
另一個對于數學的可擴展性等來說也很重要的是學習數學抽象。
具體來說,無論是人類數學家還是數學系統,一般來說,這些抽象——比如開發新的定義和元素——實際上對于解決更復雜的數學問題至關重要。
我認為,這尤其是一個令人興奮的領域和方向。對于形式化數學中的 AI 而言,這不僅是一個挑戰,也是對模型創造力的考驗,即模型如何學會構建這些新的定義、引理和策略,并將其應用于完整的證明輔助中,以便在未來證明中也能被利用。
最近在學習簡單的證明策略方面已經取得了一些進展,這些策略是通過引導式的方法從智能體自身解決數學問題的過程中得來的。我認為這是一個非常有前景且令人興奮的領域,即我們如何能夠本質上訓練模型以及證明智能體,從而使其能夠更好地從自身以往的經驗中發現并學習抽象。
隨著我們持續推動這一正向循環,我們將繼續生成新的數據,并通過自動形式化等方式,不斷擴大定義、數學陳述、定理等的庫。在證明搜索過程中,能夠利用庫中現有的知識來檢索相關的定理和陳述等,對證明 Agents 來說是非常有幫助且至關重要的。因此,一個開放性挑戰和未來方向是如何設計出更適合這種形式的數學以及利用這些數學庫的更好的模型和檢索機制。
另一個有趣的問題是,如何調和專家型和記者型的方法。記者型方法能夠識別跨領域的聯系,而專家型方法則在各個具體領域中表現出高效性。我們希望可以將這兩種方法結合起來,例如通過為模型配備特定領域的工具等方式。
現在,我將簡要談談兩個主要應用領域的開放性挑戰和未來發展方向,一個是在輔助人類數學家發展更好的數學,另一個是在程序生成、共生成和驗證領域。
對于形式化數學(AFFMO),其動機和價值在于,我們希望這些工具能夠真正幫助人類數學家通過解決具有挑戰性的數學問題、開發新的定理和證明等,在形式化數學領域取得進展。
我們希望利用 AI 開發出更好的工具,融入數學研究的工作流程中,為人類數學家提供證明輔助,與人類數學家攜手合作,共同攻克具有挑戰性和前沿性的數學問題,生成相關證明等。
為了使這些工具真正發揮作用,本質上我們需要開發更好的工具,這些工具不僅用于自動化寫作,生成自動化的證明步驟,還需要更好地理解數學家如何使用 AI ,比如開展行為研究來觀察數學家與 AI 的互動。最終目標是為數學家開發出更好、更有用的工具。
我們希望借助這些工具,能夠真正實現大規模的分布式協作,讓分布在全球的數學家與 AI 工具攜手合作,將大型項目分解為不同的組件,整個社區共同攻克具有挑戰性和復雜性的數學問題。
另一個非常重要的應用領域是代碼生成和程序驗證。
它的目標不僅僅是利用 AI 來解決數學問題,更重要的是,它可以幫助從程序驗證的角度來構建正確且安全的程序。
如今,與 LLaMA 相關的代碼生成已經得到了廣泛的應用。有估計表明,在一些公司和項目中,超過 50% 的代碼現在是由LLaMA生成的。但與此同時,確保生成代碼的正確性和安全性面臨著巨大的挑戰。例如,通過幾個測試用例可以看到 AI 生成的代碼不一定是正確的。
所以,我們不應該僅僅生成代碼,而應該進行可驗證的代碼生成——即在生成代碼的同時,還要生成代碼的形式化規范、以及證明生成的代碼符合這些形式化規范的形式化證明。
比如我想為這個問題生成代碼,計算變量的絕對值函數,那么我們實際上可以生成代碼的規范,同時也能生成證明。通過這種方式,就可以確保生成代碼的正確性。
綜上,我已經討論了 AI 在形式化數學領域的多個不同方向和應用領域中的開放性挑戰和未來發展方向。
我認為,在這個領域,接下來的五年將會非常令人激動。我們希望將整個社區凝聚在一起,共同推動 AI 在形式化數學和定理證明領域的發展。
六、Goedel-Prover:自動定理證明領域的開源模型
普林斯頓大學的金馳教授做了主題為“Goedel-Prover: A Frontier Model for Open-Source Automated Theorem Proving”的演講,探討了Goedel-Prover這一開源的大模型,通過將自然語言數學問題翻譯成形式語言(如 Lean 4),并生成形式化證明,從而解決形式化數學陳述和證明稀缺的問題。
在這次演講中,我會介紹我們開發的系統:Goedel-Prover。這個名字來源于 G?del(哥德爾),一位在形式化系統領域非常著名的數學家。Goedel-Prover 是一個開源模型,在自動定理證明方面達到了當前的最佳性能水平。
論文鏈接:https://arxiv.org/abs/2502.07640
我首先會稍微談談評估,因為我之前提出了一個比較大膽的主張,說我們達到了最佳性能水平。所以,這就引出了一個問題:我們如何評估模型,以及我們如何判斷一個模型是好的,另一個模型是不好的。
正如前述,形式化數學的一個重大挑戰是數據稀缺。現有的訓練數據和評估方式在某種程度上是有限的,這是開源社區中主要的數據集和基準測試。訓練數據本質上是既包含 Lean 中的問題陳述,也包含 Lean 中的證明。
也就是說,我們為你提供了這些問題陳述的形式化證明,還有評估數據集,其中很多數據集只包含問題陳述,沒有證明。也就是說,我們需要讓模型自己生成證明,并讓 Lean 編譯器檢查這些證明是否正確。
其中非常著名的一個是數據集 MiniF2F。很多模型都在這個數據集上進行了評估。它包含了不同難度級別的數學問題,有些非常難,有些則相對簡單。
所以,很多事情都會集中在 MiniF2F 基準測試上,我們會說它包含 244 個驗證問題和 244 個測試問題。這些問題涵蓋了極具挑戰性的數學問題,比如國際數學奧林匹克競賽(IMO)、AIME(美國數學邀請賽)、ACM(美國計算機協會)相關問題,以及不同難度級別的代數問題(從5級到1級)和數論問題(從5級到1級),還有許多其他類型的問題。
在我們討論完評估數據集之后,我們還會評估性能。我們還希望討論一下在我們之前,什么是最佳模型(SOTA,State of the Art)。為了能夠進行非常公平的比較,生成這種形式化數學的系統主要有兩種類型:
一種是整體證明生成的風格。本質上,你有一個語言模型,它會在給定問題的情況下一次性生成整個證明。一個具有代表性的模型是 DeepSeek Prover,比如 DeepSeek v1 或 DeepSeek v1.5。評估這類模型的一個非常重要的指標是,你需要生成多少個證明(比如你采樣了多少個證明),才能得到一個正確的證明。
換句話說,我們可能會說“通過率達到32次/6400”,這意味著你實際上生成了大約20萬個證明,只要其中有一個證明是正確的,有一個證明通過了Lean編譯器的驗證,我們就可以說我們解決了這個問題。因此,“通過率”是一個在評估整體證明生成中非常重要的指標。
另一種類型是樹搜索方法。與一次性生成整個證明不同,這種方法是逐步生成的。在生成一步之后,我們會使用某種樹搜索算法,比如廣度優先搜索或最佳優先搜索等,來搜索可能的最佳下一步。一些代表性模型,比如InternLMs 和 AlphaProof 系統(我認為它既用于幾何問題,也用于代數問題),都采用了這種基于樹的方法。
我們只與整體證明生成系統進行比較,因為我們的模型 Goedel-Prover是一個整體證明生成系統。不過,我們也有其他方法可以與開源的樹搜索方法和內部方法進行比較。我們沒有與 AlphaProof 進行比較,因為它是一個閉源系統,盡管它的性能非常好,但到目前為止,該模型并未開源。
首先,我會關注小型化數據集。我們在路徑集32上進行了評估,此前的最佳水平是DeepSeek Prover,他們在經過監督微調或強化學習后有一些變體。在路徑32上,這是一個相對較小的預算,比如采樣推理時間,他們達到了大約50%的準確率。而我們的模型在路徑32上達到了57%的準確率,比之前的最佳水平高出7個百分點。
你也可以問,當我們增加推理計算量時,我們的模型表現如何。這就是這張圖展示的內容。我們可以看到一些一致的改進,我們的模型與DeepSeek Prover之間大約有7個百分點的性能差距。
第二點是,我們還希望在 PutnamBench 上評估我們的模型。這是一個包含所有永久性數學競賽問題的基準測試,這些問題極具挑戰性。我們在該基準測試中獲得了第一名,解決了七個問題。我認為第二名的模型也解決了七個問題,但它不是開源的。我們排名第一,是因為我們實際上使用了更少的推理時間和計算資源,我們通過了512。
其他一些成果,比如我們之前提到的 Lean-Workbook,它是一個龐大的訓練數據集,但不幸的是,其中只有很小一部分訓練數據是有證明的。比如,他們提供了大量的問題陳述,但其中只有很小一部分問題陳述附有證明。
因此,以前的模型或者現有的所有工作,總共只能找到大約 1.5 萬到 5 萬份 Lean-Workbook 的證明,而我們的模型能夠找到大約 3 萬份,幾乎是之前找到的證明數量的兩倍。這也在我們測試的多個數據集上得到了體現,包括miniF2F、ProofNets 和 FormalNuminous,這些是我們用作基準的內部數據集。
在介紹完我們的性能之后,我還想稍微說一下我們是如何實現這一成果的。
事實證明,我們的整體方法并不復雜,這正是我喜歡的——它非常簡單且清晰,我認為這作為一個起點,對于推動自動定理證明的發展是非常好的。
形式化數學中最關鍵的挑戰之一就是數據稀缺。
盡管 DeepSeek 聲稱他們形式化了很多大型數據集,但不幸的是,在開源社區中,可用的數據集和數據非常稀少。你可以看到,我們大約有 1000 萬非形式化的問題,但形式化的問題陳述卻少得多,例如,我們只有大約 40 萬形式化的問題陳述,以及僅有 1.5 萬個形式化的證明,這個數量是非常非常少的。基于這樣少量的數據,要訓練出一個好的證明器是非常困難的。
所以,我們首先需要做的是獲取更多形式化陳述,以便我們能夠獲得更好的訓練基礎,我們需要獲取更多的陳述和更多的證明。對于陳述,我們采用了自動形式化的途徑。因此,我們首先收集了大量既有形式化又有非形式化陳述的配對。這些是我們同時擁有形式化和非形式化陳述的數學問題。我們從 Lean-Workbook 中獲取了 14 萬個這樣的配對,它們同時提供了形式化和非形式化的陳述;此外,我們還從云端生成了另外 17 萬個配對。
第二件事是我們需要訓練一個形式化器,因為僅僅 10 萬個問題陳述是不夠的。為了做到這一點,我們訓練了我們自己的形式化器。我們從 Qwen2.5-32B 模型開始,將這些形式化和非形式化的陳述配對輸入其中,最終得到了我們的形式化器。一旦我們有了形式化器,我們就可以處理一個更大規模的非形式化數據集。在這一過程中,我們特別使用了 Numina 數據集,它包含了大約 80 萬個高質量的數學問題。我們將這些非形式化的問題形式化為形式化陳述。
關于直接進行自動形式化陳述,存在一些問題:
第一個問題是,它可能會產生大量語法錯誤。例如,我們需要在 Lean 中形式化這些陳述,但其中一些可能語法錯誤,無法通過 Lean 編譯器的驗證。因此,我們會進行編譯正確性測試,本質上就是部署 Lean 編譯器。如果編譯器無法通過,例如返回一些錯誤提示,我們會要求模型進行修正。
第二個問題是,即使語法正確,形式化后的陳述可能與原始問題完全不一致。例如,非形式化的問題可能是這樣的,但形式化后的問題可能缺失了一些條件,或者最終變成了一個完全不同的問題。在這種情況下,我們無法像在大學里那樣部署人力去人工檢查所有陳述,因為我們沒有足夠的人力資源。
因此,我們會使用“四重完整性測試”,本質上是要求四個大型語言模型作為獨立的裁判,獨立判斷這些問題是否是正確的翻譯,并基于一系列標準對語言模型進行提示。然后,我們會要求它們進行多數投票。經過這些流程后,我們最終得到了超過一百萬條能夠通過這兩項測試的形式化陳述,并將這些陳述用作我們的訓練數據集。
需要注意的是,這僅僅是關于問題陳述,而不涉及證明。那么在我們得到了這些問題之后,如何獲取更多的證明呢?我們使用這種迭代訓練的方法。這是一個獲取更多證明的流程。
我們會從某個基礎模型開始。當我們有了基礎模型后,比如 Goedel-Prover 的第一版,它基于 DeepSeek Base 7B模型。我們將大量的形式化陳述輸入其中,然后進行推理,證明器能夠生成一些證明。在生成了一些證明之后,我們將它們提交給 Lean 編譯器,Lean 會驗證這些證明。我們會發現其中一些證明是正確的,然后將這些正確的證明加入到我們的數據集中,用于下一輪訓練。
通過這種迭代訓練的方式,我們可以獲得越來越多的證明,并將越來越多的形式化證明加入到我們的數據集中。我們能夠基于越來越多的證明進行訓練,這就是我們獲取更多形式化證明的方法。
表格如下:我們在進行迭代訓練時,不僅在不斷增加更多的證明,還在迭代地增加更多的陳述。這樣,當一個模型的容量更大時,隨著我們增加更多陳述,模型的表現也會更好。
我們在一開始并不會增加太多陳述,原因有兩個:一是為了節省計算資源;二是為了避免讓模型過于困惑。因此,我們會逐漸增加輸入到數據中的陳述數量。我們把這些陳述輸入到我們的證明器中生成證明,并且可以看到我們的模型持續地、穩定地解決更多問題,并基于 Lean 工作手冊以及 Lumina 數據集生成更多的證明。
在多個數據集上進行訓練,甚至在一些統計誤差范圍內,這已經被證明是一種相當有效的方法,它有點像在多次迭代中單調地提升性能。
這是我們整個模型的“配方”。這是我們推動自動形式化定理證明極限的第一步。在我們的模型的第一個版本中,我們提升了 CFR 性能,解決了多個 F2F 問題。我們還在 Putnam 基準測試中取得了第一名,并且在主要工作手冊中解決了幾乎兩倍數量的問題。(雷峰網雷峰網雷峰網(公眾號:雷峰網))
雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。