讓模型像人一樣思考
一、背景
2024年9月OpenAI發布的o1-preview模型展現出了在解決復雜問題上的強大邏輯思維能力。相比之前傳統的Chat類模型,o1類模型在解決問題時會構建出長序列的思維鏈chain-of-thought(CoT)進行推理,通過問題拆解、中間步驟驗證、思維探索等方法,最終找到問題的正確解答方法。OpenAI對o1模型的介紹中也著重強調了CoT的重要性【1】。
類似于人類在回答一個困難問題時可能會思考很長時間,o1 在解決問題時也采用了鏈式思維。通過強化學習,o1 學會了優化自己的思維鏈條并改進使用的策略。它學會了識別和糾正自己的錯誤,學會將復雜的步驟拆解成更簡單的部分,學會在當前方法無效時嘗試不同的解決方案。這個過程顯著提升了模型的推理能力。
我們分別測試了ChatGPT與OpenAI o1-preview對"strawberry"單詞中字母"r"的數量的回答,發現o1-preview不僅給出了正確答案,還展示了它獲取答案的推理過程。

o1-preview的出現激起了人工智能領域對大模型推理能力探索的浪潮。至今已經涌現出了QwQ,DeepSeek等許多性能比肩o1的開源模型。與此同時,研究者們探索出了多種模型思維鏈生成的構建方法。本文就目前最主流的有監督學習SFT + 強化學習RL方法進行一些簡單介紹,希望能夠給到讀者一些啟發。
二、構建流程
構建模型思維鏈背后的關鍵技術,正是強化學習。強化學習通過獎懲機制,激勵模型進行探索,促進其在任務執行中的持續優化。與傳統的有監督微調方法相比,強化學習強調更多的探索和自我優化,能夠幫助模型突破數據本身的局限,學會更多的推理模式和思維方式。下面就SFT和強化學習在思維鏈中的應用分別進行介紹。
1.有監督微調SFT
有監督微調SFT是一種非常高效的讓模型學習“模仿”生成思維鏈來解決問題的訓練方法。通過在預先構建好的CoT數據中進行teacher learning,SFT可以讓不具備生成長CoT內容或者CoT效果比較差的基礎模型性能得到大幅提升。SkyThought通過在數學問題中進行研究,作者發現使用高質量CoT數據進行SFT,模型就能夠達到比肩o1-preview的效果【2】。

然而僅使用CoT數據進行SFT會存在幾點問題:
- 目前CoT的數據主要通過API蒸餾高性能o1類模型生成,這些模型本身的CoT生成能力決定了使用生成數據SFT后的模型上限。
- CoT數據的人工標注成本昂貴,在SFT的后期,模型性能的提升可能對高質量數據的需求成指數級增加。
- SFT方式是一種確定性的學習方式,目前還沒有研究發現僅通過SFT能夠讓模型出現超出數據范圍的探索能力,這可能會限制模型學會通用推理能力。
為了解決上面的問題,我們需要借助強化學習的力量。目前幾乎所有的研究人員都將SFT作為強化學習的前置訓練,以此加速強化學習的訓練。值得一提的是,在最近開源的DeepSeek-R1技術報告中,作者發現即使不使用SFT直接在基礎模型上進行強化學習訓練,模型也能學會生成思維鏈,而且在訓練到一定階段,模型的思維鏈中還會自發性地涌現出反思這類行為。不過作者也提到,這種直接強化學習得到的模型生成的內容可讀性會比較差【3】。因此,SFT作為RL的前置訓練還是有必要的。
2.強化學習訓練
強化學習RL早已在人工智能領域大量應用,無論是之前名噪一時的AlphaGo,還是最近幾年大模型訓練中的RLHF,強化學習已被證明可以應用在進一步提升SFT后的模型性能。在介紹如何應用RL提升模型長CoT能力之前,我們先簡單回顧下RL的幾個重要概念。
(1)結果監督法
結果監督方法顧名思義,是指只利用最終的結果來對整個策略步驟進行優化的方法。
數據生成:結果監督的數據一般可通過人工標注或者模型生成獲得。在使用模型生成時,一般會采用拒絕采樣reject sampling的方法。對于數學這類有明確答案的問題,我們可以直接比較生成的最終答案和gt是否匹配,不匹配的數據直接刪除。對于代碼問題,可以通過執行測試樣例的方法剔除錯誤數據。
模型訓練:結果獎勵模型ORM一般采用二分類模型,通過標注的數據來判斷結果是否正確。所以直接在數據上進行有監督訓練即可。
(2)過程監督法
過程監督方法是對思維鏈的每步推理都進行評分,因此PRM是一種針對思維鏈訓練的改進獎勵模型。相比于結果監督,過程監督的獎勵更加稠密,因此訓練時穩定性和效率會更好。這里我們可以參考OpenAI的比對試驗,相比于結果監督模型ORM,過程監督模型PRM在每個問題生成的N個候選答案中找到正確答案的概率更大,并且隨著N的增加,其與ORM之間的差距會進一步拉大【4】。

數據生成:OpenAI開源的過程監督數據集PRM800K質量比較高,采用的是人工標注的方法,只可惜PRM800K數據集只有數學問題。除了人工標注方法外,也可以通過模型生成,感興趣的可以參考Math-Shepherd中的方法【5】。
模型訓練:過程獎勵模型本質上是一個輸出標量分值的模型,不同的研究者會使用不一樣的訓練方法,可以參考Math-Shepherd中的方法將整個推理過程輸入,mask掉步驟以外的tokens,這樣可以提高訓練效率。最近也發現一篇清華研究者提出的使用隱式獎勵訓練PRM的方法,這種方法可以直接使用ORM數據來訓練,也很有參考價值【6】。
結果監督和過程監督方法對比
優點 | 缺點 | |
結果監督 |
|
|
過程監督 |
|
|
強化學習訓練
無論是使用結果獎勵模型還是過程獎勵模型,有了這些模型我們就可以對策略模型的輸出結果打分,然后使用PPO這類強化學習算法不斷調整模型參數,讓模型自己優化思維鏈。
3.解碼策略
o1類模型的推理除了正常的序列解碼之外,還可以結合蒙特卡洛樹搜索(Monte Carlo Tree Search,MCTS)來增加思維鏈的搜索空間,從而提高模型找到正確答案的概率。
蒙特卡洛樹搜索是一種通過模擬隨機游戲過程來尋找最優策略的算法。該算法的主要步驟可以分為四個階段【7】:
- 選擇(Selection):從根節點開始,按照一定的策略(如使用UCT方法)選擇一個子節點,直到到達一個尚未完全展開的節點
- 擴展(Expansion):在選擇的節點上開展新的子節點
- 模擬(Simulation):從擴展的新節點開始,進行隨機模擬直到到達終止狀態
- 回溯(Backpropagation):將模擬的結果反饋回樹的上層節點,更新這些節點的狀態信息

相比于每個節點都隨機采樣的方法,MCTS依靠(Upper Confidence Bound applied for Trees,UCT)算法實現了搜索過程中規避掉已充分探索的低概率獲勝節點,成為找到最佳決策路徑的一種非常高效的搜索算法。
UCT值的計算方法

Q:截止到本輪rollout為止,該節點的累積reward
N:截止到本輪rollout為止,該節點的累積被訪問次數
N_parent:截止到本輪rollout為止,該節點的父節點累積被訪問次數
c:探索權重,c值越大,MCTS越傾向于選擇選擇累積被訪問次數較少的節點
通過UCT的公式,搜索的前期一般將c設置的比較大,對節點充分探索。在探索后期將c值減小,從而更多采樣獲勝概率高的路徑,提高評估準確性。
MCTS方法在大模型推理中的應用
在這里我們以微軟的開源工作rStar來詳細介紹MCTS是如何應用在大模型推理階段的。首先假設我們已提前訓練好一個具有CoT能力的模型M,并且在模型M中預先定義了5個行動策略,A1、A2、A3、A4和A5。它們分別代表了模型在推理的每一步可以選擇的行動,如重構問題、拆解問題,推理下一步等等。在每次回答問題之前,模型會先根據設定的rollouts數量用MCTS方法構建樹,然后再從所有的有效回答中選擇最佳的一個返回給用戶。
上面的描述可能不容易理解,我們可以通過一次rollout過程來幫助我們理解。首先我們把原始問題看作是樹的根節點,從根節點出發我們進行一次MCTS。在第一次搜索階段,因為根節點下面都沒有子節點,所以MCTS會選擇根節點,而在后續探索中,如果一個節點之前已經被探索過,MCTS會根據其子節點的UCT值選擇最大的一個。接著,我們對根節點進行拓展,MCTS會將所有可能的子節點都擴展出來,然后從中隨機選擇一個。后面的模擬就是會不斷重復選擇-擴展,直到到達葉子節點(節點生成了最終答案,或者節點到達了最大步驟限制)。這樣一個從根節點到葉子節點的路徑稱之為1個rollout。我們可以發現,在一次rollout過程中,MCTS是有可能在一些擴展階段生成出葉子節點(但是沒有被選擇)。此外,實際推理過程中,模型在每個節點都會生成多個sample,每個sample都會被當作一個節點,以此拓展搜索空間。
在多輪rollouts之后,我們就得到了一棵相對完整的樹,之后在rStar中,作者使用了另一個打分模型從所有的有效結果路徑中找到一個評分最高的路徑作為最終結果【8】。

三、總結
模型思維鏈能力的構建離不開SFT和RL的共同訓練。SFT作為RL的前置訓練用來提升模型思維鏈內容的基礎質量,因此需要保證數據的質量。RL訓練用于進一提高模型思維鏈的探索能力,其中結果監督和過程監督兩種方法各有利弊,應結合自身情況選擇。
參考資料:
【1】??https://openai.com/index/learning-to-reason-with-llms/??
【2】??https://novasky-ai.github.io/posts/sky-t1/??
【3】??https://github.com/deepseek-ai/DeepSeek-R1?tab=readme-ov-file??
【4】??https://arxiv.org/abs/2305.20050??
【5】??https://arxiv.org/abs/2312.08935??
【7】??https://en.wikipedia.org/wiki/Monte_Carlo_tree_search??
【8】???https://zhuanlan.zhihu.com/p/9154878387??
本文轉載自 ??AI遇見云??,作者: AI遇見云

















