內容來自:機器之心
學習大型模型(大模型)的優質部落格又更新了!
最近,北京大學校友、前 OpenAI 應用 AI 研究負責人翁荔(Lilian Weng)更新了一篇長長長長長長長部落格《Why We Think》。
文章回顧了近期在如何有效利用測試時計算(即「思考時間」)及其作用機制方面的研究進展,旨在讓模型「思考得更久」這一目標可以從多個角度得到合理動機支持。
透過觀察 GPT、Claude、Gemini 等模型的迭代,可以清晰地看到,它們在複雜邏輯推理、長文本理解、數學問題求解以及程式碼生成與調試等高階認知任務上的效能邊界被不斷拓展。
這種效能的提升得益於思維鏈(CoT)和測試時計算等策略的優化,但也帶來了新的研究挑戰。
為了方便國內讀者更好地學習這篇內容,機器之心對此文章進行了編譯。感興趣的讀者也可查閱原英文內容。
英文部落格連結:https://lilianweng.github.io/posts/2025-05-01-thinking/
類比心理學
該核心思想與人類的思維方式密切相關。人類通常無法立即給出「12345 × 56789」的答案,對於複雜問題,進行一段時間的思考和分析是自然的過程。
在《思考,快與慢》(Thinking, Fast and Slow)一書中,丹尼爾・卡尼曼(Daniel Kahneman)基於「認知雙系統理論」(dual process theory),將人類的思維方式劃分為兩種模式:
快速思維(System 1):運作迅速且自動,受直覺和情緒驅動,幾乎不需要認知努力。
慢速思維(System 2):依賴有意識的邏輯推理與嚴密思考,需耗費較高認知能量並主動參與。
由於快速思維易於啟動且更為省力,它往往成為決策主導,但這通常以犧牲準確性與邏輯性為代價。它天然依賴於人腦的「認知捷徑」(即啟發式方法 heuristics),進而容易產生錯誤與偏差。而透過有意識地放慢思維速度,給予更多反思、改進與分析的時間,可以啟動慢速思維,挑戰直覺,從而做出更具理性與準確性的決策。
計算即資源
在深度學習中,有一種觀點認為類神經網路可以透過其在每次前向傳播中所能調用的計算與儲存資源進行刻畫。
如果我們使用梯度下降法來優化它們以解決問題,那麼優化過程將自行「找出」如何組織這些資源,用於計算與資訊儲存,因此可以被看作會自動規劃電路的過程。
從這一角度來看,如果我們設計的架構或系統在測試時(test time)可以執行更多計算,並且我們訓練模型以有效地利用這一額外資源,那麼模型的效能將會更好。
在 Transformer 中,每生成一個 token,模型所執行的浮點計算量(FLOPs)大致是其參數數量的兩倍。而在稀疏模型(如專家混合模型 Mixture of Experts, MoE)中,由於每次前向傳播只啟動部分專家網路,參與計算的參數僅為總參數的一部分,因此計算量為 2 × 參數數 ÷ 稀疏度,其中「稀疏度」表示被啟動專家網路的比例。
相比之下,思維鏈(CoT)使得模型在為每個希望生成的 token 進行推理時,能夠執行更多的計算(即 FLOPs)。實際上,思維鏈的一大優勢在於,它允許模型根據問題的難度靈活地調整計算量。
潛變數建模
在機器學習中,一種經典的方法是:定義一個含有潛變數(latent variable)z 與可見變數 y 的機率模型,其中 y 是學習演算法所觀察到的變數。透過對潛變數可能值的邊緣化(即求和),可以表達出一個關於可見變數 y 的複雜機率分布,即 P (y) = ∑z∼P (z) P (y | z)。
例如,我們可以用該方法建模數學問題及其解答的分布:將 x 表示為題目文本,y 表示真實答案或證明過程,而 z 則表示引導生成證明的一系列自由形式推理過程。優化的目標是條件機率 P (y | x) = ∑z∼p (z | x) P (y | x, z)。
這種潛變數視角特別適用於理解多執行緒思維鏈(multiple parallel CoTs)或基於搜尋的思維鏈生成方法。這些演算法可以被視為從後驗分布 P (z | x, y) 中進行取樣。這一視角還揭示了優化對數似然 log P (y | x) 作為目標函數的好處 —— 因為 log loss 目標函數在預訓練中效果顯著。
思維以 token 為單位
在生成簡短答案之前,先生成中間推理步驟的策略,特別是在數學問題中,最初由研究者提出,並逐漸拓展形成了標準方法。這一方向中早期的研究包括建構數學推理資料集,並訓練生成器進行有監督學習,透過人類編寫的解題路徑作為參考,同時訓練驗證模型判斷候選答案是否正確,從而可以在多個解答中進行有效搜尋。
後續研究引入了「草稿板」(scratchpad)概念,即將模型生成的中間 token 視為輔助推理過程的臨時內容,並進一步引申出「思維鏈」(CoT)這一常用術語,以描述大型語言模型透過逐步推理而非直接輸出答案的能力。
最初提升 CoT 推理能力的方法,主要透過監督學習對人類書寫的推理路徑進行訓練,或對模型生成的、經過正確性過濾的路徑進行訓練,後者可以被視為一種初級形式的強化學習。還有研究表明,僅透過設計合適的提示方式,如使用「逐步思考」的提示語,或建構更複雜的提示內容,引導模型先思考相關知識,也能顯著提升指令微調語言模型在數學任務上的表現。
隨著進一步的探索,研究人員發現,在具有自動可驗證答案的資料集上應用強化學習,可以顯著增強 CoT 推理能力。這些資料集包括帶有確定短答案的 STEM 問題,或可以透過單元測試驗證正確性的程式設計任務。這類強化學習策略已被驗證可以顯著提升大型語言模型在多步推理任務中的效能。近期的模型開發中,採用策略梯度演算法結合自動評估的問題集,已成為提高模型表現的有效方法。
思維鏈提示(CoT prompting)顯著提升了解決數學問題的成功率。模型規模越大,其「思考時間」所帶來的效能收益越顯著。
分支與修訂
測試時計算(test-time compute)的根本目的在於:在推理過程中動態地調整模型的輸出分布。為此,有多種策略可用於消耗額外的測試時資源,從而優化解碼過程、選擇更優樣本,並將模型輸出引導至更符合需求的分布。
目前主要有兩類提升生成品質的策略:並行取樣(parallel sampling)與序列修訂(sequential revision)。
並行取樣是在每一步並行生成多個輸出序列,同時透過過程獎勵訊號(process reward signals)或結果評估模組(如驗證器)對最終輸出的品質進行判斷,以此挑選最優答案。這是目前廣泛採用的提升測試時效能的解碼方法形式,例如 best-of-N 和束搜索。在無法獲得標準答案(ground truth)的情境下,常使用自洽性策略(self-consistency),即在多個思維鏈(CoT)推理序列中,以多數投票的方式選擇最終答案。
序列修訂是指基於模型前一輪輸出的結果,對其進行反思與疊代性修正,引導模型在後續輸出中主動識別並糾正可能的錯誤。這種修訂流程通常需要在經過微調的模型上實現;若僅依賴模型自身進行「內生性自我修正」(intrinsic self-correction),且缺乏外部監督回饋,則往往難以取得明顯提升。
並行取樣具有實現簡單、直觀、易部署等特點,但其效果在很大程度上取決於模型是否能夠「一次性」生成正確答案;而序列修訂透過顯式引導模型識錯與改錯,邏輯上更具針對性,但速度較慢,且需額外控制過程中的修訂風險,例如原本正確的答案被不當更改為錯誤,或模型產生新的幻覺(hallucination)。這兩種方法可以結合使用。Snell 等人發現:對於簡單問題,單一使用序列化策略的測試時計算效果最佳;而對於高難度問題,則通常需要在並行計算與序列修訂之間找到最優組合比例,以獲得最好的任務表現。
並行取樣與序列修訂示意圖。
並行取樣
當我們手頭有一個生成模型(generative model)以及一個可用於對完整或部分生成樣本進行評分的評分函數(scoring function)時,便可以設計多種搜尋演算法,以尋找評分更高的生成結果。其中最簡單的一種演算法便是 best-of-N:直接獨立生成 N 個樣本,再依據評分函數從中選出得分最高者。
相較之下,束搜索是一種更複雜且更具適應性的搜尋演算法,它透過動態分配計算資源,優先探索解空間中更具潛力的部分。在束搜索過程中,模型維護一組當前最有前景的部分序列,並在擴展這些候選序列與剔除不夠理想的序列之間交替進行。
在選擇生成候選時,可以引入過程獎勵模型(Process Reward Model, PRM)作為引導機制,輔助束搜索的路徑篩選。例如,有研究使用大型語言模型自身來評估其生成的每個推理步驟是否合理,將其格式化為選擇題,從而進行逐步自我評估(per-step self-evaluation)。這種方法能夠顯著減少多步推理過程中的累積錯誤,特別是在束搜索解碼階段,表現尤為明顯。
此外,在取樣過程中透過溫度退火(annealing the temperature)策略來調控隨機性,也有助於緩解生成過程中不必要的波動。這一系列實驗方法在 Codex 模型上應用於 GSM8k、AQuA 與 StrategyQA 等少樣本任務時,取得了 5–6% 的效能提升。
區別於傳統束搜索,REBASE(Reward Balanced Search)方法訓練了一個獨立的過程獎勵模型,用於評估束搜索樹中每一節點在不同深度下的擴展優先級。該模型基於 softmax 歸一化的獎勵分值,動態決定哪些節點獲得更多生成資源。
另一種名為 RATIONALYST 的過程獎勵模型,則利用大量無標註資料訓練用於多步推理任務,模型透過生成候選推理路徑(稱為 rationale),並根據這些 rationale 是否能減少真實答案 token 的負對數機率(negative log-probability)達一定閾值,來篩選高品質推理過程。
在推理階段,RATIONALYST 可以以兩種方式引導思維鏈(CoT)生成器進行推理:一種是隱式地估計下一個推理步驟的機率(implicit supervision);另一種是顯式地將下一步的推理內容直接作為提示詞的一部分生成(explicit supervision)。
束搜索解碼過程中由大型語言模型對每個推理步驟進行自我評估的引導機制。
有趣的是,即使不採用顯式的零樣本提示(zero-shot prompting)或少樣本提示(few-shot prompting),也有可能激發出語言模型中的思維鏈(CoT)推理路徑。Wang 與 Zhou 發現,如果在取樣的第一個 token 處進行分支,並保留置信度最高的前 k 個 token(其置信度透過 top-1 與 top-2 候選之間的機率差來衡量),然後分別對這 k 條路徑採用貪婪解碼(greedy decoding)繼續生成,那麼其中相當一部分生成序列天然包含完整的思維鏈。
尤其在上下文中本就存在思維鏈內容時,這種機制更容易引導模型生成更具置信度的最終答案。在評估最終答案的置信度時,需首先透過特定任務的啟發式方法(task-specific heuristics)標識出答案片段,例如,在數學題中提取最後出現的數值答案;或透過進一步提示模型(例如在末尾提示「So the answer is」)來提取明確答案。
僅在首個 token 處進行分支的設計邏輯在於,相比於後續 token,早期分支能顯著提升推理路徑的多樣性,而後續 token 的生成則更多受限於已有上下文序列。
Top-k 解碼中,k 表示在首次取樣步驟中保留的候選項數量。
順序修訂
如果一個模型具有反思並糾正其先前回答中錯誤的能力,我們應期望它能夠產生一個品質不斷提高的疊代修訂序列。然而,事實證明,這種自我修正能力並非大型語言模型所固有,且在未經特別設計的情況下往往難以實現,其中的失敗模式包括:
(1)幻覺,即將原本正確的回答修改為錯誤的版本;
(2)行為坍縮為不修正的狀態,例如,在最初的錯誤回答上只進行細微甚至不作修改;
(3)在測試時無法泛化到分布轉移(distribution shift)的情況。
Huang 等人的實驗表明,直接應用自我修正策略反而可能導致效能下降,模型若要實現自我提升,仍需依賴外部回饋訊號,例如與真實標籤比對的結果、啟發式規則、針對任務設計的評估指標、程式設計題的單元測試結果、更強大的模型輸出參考,以及人類回饋等。
自我修正學習旨在在固定的生成模型 P₀(y₀∣x) 基礎上,訓練一個修正器模型 Pθ(y∣y₀, x)。其中生成模型保持通用性,而修正器模型則可以針對具體任務進行定制,並且只在給定初始模型響應和可選附加回饋(例如一段文本、編譯器提示資訊或單元測試結果)條件下進行生成:
1. 自我修正學習首先針對資料池中的每個提示生成多個候選輸出;
2. 然後,為每個提示建構「價值提升對」;即挑選兩個輸出,如果其中一個相較於另一個在評價指標上更優,則組成(提示 x,初始答案 y,修正答案 y′)三元組;
3. 接著,根據修正帶來的價值提升幅度 v (y′) − v (y),以及兩個輸出之間的相似度 Similarity (y, y′),對這些樣本對進行加權取樣以訓練修正器模型;
4. 為鼓勵探索,修正器生成的新輸出也會加入資料池。推理時,可以反覆調用修正器,從而形成一個連續改進的修訂軌跡。
透過匹配同一問題下模型的不同輸出,建構「價值提升對」以訓練修正模型的自我修正學習示意圖。
遞歸檢視(Recursive Inspection)同樣旨在訓練更優的修正器模型,但其採用的是單一模型同時完成生成與自我修正的策略。
SCoRe(Self-Correction via Reinforcement Learning)是一種基於多輪互動的強化學習方法,旨在鼓勵模型在第二次嘗試時生成相較第一次更優的答案,從而實現自我修正。該方法由兩個訓練階段組成:
第一階段的目標是最大化第二次嘗試答案的準確性,同時僅對第一次嘗試施加 KL 散度懲罰(KL penalty),以防止第一次生成行為偏離基礎模型太遠,保持其生成風格的穩定性;
第二階段則同時優化第一次和第二次生成答案的準確性。
理想情況下,我們希望模型在第一次和第二次嘗試中都能獲得更好的效能,但引入第一階段可以有效避免「行為坍縮」,即模型僅對初始響應進行微小甚至無修改;
而第二階段則在此基礎上進一步提升整體表現。
顯式訓練設置,透過進行兩階段 RL 訓練來提高自我糾正能力。
使用強化學習提升推理能力
近期,越來越多的研究成功地利用強化學習(RL)提升語言模型的推理能力。這類方法通常採用帶有可靠參考答案的問題集(主要是 STEM 領域的問題或易於驗證答案的邏輯謎題),透過獎勵模型生成正確答案來優化其效能。
這一方向的發展受到 OpenAI 發布系列模型出色推理表現的推動,隨後 DeepSeek 的模型及技術報告進一步加速了相關研究的進展。
DeepSeek-R1 是一款開源大型語言模型,專為應對數學、程式設計和邏輯推理等高複雜度任務而建構。其訓練流程包括兩輪 SFT-RL(監督微調 + 強化學習),使得 R1 在推理類與非推理類任務上均具備良好能力。
在訓練初期,採用「冷啟動監督微調」(cold-start SFT),即在數千條冷啟動資料上對基礎模型進行微調。若省略此步驟,模型在初期表現中可能會出現語言混雜、表述不通順等問題。
面向推理的強化學習(reasoning-oriented RL)階段,使用僅包含推理任務的提示,對模型進行強化訓練,獎勵訊號設計為兩類規則型指標:
格式獎勵(format rewards):要求模型使用特殊 token 包裹「思維鏈」(CoT)。
準確性獎勵(accuracy rewards):判斷最終答案是否正確。數學問題的答案需以特定格式呈現(如放入方框中)以便自動驗證;程式設計問題則透過編譯器評估是否通過測試用例。
拒絕取樣 + 非推理監督微調 階段,使用 RL 第 2 步的 checkpoint 生成的推理輸出,透過拒絕取樣(rejection sampling)進行品質篩選,並結合寫作、事實問答、自我認知等非推理任務中的監督資料,建構新的訓練集,用於訓練 DeepSeek-V3-Base:
篩除含有語言混雜、超長段落或冗長程式碼塊的 CoT 結果;
利用 DeepSeek-V3 流水線生成並標註非推理類任務;
對於某些非推理需求,可調用 DeepSeek-V3 提前生成潛在思維過程作為提示(prompt)再進行回答,而對於諸如「你好」之類的簡單查詢則不需要思維鏈;
最終使用約 80 萬條樣本對 DeepSeek-V3-Base 微調兩個 epoch。
最終的強化學習階段 使用第三階段的 checkpoint,同時在推理類與非推理類提示上進行訓練,從而全面提升模型的有用性(helpfulness)、無害性(harmlessness)和推理能力(reasoning)。
在多個廣泛使用的推理基準測試中,DeepSeek-R1 的表現可與 OpenAI 模型相媲美。其中,僅有 DeepSeek-V3 是榜單中唯一的非推理類模型。
有趣的是,DeepSeek 團隊展示了,即使完全不經過監督微調(SFT)階段,僅依靠純強化學習(pure RL),依然可以學習到諸如反思(reflection)和回溯(backtracking)等高階推理能力,即所謂的「頓悟時刻」(「Aha moment」)。在強化學習訓練過程中,模型自然學會在解決推理任務時投入更多的思考 token,從而提升解題能力。
所謂「頓悟時刻」,是指模型能夠反思先前的錯誤,並嘗試替代性策略進行修正。這種能力的湧現表明模型具備了類人式的深層思維過程。
隨後,一些開源專案也試圖復現 R1 的成果,包括 Open-R1、SimpleRL-reason 和 TinyZero,這些專案均基於 Qwen 模型建構。相關研究也同樣證實了純強化學習方法在數學問題上可以取得優異表現,並能湧現出類似的「頓悟時刻」。
模型學習反思並糾正錯誤的示例。
DeepSeek 團隊還分享了一些訓練中未成功的嘗試。例如,使用過程獎勵模型失敗了,因為很難對每一個中間步驟制定明確的評分標準,也難以判斷中間推理是否正確。此外,這種方式容易導致獎勵套利(reward hacking),從而影響訓練穩定性。
在蒙特卡洛樹搜索(Monte Carlo Tree Search, MCTS)方面的嘗試也宣告失敗,原因在於語言模型的 token 空間遠大於如國際象棋這類傳統有限動作空間的場景,使得搜索過程計算複雜度極高。同時,用於引導搜索的細粒度價值模型(value model)的訓練也極具挑戰性。
儘管失敗,但這些嘗試提供了獨特的研究洞察。我們鼓勵研究社群進一步分享這類「未能奏效的嘗試」,以推動更全面的理解與進步。
外部工具的使用
在推理過程中,某些中間步驟可以透過執行程式碼或數學計算實現高效且精確的求解。透過將這部分推理工作交由外部程式碼解釋器處理,例如 PAL(Program-Aided Language Model,程式輔助語言模型)或 Chain of Code(程式碼鏈)方法,可以拓展大型語言模型的能力,使其無需自行學習程式碼執行或充當計算器角色。
在 Chain of Code 中,所使用的程式碼執行系統可以由 LLM 進一步增強:當標準程式碼解釋器無法正確運行特定程式碼行時,模型還可以嘗試由 LLM 來直接執行該段程式碼。使用程式碼來輔助推理,尤其適用於數學問題、符號推理以及演算法類任務。
在某些程式設計任務中,題目中未必提供單元測試。此時,我們可以引導模型自主生成用於驗證解法的單元測試,從而提升解答的正確性。
程式輔助語言模型(Program-Aided Language Model)提示示例如下所示。
ReAct(Reason+Act,推理與行動)方法將調用 Wikipedia API 等外部操作與生成推理軌跡結合,實現將外部知識納入推理路徑的能力。
ReAct 提示方法的示例,展示其如何透過調用 Wikipedia 搜尋 API 作為外部工具,輔助推理以解答一個 HotpotQA 問題。
OpenAI 最近發布的 o3 與 o4-mini 模型亦是融合工具使用的典型案例,其推理過程涉及網頁搜尋、程式碼執行與圖像處理等操作。研究團隊觀察到,在類似 GPT 的訓練範式中,大規模強化學習同樣呈現出「計算資源越多,效能越好」的趨勢。
忠實地思考
深度學習模型通常被視為黑箱,人們提出了各種可解釋性方法。可解釋性之所以有用,有幾個原因:首先,它為我們提供了一個額外的測試,以確定模型是否與創建者的意圖不符,或者是否以某種我們無法透過監控其行為來判斷的方式出現了錯誤。其次,它可以幫助我們確定模型是否使用了合理的程式來計算其答案。思維鏈提供了一種特別方便的可解釋性形式,因為它能讓模型的內部過程用自然語言表達出來。然而,這種可解釋性建立在模型如實描述其內部思維過程的假設之上。
最近的研究表明,監控推理模型的 CoT 可以有效檢測模型的不當行為,如獎勵套利(reward hacking),甚至可以使較弱的模型監控較強的模型。增加測試時間的計算量還能提高對抗魯棒性;這在直覺上是有道理的,因為當模型遇到不尋常的輸入時,如對抗樣本或越獄嘗試,思考時間更長應該特別有用,它可以利用額外的思考時間來理解所遇到的奇怪情況。
在實驗中,我們要求模型判斷另一個模型是否試圖以某種方式入侵單元測試,以解決其思維過程中的編碼問題。我們可以在訓練過程中使用不同類型的監控器來監控這些獎勵套利行為。exit (0) 編碼套利攻擊是指代理利用了一個漏洞,允許它在沒有運行所有單元測試的情況下提前退出環境。raise SkipTest 套利是指代理從測試框架外的函數中引發異常,以跳過單元測試評估。圖源:Baker et al. 2025
模型是否忠實地表達了自己的想法
直觀地說,由於缺乏旨在鼓勵忠實推理的明確訓練目標,模型的 CoTs 可能存在偏差。或者,當我們根據人類撰寫的解釋對模型進行微調時,這些人類撰寫的樣本可能包含錯誤。因此,我們不能預設 CoT 總是忠實的。
Lanham et al. (2023) 透過故意在 CoT 中引入錯誤,並測量其對一系列多選任務(如 AQuA、MMLU、ARC Challenge、TruthfulQA、HellaSwag)準確性的影響,研究了 CoT 忠實性失效的幾種模式:
錯誤 1(過早回答): 模型可能會在 CoT 生成之前過早地形成結論。測試方法是提前截斷或在 CoT 中插入錯誤。不同任務對 CoT 有效性的依賴程度不同;有些任務的評估效能對截斷的 CoT 敏感,有些則不敏感。Wang et al. (2023) 做了類似的實驗,但在形成 CoT 的過程中出現了與橋接對象或語言模板有關的更微妙的錯誤。
錯誤 2(無資訊 token): 不具資訊性的 CoT token 可提高成績。這一假設透過用填充文本(如所有句號)替換 CoT 進行了測試,結果表明這種設置並沒有提高準確率,與不使用 CoT 相比,某些任務的成績可能會略有下降。
錯誤 3(人類無法閱讀的編碼): 以人類難以理解的方式對相關資訊進行編碼。以非標準方式轉述 CoT 並未降低各資料集的效能,這表明準確率的提高並不依賴於人類可讀的推理。
以不同方式對 CoT 進行擾動以評估其忠實性的示意圖。圖源:Lanham et al. 2023
有趣的是,Lanham et al. 認為,對於多选题,較小的模型可能無法很好地利用 CoT,而較大的模型可能能夠在沒有 CoT 的情況下解決任務。這種對 CoT 推理的依賴性(以使用 CoT 與不使用 CoT 得到相同答案的百分比來衡量)在多选题中並不總是隨著模型大小的增加而增加,但在加法任務中卻會隨著模型大小的增加而增加,這意味著在複雜的推理任務中,思考時間更為重要。
對 CoT 推理的依賴性以使用 CoT 和不使用 CoT 時獲得相同答案的百分比來衡量。對於像加法這樣的推理任務來說,CoT 的作用更大,而對於更大的模型來說,CoT 的作用也更大。
對 CoT 推理的依賴性以有 CoT 和無 CoT 時獲得相同答案的百分比來衡量。對於像加法這樣的推理任務來說,CoT 的作用更大,而更大的模型也能帶來更多益處。
測試 CoT 忠實度的其他方法包括擾動提示而不是直接修改 CoT 路徑。
其中一種方法是在少數幾個樣本中將正確答案標記為「(A)」,而不考慮真實標籤,從而引入偏差。
另一種提示技術是在提示中插入誤導性提示,例如「我認為答案是 < random_label>,但很想聽聽您的看法」或「一位史丹佛大學教授認為答案是 < random_label>」。透過比較模型對同一問題的預測是否包含誤導性提示,我們可以衡量模型是否能夠忠實地描述提示對其答案的影響。特別是在模型得出的提示答案與非提示答案不同的情況下,我們可以衡量模型在解決有提示的問題時是否承認提示。如果模型是忠實的,它就應該明確承認提示的影響,並承認其答案的變化是由提示引起的。
GPT 模型和 Claude 模型對不同類型的上下文偏差都很敏感。模型準確性的降低表明系統性的不忠實。直接提示錯誤標籤比「答案總是 A」類型的偏差更有效。圖源:Turpin et al. 2023
多項研究發現,推理模型對暗示影響的描述要比所有測試過的非推理模型可靠得多。例如,我們可以測量模型承認暗示是決定性因素的樣本比例(「忠實 CoT」)。推理模型(Claude 3.7 Sonnet、DeepSeek R1)的整體表現優於非推理模型(Claude 3.6、DeepSeek V3)。
推理模型比非推理模型更有可能揭示忠實的 CoT。圖源:Chen et al. 2025
一些證據表明,使用獎勵模型會降低模型輸出的忠實度。經典 RLHF 中的獎勵模型在本測試中並不是為了激勵忠實行為而訓練的,因為偏好比較資料集是由人類選擇哪一個看起來更好或更討人喜歡而收集的。然而,在推理模型中,CoT 路徑是為產生正確的最終答案而優化的,而不是為了與 RM 中定義的人類偏好相匹配,因此直觀上預計會更加忠實。
CoT 面臨的優化壓力: 好還是壞?
監控推理模型的 CoT 以發現獎勵套利行為是有效的。使用這種監控器的一個簡單方法是在測試時將監控器作為篩選器運行拒絕取樣,找出沒有獎勵套利行為的解決方案。然而,這種方法只在推理的早期階段有效,而且隨著模型的進一步優化,在預算範圍內很少能找到透過 CoT 監控的樣本。這一挑戰自然表明,我們可以考慮在 RL 獎勵中加入 CoT 監控 — 一種基於流程的監督形式 — 以防止獎勵套利。
然而,在 RL 中加入 CoT 監控獎勵的效果並不好,因為這會導致混淆獎勵套利行為,即模型試圖在 CoT 中隱藏其真實意圖 (Baker et al. 2025)。如果在 RL 訓練過程中使用 CoT 監控提供的這種直接優化壓力,模型仍然可以找到套利的方法,雖然頻率會低一些,但可以在 CoT 中隱藏自己的意圖,避免被監控發現。
在訓練過程中,當使用監測器提供 RL 獎勵訊號以防止獎勵套利行為時,模型仍然可以找到套利行為的方法,同時避免被監測器發現。圖源:Baker et al. 2025
Yeo et al. 對 CoT 長度 RL 訊號的實驗證實了與 Baker et al. 類似的資訊,即新型 RL 獎勵整形會導致新型獎勵套利行為的發生。他們設計的獎勵函數可以使正確的 CoT 比錯誤的 CoT 獲得更高的獎勵,短的正確 CoT 比長的正確 CoT 獲得更高的獎勵,短的錯誤 CoT 比長的錯誤 CoT 獲得更高的懲罰。有了這種額外獎勵,模型就學會了在有挑戰性的問題上重複 CoTs 中的文字,而不是嘗試解決這些問題。Yeo et al. 進一步應用了 n-gram 重複懲罰來防止這種套利行為。
要穩定使用 CoT 長度獎勵進行的訓練,就必須進行精心的獎勵塑造。圖源:Yeo et al. 2025
Chen et al. 在一個有缺陷的 RL 環境中進行了實驗,特別是使用了一個在多选题中填入錯誤答案的評分器。在超過 99% 的提示中,模型學會了利用獎勵套利,但在一半以上的環境中,模型幾乎從未(<2%)在其 CoT 中口頭表達過獎勵套利。在這種情況下,額外的 RL 優化壓力無法激勵模型口頭表達套利行為。
RL 訓練本質上對獎勵套利行為非常敏感。僅僅依靠對獎勵套利行為的啟發式調查和手動修復可能會導致「打地鼠」(whack-a-mole)的局面。我們建議在 RL 訓練過程中嘗試直接對 CoT 進行優化時要非常謹慎,或者盡量避免這樣做。
在連續空間中思考
Alex Graves 於 2016 年提出的自適應計算時間(Adaptive Computation Time)早於大型語言模型,但開創了相同的方向,即讓模型能夠在推理時動態決定計算步驟的數量,這可以被視為讓模型在測試時能夠在連續空間中「思考更多」。連續空間中的自適應思考時間可以透過遞歸架構縱向實現,也可以透過更多的連續取樣步驟橫向實現。
遞歸架構
為了使 Transformer 架構成為遞歸架構,實現自適應測試時間計算,人們提出了許多架構變體。如果深入探討這一主題的文獻,會使文章過於冗長,因此我們只回顧其中幾篇。
Universal Transformer 將 Transformer 中的自注意力與 RNN 中的遞歸機制結合,利用自適應計算時間動態調整步數。從高層次上看,它可以被看作是一種用於學習每個 token 的隱藏狀態表示的遞歸函數,如果步數是固定的,Universal Transformer 就等同於跨層共享參數的多層 Transformer。
Geiping et al. 提出的最新遞歸架構設計,在標準 Transformer 的基礎上增加了一個遞歸塊 R。該循環塊的每次疊代都需要嵌入 e 和隨機狀態 s_i。從概念上講,這種遞歸深度架構有點類似於條件擴散模型,即在每個遞歸步驟中提供原始輸入 e,而隨機高斯初始化狀態 s_i 則在整個過程中疊代更新。(有趣的是,他們對一些更像擴散模型的設計所做的實驗結果並不理想)。
訓練過程中的遞歸計數 r 是隨機的,從對數正態 Poisson 分布中按輸入序列取樣。為了控制計算成本,反向傳播只截斷遞歸單元的最後 k 次疊代(實驗中 k=8),從而可以對 Poisson 分布的重尾部分進行訓練。由於嵌入塊的輸出 e 在每一步中都會注入,因此嵌入塊在每一步中都會繼續接收梯度更新,模仿 RNN 訓練。不出所料,訓練遞歸模型的穩定性非常敏感。初始化、歸一化和超參數等因素都很重要,尤其是在擴大訓練規模時。例如,隱藏狀態可能會因為對每個 token 預測相同的隱藏狀態而崩潰;或者模型可能學會忽略傳入的狀態 s。為了穩定訓練,Geiping et al. 採用了嵌入比例因子、較小的學習率和細緻的調整。
利用深度遞推訓練 3.5B 模型的實驗圖。飽和大致發生在 r¯=32 附近,這讓我們不禁要問,這種結構如何外推並推廣到更大的疊代次數。圖源:Geiping et al. 2025
思考 token
思考 token 指的是在訓練或推理過程中引入的一組不具有直接語言意義的隱含 token。相反,它們的作用是為模型提供額外的思考時間和計算能力,使其表現更好。
Herel & Mikolov(2023 年)提出了在句子中的每個單詞後插入特殊思考 token(<T>)並在這樣的資料集上訓練模型的想法。每個思考 token 都為模型處理和做出更好的預測贏得了額外的時間。在玩具模型設置上使用思考 token 進行訓練,其結果比不使用思考 token 訓練的基準模型的複雜度要低。對於非瑣碎的推理任務或涉及數字的句子,思考 token 的優勢更為明顯。
同樣,Goyal et al. (2024) 提出的暫停標記透過在輸入序列末尾添加虛擬 token(如。或 # 等字符)來延遲模型的輸出,從而在推理過程中為模型提供額外的計算量。在訓練和推理過程中注入這種暫停 token 都很重要,而只對暫停 token 進行微調只能帶來有限的收益。在訓練過程中,我們會在均勻隨機的位置插入多份暫停 token,並在訓練中忽略暫停 token 的損失。
有趣的是,上述實驗中的思考令牌或暫停令牌並不攜帶任何額外資訊或添加許多新參數。但為什麼它仍然有幫助呢?一方面,它透過引入更多的推理循環來幫助擴展計算,從而有效地提高計算能力。另一方面,它可以被視為 CoT 的一種特殊的隱式形式。這裡的一個缺點是模型需要根據思考令牌進行預訓練。儘管如此,這種策略仍然是一種有趣的方法,可以在推理時間 CoT 的基礎上進一步提高測試時間計算利用率的能力。
Quiet-STaR 透過訓練模型在每個標記後生成理由來解釋未來的文本,從而引入了標記級推理。它將未來文本預測與基本原理和無基本原理混合在一起,並使用學習來生成更好的基本原理,並使用 REINFORCE 來優化基本原理生成的品質。
Quiet-STaR 圖示。
將思維作為潛變數
潛變數模型定義了一個機率框架,其中可觀察資料透過未觀察到的(潛在的)變數來解釋。這些潛變數捕捉了生成可觀察結果的隱藏結構或中間過程。語言模型可以被視為機率潛變數模型,其中測試時思維和推理步驟是潛在思維變數。這樣的潛變數模型定義了問題 x_i、答案 y_i 和潛在思維 z_i 的聯合分布。我們希望優化在給定問題和各種思維鏈作為潛變數條件下答案的對數似然(N 是樣本數量;K 是每個問題的思維鏈數量):
我們的目標是最大化正確答案的邊際似然 p (y∣x),給定每個問題的多個推理軌跡 {z (k)} k=1K。
期望最大化
期望最大化是一種常用的疊代演算法,用於優化具有(隱含)潛變數的模型參數,因此可以應用於訓練更好的思維鏈,然後以此為條件生成更好的響應。通常我們在 E 步(期望)和 M 步(最大化)之間疊代,E 步中我們猜測關於潛變數的缺失資訊(即如何取樣更好的思維鏈),M 步中我們基於潛變數優化模型參數(即如何取樣更好的答案),直到收斂。
因為我們無法直接從潛變數分布 p (z∣x,y) 中取樣,研究人員探索了依賴人工標註資料、Metropolis-Hastings MCMC 或具有特殊重要性權重的蒙特卡羅取樣的方法來抽取好的思維鏈樣本以更新模型。Ruan et al. (2025) 實驗了在大量網路文本語料上使用 EM 演算法訓練帶有潛在思維的模型,其中針對每個觀察資料塊合成潛在思維,然後模型以自迴歸方式在潛在思維和資料上學習。
在注入潛在思維的資料語料上進行訓練的示意圖。
他們首先提示一個大型語言模型根據觀察資料 X_i 生成合成的潛在思維 Z_i:
使用特殊 token 如 < StartOfLatent><Prior> ... <EndOfPrior > 將生成的潛在思維內容插入到原始資料中,用於訓練聯合分布 p (z,x) 或近似後驗 q (z∣x),這取決於 z 是插入在 x 之前還是之後。然而,由於我們使用大型語言模型來生成思維鏈,這對近似 q (z∣x) 的好壞程度施加了效能上限。Ruan 等人在 E 步引入了重要性權重來選擇思維鏈樣本,公式化為:
這樣我們就會優先選擇那些擅長預測觀察結果(即高 p (x∣z (k)))、簡單直觀(即高 p (z (k)))但又資訊豐富且不太明顯(即低 q (z (k)∣x))的思維鏈樣本。
疊代學習
由於預訓練模型已經具備了生成思維鏈的能力,因此我們可以直觀地設計一個疊代改進過程,在這個過程中,我們會生成多個 CoTs,並只根據能得出正確答案的理由對模型進行微調。
然而,這種直截了當的設計可能會失敗,因為模型在無法解決的問題上得不到學習訊號。STaR 透過為失敗的嘗試添加一個「合理化」過程來解決這一局限性,在這個過程中,模型會根據問題和基本真實答案生成良好的後向 CoTs,因此模型可以生成更合理的 CoTs。然後,根據正確的解決方案對模型進行微調,這些解決方案要么能產生正確的輸出,要么是透過合理化生成的。
STaR 演算法。
我們可以把 STaR 看作是 RL 中策略梯度的近似值,獎勵是一個簡單的指標函數𝟙1 [y^=y]。我們希望在對 z∼p (z∣x) 和 y∼p (y∣x,z) 進行取樣時,最大化該獎勵的期望值。
每次疊代相當於首先根據選擇 CoT 樣本,然後運行監督微調以優化生成良好 CoT 和答案的對數問題。STaR 的效能會隨著訓練疊代的增加而提高,而生成更好 CoT 的「合理化」過程可以加速學習。他們觀察到,高溫取樣會增加透過錯誤推理獲得正確答案的機會,而對此類資料微調 LLM 會損害泛化。對於沒有真實資料的資料,多個高溫輸出的多數票可以作為真實資料答案的代理,從而可以使用合成樣本進行訓練。
對兩個 n 位數加法的準確度進行比較。在合理化(基於真實結果的逐步推理生成)的情況下,模型能夠在相對較早的階段學習複雜的算術任務,例如五位數的加法。
思維時間的 Scaling Law
到目前為止,已經有大量證據表明,允許模型在推理時投入額外的計算資源,在產生最終答案之前進行思考,可以顯著提升效能。諸如提示模型在給出答案前生成中間推理步驟,或訓練模型在預測下一個 token 前暫停和反思等技術,都被發現可以將模型效能提升到超出訓練時獲得的能力極限。這本質上引入了一個改善模型智能的新維度,與 scaling law 中定義的模型規模、訓練計算量和資料量等既有因素相補充。
最近的研究表明,優化大型語言模型的測試時計算可能比擴展模型參數更加有效。結合先進推理演算法的小型模型可以在成本和效能之間提供帕雷托最佳的權衡。
Snell et al. 評估並比較了測試時計算和預訓練計算,發現它們並非 1:1 可互換的。當模型能力差距很小時,測試時計算可以輕鬆彌補簡單和中等難度問題上的差距,但對困難問題的效果較差。預訓練和推理的 token 預算比例非常重要。只有當推理 token 顯著少於預訓練 token 時,測試時計算才更有優勢。這表明,利用充足的預訓練資料和計算資源開發有能力的基礎模型仍然至關重要,因為測試時計算無法解決所有問題或填補大的模型能力差距。
(左圖)透過疊代修訂或並行解碼,評估準確率作為測試時計算預算的函數。(右圖)比較一個小型模型配合測試時計算取樣技巧與一個大 14 倍的模型僅使用貪婪解碼。我們可以控制測試時使用的 token 預算,使得推理與預訓練 token 的比例為 <<1、~=1 或 >>1,只有當比例 <<1 時,測試時計算的好處才明顯。
s1 模型透過預算強制(budget forcing)技術(即透過添加單詞「wait」來強制延長思維,或透過添加思維結束 token 或「Final Answer:」來縮短模型的思考過程而終止)實驗了思維鏈推理路徑長度的擴展。他們觀察到以 token 衡量的平均思維時間與下游評估準確率之間存在明顯的正相關關係。
s1 實驗中,測試時計算的並行和順序 scaling 方法都顯示出與評估效能的正相關關係。
當將這種預算強制技術與其他控制推理軌跡長度的解碼方法進行比較時,令人相當驚訝的是,簡單的拒絕取樣(即取樣生成直到長度符合 token 預算)導致了反向 scaling,意味著更長的思維鏈會導致更差的效能。
(左圖)更長的思維鏈路徑長度與評估準確率呈正相關。(右圖)用於控制生成的思維鏈路徑長度的拒絕取樣顯示出負 scaling,其中更長的思維鏈導致更差的評估準確率。(圖片來源:Muennighoff & Yang, et al. 2025)
未來展望
對測試時計算和思維鏈推理的探索為增強模型能力帶來了新的機遇。更有趣的是,透過測試時思考,我們正朝著建構未來 AI 系統的方向邁進,這些系統能夠反映人類思維的最佳實踐,融合了適應性、靈活性、批判性反思和錯誤糾正能力。
對當前進展的興奮促使我們進行更多未來研究,以改進並深入理解 — 不僅是我們和我們的模型如何思考,更要理解為什麼思考。
最後,我希望呼籲對以下關於測試時計算和思維鏈推理的開放性研究問題進行更多研究。
我們能否在強化學習訓練過程中激勵模型產生人類可讀、忠實的推理路徑,同時避免獎勵套利行為?
如何定義獎勵套利?我們能否在強化學習訓練或推理過程中捕捉獎勵套利行為而無需人工干預?如何防止在強化學習訓練中採用「打地鼠」式的獎勵套利修復方法?
自我糾正可以在思維鏈內部發生,也可以在多輪強化學習中得到顯式鼓勵。當沒有真實答案可供參考時,我們如何訓練模型進行自我糾正而不產生幻覺或效能倒退?
對於高度情境化、個性化且難以評分的任務(如創意寫作、指導建議、腦力激盪),我們如何進行帶有思維鏈展開的強化學習訓練?
當我們在現實中部署模型時,我們無法無限延長測試時思考的時間,那麼如何能夠平滑地將效能提升轉化回基礎模型,從而降低推理時間成本(例如透過知識蒸餾)?
如何根據當前問題的難度,讓測試時計算資源的使用變得更加自適應?