從ReFT,KimiK1.5到DeepSeekR1,聊聊ReasoningModel的精巧實現

MLNLP

社群是國內外知名的機器學習與自然語言處理社群,受眾覆蓋國內外NLP碩博生、高校老師以及企業研究人員。


社群的願景是促進國內外自然語言處理,機器學習學術界、產業界和廣大愛好者之間的交流和進步,特別是初學者同學們的進步。
來源 | PaperWeekly
作者 | 姜富春@百度
研究方向 | AI搜尋
最近 Reasoning Model(推理模型)異常火爆,Kimi 和 DeepSeek 陸續推出自家的產品 K1.5 和 R1,效果追評甚至超過 o1,也引起了大家的關注,甚至 OpenAI 也慌了。
我也第一時間體驗了下產品的效果,推理能力確實驚豔。也非常好奇到底用了什麼技術。國內的 LLM 開源玩家算是比較良心的,模型開源的同時,一些技術細節也都發表出來,也能進一步解答大家的好奇心。 
過年期間正好忙裡偷閒,可以靜下來好好整理下這塊內容。我個人認為主要有三篇工作比較清晰的講述了 Reasoning Model 的探索過程,分別是:位元組的 ReFT、Kimi 的 K1.5 和 DeepSeek 的 R1。
看完總結下來:大家方法趨同,核心都是在 Post-Training 階段透過 RL(Reinforcement learning)提升模型的推理能力。這也不禁讓人感嘆,Reasoning Model 看似 o1 放出的殺手鐧,"國產之光"的復現竟可以做到如此精巧、簡潔。 
在介紹三篇工作前,我也想按自己的理解先來介紹一些早期的 o1 的猜想。也方便與本文要介紹的工作做些對比,也好理解為什麼說復現的工作是精巧、簡潔的。

Reasoning Model的早期猜想

自從 OpenAI 釋出 o1 模型後,讓我們體驗到 LLM 在複雜問題的推理能力上的進步。Reasoning Model(推理模型)的復現之路也成為各家大模型追捧的熱點。在猜想和復現的過程中,試圖從 OpenAI、Google、微軟的近期的研究中找到一些蛛絲馬跡,其中主流的一些猜測集中在使用 PRM 和 MCTS 方法,在 Post-training 和 Inference 階段提升推理效能。 
我們簡單看下使用 PRM 和 MCTS 方法是如何提升推理效能的? 
1.1 PRM增強推理能力
PRM(Process-supervised Reward Model)是 OpenAI 在 Let’s Verify Step by Step [1] 一文中首次提出的概念。與之相對應的是ORM(Outcome-supervised Reward Model)。
PRM 和 ORM 都是獎勵模型,兩者區別: 
  • PRM:過程獎勵模型,是在生成過程中,分步驟,對每一步進行打分,是更細粒度的獎勵模型。 
  • ORM:結果獎勵模型,是不管推理有多少步,對完整的生成結果進行一次打分,是一個反饋更稀疏的獎勵模型。 
使用 PRM 可以在 Post-Training 和 Inference 兩階段提升模型的推理效能。 
Post-Training 階段:在偏好對齊階段,透過在 RL 過程中增加 PRM,對取樣的結果按步驟輸出獎勵值,為模型提供更精細的監督訊號,來指導策略模型最佳化,提升模型按步推理的能力。
Inference 階段:對於一個訓練好的 PRM,可以在 Inference 階段來篩選優質生成結果。具體來說。對 generator 模型做 N 次取樣(如 Beam Search 方法等),並透過 PRM 對每個取樣的每步推理進行打分,最終擬合一個整體過程打分,並選取打分最高的結果作為最終的答案。
這裡我們假設基礎的 generator 模型在 pretrain 後做了指令微調(SFT),有基本的推理能力(能按步驟生成答案,但推理準確性可能較差)。
1.2 MCTS增強推理能力
MCTS(Monte Carlo Tree Search)是強化學習領域提出的方法,透過取樣方式預估當前動作或狀態的價值。具體操作步驟:使用已有的策略與環境做模擬互動,進行多次 rollout 取樣,最終構成了一個從當前節點出發的一顆 Tree(每個 rollout 表示從當前節點到最終結束狀態的多次與環境模擬互動的過程)。
這顆 Tree 的所有葉子節點都是結束狀態,結束狀態是能量化收益的(量化收益的方法:比如方法 1:答案錯誤收益-1,答案正確收益 +3;再比如方法 2:葉子節點的收益是到達葉子節點路徑數/總路徑數的機率,這是一種根據投票機制預估的價值,越多路徑到達葉子節點,說明這個葉子節點越置信,那麼這個葉子節點就有更高的獎勵)。
一顆 Tree 的葉子節點有了獎勵值,就可透過反向傳播,計算每個中間節點的獎勵值,最終計算出整個 Tree 所有節點的獎勵值。MCTS 一次 rollout 包括:select,expand,simulate,backprop 四個步驟。我們展開描述下四個步驟的具體工作。
Sample(取樣):選擇一個未被探索的節點,在 Reasoning Model 中節點表示一個打了特定 tag 的推理步驟(如:planning 節點,reflection 節點等)。初始情況,Tree 只有一個表示原始問題的節點(如下圖 1 的)。
expand(擴充套件):從未被選擇的節點出發(如初始從),展開所有可能的子節點(如下圖 1 中的)。當然對於文字生成模型不可能窮舉所有的子節點,需要設定個最大生成次數,在有限生成次數內的所有的不同的輸出,認為是子節點的集合。
simulate(模擬):從展開的子節點裡,再隨機選擇一個節點,再展開它的子節點,重複做 expand 過程。直到最終到達葉子節點(生成答案)。當然這裡也會控制最大樹深度,模擬會進行 N 次。
backprop(回傳):透過多次模擬我們得到了一個從根節點(原始問題)到葉子節點(最終生成答案)的 Tree,如下圖 1 所示。
我們透過計算(從當前節點出發到正確答案的路徑數/從當前節點出發總路徑數)的比值作為節點的獎勵值。這個獎勵值隱含表示的是從當前節點出發能得到正確答案的潛在的可能性。
比如以節點為例,從出發共有 4 條路徑,分別是:, , , 其中有 2 條路徑都能走到正確答案。所以的獎勵值為 1/2。我們透過從後往前回溯,能計算出 Tree 中所有節點的獎勵值。

▲ 圖1. MCTS生成Search Tree過程
使用 MCTS 提升模型的推理能力,也可在 Post-Training 和 inference 兩階段來實現。 
Post-Traing 階段:對於每個 problem 透過上述方法構造一個搜尋 Tree,然後進行 Tree 的遊走遍歷取樣,再用取樣的樣本 SFT 或 RL 訓練模型。 
Inference階段:在推理階段,也是對一個 problem 探索多節點構造一顆搜尋 Tree,對於到達正確答案的路徑,根據節點路徑的置信度打分,貪心選取最優路徑作為最終的推理結果。 
使用 PRM 和 MCTS 訓練推理模型的大致框圖,如圖 2 所示,主要是在 Post Training 和 Inference 階段使用來提升模型的推理能力。

▲ 圖2. 基於PRM和MCTS的推理模型
注:這裡對 PRM 和 MCTS 在 Reasoning Model 上的使用,是個人參考 paper 和網上的一些資料的總結,可能有不準確的地方。如有錯誤,歡迎指正
1.3 PRM和MCTS方法存在的問題
PRM 和 MCTS 的方法理論上都有自身的優勢。對於複雜的推理過程,PRM 可以按步驟做細粒度的監督,MCTS 可以自動探索解空間。兩者配合可以在探索(Exploration)和利用(Exploitation)上做平衡,以提升複雜問題的推理能力。 
但在實踐中這兩種方法存在明顯的侷限性: 
PRM 的侷限:對於一般的推理任務,很難定義一個精細的執行步驟。對於語言模型判斷一箇中間步驟是否正確是一項艱鉅的任務。另外對於 PRM 訓練樣本的質量要求較高,使用模型進行自動標註可能無法取得令人滿意的結果,而手動標註則不利於擴充套件規模。
一旦引入基於模型的 PRM,就不可避免地會導致 Reward Hacking 問題。此外從頭訓練獎勵一個獎勵模型需要額外的訓練資源,也使得整個模型訓練流程複雜化。 
MCTS 的侷限:MCTS 方法核心是需要建搜尋 Tree,在生成模型任務中,需要提前定義好 Tree 的節點空間(如 Planning,Reflection 等型別節點)。
這個定義是非常難的:因為一方面生成模型面向的場景是多領域、多工的,很難定義一個有限的節點集合來覆蓋所有任務,而且就算提前定義好了一個集合,隨著任務的新增,整個集合又要更新,模型要重新訓練,這樣就增加了維護和迭代的複雜性。
另一方面 token 生成的搜尋空間是指數級增長,在全空間做搜尋是不可行的。為了解決搜尋空間爆炸的問題,通常會做節點擴充套件限制的搜尋,這樣可能導致陷入區域性最優解。另外 MCTS 方法一般依賴一個價值度量模型(如上述的 PRM)來衡量節點的價值,引入價值模型也進一步增加了模型訓練的複雜度。 
PRM 和 MCTS 方法,都會引入模型訓練和推理的複雜性。在實際的復現 Reasoning Model 工作中,大家並沒有應用這些技術,而是不約而同的選擇了更輕量、更直接的方案。下面我們來看看國內三篇有價值的 Reasoning Model 的技術報告。

Reasoning Model三篇有價值的工作

三篇工作附原文連結,如下:
位元組ReFT:
https://arxiv.org/pdf/2401.08967
KIMI K1.5: 
https://arxiv.org/pdf/2501.12599
DeepSeek-R1: 
https://arxiv.org/pdf/2501.12948
注1:這三篇 Paper 的核心的工作都是卷 RL 階段來提升模型的推理能力。所以要更好的理解上述工作,要具備基本的 RL 的基礎知識,本人之前整理過 RL 核心演算法(PPO 訓練的原始碼階段),如需要提前瞭解,可以適當參考:
https://zhuanlan.zhihu.com/p/13043187674
https://zhuanlan.zhihu.com/p/14569025663
https://zhuanlan.zhihu.com/p/14813158239
注2:本文並不是對三篇工作做從頭到尾的翻譯,二是主要講解核心的實現思路,不會對效果、實驗等細節展開講解。如需要了解更多細節,請參考原文閱讀。
下面我們來看看 ReFT、K1.5,R1 的核心實現。

ReFT

ReFT (Reinforced Fine-Turning) 是位元組 24 年初的一篇工作,ReFT 方法包括兩個階段:SFT 冷啟階段和強化學習訓練階段。 
3.1 ReFT SFT冷啟階段(warm-up stage)
SFT 階段透過構造一批帶推理過程的資料,來精調 Base LLM 模型,這個階段主要是讓模型有基本的 CoT 推理能力。ReFT 的做法也非常簡單,就是用一批開源的資料,透過 Prompt 工程來發壓 GPT-3.5t 來收集樣本,再 SFT 微調自己的小模型。 
具體實現細節上,樣本資料主要來源於 GSM8K,SVAMP 和 MathQA 三個資料集,透過 GPT-3.5-turbo few-shot prompting 的方法收集的訓練資料。資料集有兩種推理格式:N-CoT,P-CoT。
作者在實驗中並沒有人工標註訓練資料,而是完全透過 self-instruct 方式,基於 GPT-3.5dump 的訓練樣本。
▲ 圖3. ReFT的SFT階段樣本樣例資料
透過上述方法,收集了 SFT 資料集: 62K 的指令集樣本,分佈如下:
▲ 圖4. ReFT的SFT階段樣本分佈
模型訓練:這個階段模型訓練就是常規的 SFT,訓練了 40 個 Epoch(作者說這個訓練步數是保證模型收斂的一個比較大的設定了)。
3.2 強化學習訓練階段
ReFT 使用 PPO 的方法做強化學習,我們先回顧下 PPO 的具體方法,如下圖 5 所示,參考:
https://zhuanlan.zhihu.com/p/13043187674

▲ 圖5. PPO的訓練流程圖
3.2.1 PPO訓練四階段
階段1:先基於Pretrain model,訓練一個精調模型(SFT Model)和一個獎勵模型(Reward Model)。Reward model 一般可以基於SFT model 熱啟或基於 Pretrain model 熱啟訓練。
階段2:模型初始化,PPO 過程,線上同時有四個模型,分別為:
  • Actor Model:是我們要最佳化學習的策略模型,同時用於做資料取樣,用 SFT Model 熱啟;
  • Reference Model:是為了控制 Actor 模型學習的分佈與原始模型的分佈相差不會太遠的參考模型,透過 loss 中增加 KL 項,來達到這個效果。訓練過程中該模型不更新;
  • Critic Model:是對每個狀態做打分的價值模型,衡量當前 token 到生成結束的整體價值打分,一般可用 Reward Model 熱啟;
  • Reward Model:這裡是 ORM(Outcome Reward Model),對整個生成的結果打分,是事先訓練好的 Reward Model。訓練過程中該模型不更新。
階段3:取樣 Experience 資料,流程為: 
  • 首先採樣一批隨機指令集(Prompt);
  • 呼叫 Actor 模型的 generate() 方法,取樣 1 條或多條結果(sequences);
  • 四個模型一起參與組裝Experience的多個Tensor域,用於後續模型訓練。
階段4:用 Experience 樣本,訓練 Actor Model 和 Critic Model。
重複 3-4 階段,迴圈取樣 Experience 資料-> 模型訓練,直到 loss 收斂。
由上述過程可知,做 PPO 訓練,我們需要預先準備兩個訓練好的模型:Base LLM Generator 和 Reward Model。
ReFT 是如何準備這兩個模型的?首先 Base LLM Generator 就是 warm-up 階段 SFT 的模型,對於 Reward Model 本文作者並沒有訓練一個模型,而是透過定義一個規則函式,設定了一個 Rule-Base RM,下面我們來看看細節。
3.2.2 Reward Model的設計:Rule-Base RM
ReFT 主要是針對數學場景富集樣本來訓練 Reasoning Model,數學計算的問題是可簡單判斷答案正確與否的。所以作者設定了一個判別函式作為獎勵。具體如下:
這裡的 Reward Model 是個 ORM,對於模型生成的中間狀態,獎勵都為 0; 對於終止狀態判別有 3 種情況: 
1. 如果透過規則能抽取出正確答案則獎勵為 1; 
2. 如果抽取不出正確答案,但能解析出一個結果,獎勵值設定為 0.1; 
3. 如果最終結果無法解析,獎勵制設定為 0。
這裡對錯誤答案的推理路徑,設定了一個弱獎勵的機制(賦值 0.1),主要是為了減少獎勵反饋稀疏的問題。如果能解析出一個答案,證明生成過程是在做一個推理的過程,雖然答案錯了,但推理的執行過程對模型是有幫助的,所以設定個小的獎勵值,激勵模型按推理邏輯輸出結果。
3.2.3 Critic Model的設計
Critic Model 是對每個狀態做打分的價值模型,衡量當前 token 到生成結束的整體價值打分,模型的結構一般跟 Reward Model 一致,通常也會用 Reward 熱啟。但本文中,並沒有 Reward Model,那麼 Critic Model 如何設計的呢? 
作者對 Critic Model 的設計還是遵從 Reward Model 的設計方式,在 Base Model 之上,增加一個迴歸頭(regresion head)對每個生成的狀態進行打分。ReFT 也做了些最佳化,為了減少訓練時模型的計算量和視訊記憶體佔用,Critic Model 的引數與 Actor Model (Policy Model) 的引數共享。如下圖所示:

3.2.4 self-training實驗設定
為了證明 ReFT 的有效性,作者也實現兩個 self-training 的方法。這兩個方法雖然被證明沒有 ReFT 效果好,但這兩種方法實際工作,是經常被使用的方法。所以也詳細展開介紹下。有助於在實際工作中,根據自己的業務特點,選擇合適的最佳化方案。 
所謂 self-training 就是不採用額外的人工標註的資料集,而是透過模型自己產出的資料再來迭代最佳化模型的方法。作者設定的兩個 self-training 的實驗如下: 
1. Offline Self-Training (Offline- ST):用初始的 SFT 的模型作為 generator,對於訓練集的每個問題透過生成多次來採集多個樣本。然後將採集的樣本的答案跟 ground Truth 對比,篩選答案正確的樣本,然後跟原始樣本混合,再訓練初始模型。這就是我們通常使用的拒絕取樣訓練模型的方法。 
2. Onlline Self-Training (Online-ST):跟 ReFT 類似,用 SFT 的模型 warm-up,之後在每個訓練步,我們通過當前版本的模型做即時取樣,然後保留答案正確的 Sample,再透過 SFT 訓練當前版本模型,得到下一個版本的模型。重複上面的迭代過程,直到達到預期的訓練步數。 
為了清晰對比 Offline-ST,Online-ST 和 ReFT,如下圖所示:

相較於上面兩種 Self-Training,ReFT 優勢主要有如下兩方面: 
樣本充分利用:在 ReST 中是基於 RL 的最佳化過程,對於取樣的正負樣本都參與模型訓練。而上述兩種 Offline-ST 和 Online-ST 兩種方法都是基於 SFT 訓練模型,SFT 是隻能使用正樣本做模型訓練的,樣本使用上是不夠充分的。 
模型訓練穩定:Offline-ST 取樣模型直接使用初始模型,而 Online-ST 取樣模型是隨著 Policy 模型的更新即時更新的,導致 Online 的方式可能使模型的分佈大大偏離原始模型的分佈。導致模型在取樣的資料集上 overfitting,最終實際應用中效果達不到預期。而 ReST 採用 PPO 的方法訓練,模型更新過程透過 KL 限制 Policy 模型與初始 Model 分佈不會偏離太遠。保證了模型的效果穩定。
上述的 Self-Training 方法,在實際的工作中,都是值得借鑑的,雖然 ReFT 理論上效果更好,但基於 PPO 的訓練更復雜。可以結合自己業務的特點,考慮合適的方法驅動提升模型效果。
3.3 總結ReFT
ReFT 核心使用 PPO 演算法來提升 Reasoning 的能力,相對於傳統的 PPO 演算法,主要做了兩方面最佳化: 
1)簡化 Reward Model,使用的是 Rule-Base Reward 而非訓練一個模型。
2)Critic Model 引數與 Policy Model 共享,壓縮訓練階段模型的引數的儲存空間,也進一步降低模型訓練的複雜度。

Kimi-K1.5

Kimi K1.5 是個多模態的 Reasoning Model,論文中對模型訓練過程描述的比較詳細。主要包括:預訓練、監督微調和強化學習(RL)三個階段,其中 RL 階段仍然是 Kimi 重點最佳化的階段。我們先來快速看看預訓練和 SFT 階段的一些細節,之後再重點看下 RL 階段。
4.1 預訓練&監督微調
4.1.1 預訓練
預訓練階段比較常規,資料集包括文字和影像多領域多模態高質量資料集,訓練包括三個階段:
1. Vision-language 預訓練階段:首先基於文字語料訓練語言模型,然後進行多模態融合訓練; 
2. 退火階段:篩選公開的和合成的高質量資料來進一步提升模型的基礎能力,特別富集了針對推理和知識型任務的高質量資料集,做模型訓練;
3. Long-context 訓練階段:這也是當前模型擴充套件長文能力的主要方法,在預訓練的最後階段,透過 feed 長文資料集提升長文理解和生成能力,Kimi 最終將長文能力擴充套件到 128K。 
對於 SFT 精調階段,Kimi 做了兩個階段,分別是覆蓋通用能力的基礎監督微調強化推理能力的 long-CoT 的監督微調
4.1.2 基礎監督微調(SFT)
Kimi 富集了 200 萬的監督微調資料集,其中包括 100 萬的文字任務資料集(包括問答,程式設計,寫作等)和 100 萬的文字-視覺資料集(包括 OCR,視覺推理等),樣本資料主要透過人工標註和拒絕取樣的方式富集。模型訓練階段首先以 32K 的序列長度訓練一個 epoch,然後又擴充套件到 128K 繼續訓練一個 epoch。
4.1.3 長思維鏈(long-CoT)監督微調
這一階段重點透過 Prompt 方式生成長思維鏈的推理路徑的小規模資料集,來做 SFT 訓練。目的是讓模型能夠先內建一些推理的知識,學會基本的 long-CoT 的生成模式,能對推理過程的必要動作如:planning,evaluation,reflection,exploration 等步驟做正確的、連貫的響應。
注:該步驟的資料集是基於 RL 階段的資料集做後處理得到的,後面 RL 階段會詳細講述資料集的富集過程。
經過上述幾步,模型除了具備了通用的能力,同時也有了基礎的推理能力,下面就是 KIMI 重點最佳化的 RL 階段,進一步提升模型的推理效能。
4.2 RL強化模型推理能力
4.2.1 策略最佳化演算法
Kimi 的 RL 訓練過程,並沒有採用 PPO 的方法,而是採用了一種更輕量的類 Policy Gradient 的方法。具體方法如下:
首先定義一個初始的目標:找到最優的 ,使得輸出的結果讓 Reward Model 獲得最大期望獎勵,如下公式:

其中:
  •  是要最佳化的策略, 是策略的引數;
  • 表示問題, 表示問題 對應的答案;
  • 是 預估的答案, 是 預估的推理的中間步驟;
  • 是針對問題 ,參照 ground truth ,評估模型輸出的結果 的獎勵值, 透過獎勵模型預估或規則函式計算得到。
接著,作者為了模型訓練更加穩定,類似 PPO,在公式(1)基礎上,增加了 KL 的正則項,來限制最佳化的模型與初始模型分佈相差不要太遠。

其中 是控制正則項的大於 0 的引數。
對於公式(2),可以進一步做推導,當取最大值時,可以推匯出一個解析解+,如下:

對於上述公式,兩邊同時取 可以轉化為:

其中: 是一個歸一化的加和項。
有了上面的轉換,進一步我們透過最小二乘法 的迴歸損失來重寫loss(將真實解 替換成待最佳化函式 如下:

對於實際取樣的一批資料: 項可近似透過計算經驗均值 得到,如下推導:

最終我們用 替換 項,loss 函式可重寫為公式(4)如下。這個 Loss 是 Kimi 最終使用的版本。
這是一個 Policy Gradient 方法的變體版本,該方法移除了 Critic 網路計算 Advantage 的過程。減少的策略最佳化的複雜度。
注:上述公式省略了嚴謹的數學推導過程,只是從直觀上給出了必要的公式結果。其實這裡我們重點要理解的並不是數學上的證明,而是重點要 get 到 Kimi 做 RL 過程用的是一個類 Policy Gradient 的簡化版本,在計算 loss 的時候沒有依賴 Critic Model。對公式感興趣同學,可以自行推導。
4.2.2 Reward Model設計
K1.5 中對於 reward 的設計還是比較精細的。對可直接規則判別對錯的問題,用 Rule-Base Reward 簡化打分過程。對於開放問答類問題,用 Model-Base Reward。同時對於超長的 CoT 過程做了懲罰處理。 
具體幾種 Reward 設計如下: 
Rule-Base Reward:對於能簡單判斷對錯的數學問題,直接透過規則函式來計算 Reward,對於程式設計問題透過評估是否透過測試用例來直接判斷 Reward 打分。 
Model-Base Reward:對於開放的問答類問題,訓練一個 Reward Model,透過模型打分。
Length Penalty Reward:Kimi 做了一個 warmup 的設定,在訓練初始階段不增加這個懲罰因子,讓模型能學習生成 long CoT,在訓練後面階段,為了防止生成過長的 CoT,增加了生成長度的懲罰因子,鼓勵模型進行適當思考,而不是生成過於冗長的內容。
4.2.3 RL Prompt和取樣策略的精心設計
kimi 透過實驗表明 ,強化學習的 Prompt 的質量和多樣性對 RL 學習是至關重要的,精心設計的 Prompt 不僅能引導模型穩健推理,還能降低模型 Reward hacking 和過擬合。好的資料集特點:領域分佈多樣,難度分佈多樣,可準確評估性。
為了確保收集到好的資料集,作者做了一系列資料篩選策略: 
多樣性篩選策略:透過開發一些過濾器和分類器,選擇有豐富推理路徑且易於評估的問題。同時透過分類器,平衡不同領域的資料分佈。 
難度分級篩選策略:使用一個相對較高的取樣溫度,讓 SFT 模型生成十次答案,然後計算透過率,並將其作為 Prompt 難度的指標。透過率越低,表示 Prompt 的難度越高。利用這種方法,可以預先過濾掉大多數簡單樣本,並在強化學習訓練期間根據問題難度探索不同的取樣策略。 
篩選可準確評估的問題:為了避免 Reward Hacking,確保每個 Prompt 的推理過程和答案都能被準確驗證,需要排除一些容易作弊的問題。作者過濾掉了一些依賴複雜推理且容易作弊的問題,包括選擇題,判斷題和基於證明的問題。同時對於透過簡單的 Prompt 多次取樣能有機率回答正確問題做了過濾。 
Kimi 也對 RL 訓練過程的取樣策略做了精心設計,主要透過兩個方法來提高訓練效率: 
課程取樣(Curriculum Sampling):作者設計先從訓練較簡單的任務開始,逐漸過渡到更具挑戰性的任務。主要考慮是初始階段,強化學習模型效能有限,將有限的計算預算花在非常困難的問題上往往只能產生很少的正確樣本,從而導致訓練效率降低。 
優先採樣(Prioritized Sampling):關注模型表現不佳的問題。跟蹤每個問題的成功率,對成功率低的問題進行更大機率取樣,引導模型將精力集中在最薄弱的環節,從而實現更快的學習和更好的整體效能。
4.3 總結Kimi K1.5
Kimi 打磨 K1.5 的過程非常精細,從報告中可詳細瞭解從 PreTrain,到 SFT 精調,再到 RL 階段的每一步的細節。
核心工作還是集中在 RL 階段。對於 RL Kimi 採用了一種類 Policy Gradient 的方法,模型訓練裁剪掉了 Critic Model 以減少訓練的複雜度;對於 Reward 設計比較精細,對於不同問題,不同訓練階段都有細緻調整 Reward 策略。同時對於取樣做了課程取樣和優先採樣的精心設計,來提升訓練效率。

DeepSeek-R1

DeepSeek 做了兩階段探索:DeepSeek-R1-ZeroDeepSeek-R1。 
DeepSeek-R1-Zero:是個純做 RL 的階段,驗證 RL 對推理效能的提升的有效性。 
DeepSeek-R1:由於 DeepSeek-R1-Zero 訓練的模型可讀性是比較差的,通常有多語言混合輸出的問題,通用能力也較差。為了解決這些問題,併產出一個實際可用的模型。DeepSeek 在 R1 階段,做了多階段的模型訓練,並透過混合多工資料,同時提升模型的通用能力和複雜問題推理能力。 
我們先看看看硬卷 RL 的 R1-Zero 的一些核心細節:
5.1 DeepSeek-R1-Zero
這是一個純 RL 來探索模型推理能力的過程,具體 RL 最佳化過程和獎勵模型設定如下:
5.1.1 基於GRPO的RL最佳化過程
DeepSeek 一如既往地使用自研的 GRPO (Group Relative Policy Optimization) 來做 RL 階段的訓練。GRPO 原理比較簡單,相對於 PPO 同時線上四個模型,GRPO 做了簡化,裁剪掉了 Critic Model。GRPO 中計算Advantage 的過程,是一種基於組內相對優勢的計算方式。
具體來說,對於每個問題 ,透過 Reference Model 取樣一組結果 ,再透過 Reward Model 計算一組結果的打分 。
GRPO 計算每個取樣 的 Advantage () 就是對一組 Reward Score 做規範化處理(對每個取樣的獎勵 減去一組值的均值,再比上一組值的方差),如下公式:

GRPO 與 PPO 的對比如下圖所示。在 GRPO 訓練過程中線上會有三個模型,其中 Reference Model 和 Reward Model 是 Frozen 的,最終只有 Policy Model 迭代更新的。

5.1.2 Reward Model的設計:Rule-Base RM
R1-Zero 階段只關注數學、程式類推理問題,都是能簡單透過規則判別答案對錯的,所以獎勵模型採用的是純 Rule-Base 的設計,主要包括 2 類 Reward: 
正確性校驗 Reward(Accuracy rewards):數學問題透過簡單的規則抽取答案與 ground truth 對比校驗。對於程式題,透過編譯生成的程式,校驗是否能透過測試用例,產生一致的答案。
格式校驗 Reward(Format rewards):校驗是否 thought 內容是包含在 ‘<think>’ 和 ‘</think>’tags 之間。
5.1.3 模型訓練Prompt模板
DeepSeek 訓練 Reasoning 的指令模板相當簡單,如下圖,除了做些角色和格式描述,對於 Reasoning 的能力描述沒有做過多限制,主要也是希望能激發模型的自主能力,防止過多人為設計引入 Bias,干擾 RL 階段模型的推理路徑。(這種簡單的指令集設計,確實也需要有 DeepSeek-V3 這樣強大的基模能力才行)。

▲ R1-Zero Prompt模板
DeepSeek-R1-Zero 的核心過程就是如此,論文中著實沒有暴露更多細節。
5.2 DeepSeek-R1
DeepSeek-R1-Zero 是個純 RL 驅動模型訓練過程,問題推理能力顯著提升,但模型的通用能力有很多瑕疵,比如會輸出可讀性非常差的混合語言的結果。
為了進一步提升模型的可用性,在 R1-Zero 基礎上,DeepSeek 又做了多階段細緻的最佳化過程,即 DeepSeek-R1。主要的最佳化包括四個階段:SFT -> RL -> 增強 SFT -> 增強 RL(有點左腳踩右腳,然後直接起飛的架勢)。
階段 1:SFT Cold Start 階段 
SFT 的樣本透過兩種方式獲取:1)拒絕取樣:透過 few-shot prompt 方式,基於已有的生成模型直接生成,來富集 long-CoT 的樣本;2)人工標註:獲取  R1-Zero 可讀的樣本,然後透過人工方式精編樣本。 
在冷啟階段,對樣本也設計了可讀性更好的 pattern,透過 |special_token| 將推理過程圈定起來,為了讓人更便捷閱讀,對樣本做了 summary 處理。如下:

|special_token|<reasoning_process>|special_token|<summary>

最終產出數千條樣本,然後訓練 DeepSeek-V3-Base,作為 RL 階段的初始 Policy Model。 
階段 2:Reasoning-oriented RL 階段
這個階段基本就是 R1-Zero 的過程,為了解決多語言混合輸出的問題,在訓練 R1 過程,對 Reward Model 增加了語言一致性的獎勵設定。
具體來說,增加了 Language Consistency Reward,它透過計算推理 CoT 過程的字元與目標語言一致的字元比例,來作為獎勵打分,一致率越高獎勵越高。這個獎勵對模型效能有輕微的影響,但趨向於更便於人可讀性的最佳化,是一個有用的偏好獎勵的設定。 
階段 3:增強 SFT 階段(Rejection Sampling and Supervised Fine-Tuning) 
這個階段主要是提升模型的通用能力,包括:創作,角色扮演和其他一些通用任務。對於 Reasoning  和  Non-Reasoning 的樣本透過不同方式富集: 
Reasoning data:透過拒絕取樣獲取。這個階段引入了一批新的 Prompt 資料,基於上一步得到的模型,生成多結果,最終透過 Rule-Base Reward 和強大的 DeepSeek-V3 作為裁判模型,精選樣本。同時根據一些規則,對於混合語言的,冗長的推理 CoT 樣本做規則過濾。最終篩選了 600K 的 Reasoning 樣本。 
Non-Reasoning data:引入訓練 DeepSeek-V3 的通用高質量 SFT 資料,包括: 創作、事實問答、自我認知和翻譯。樣本處理上,透過 prompt 方式呼叫 DeepSeek-V3,在回答問題前,先生成一個思維鏈,保證與 Reasoning Data 的樣本格式一致。最後收集了 200K 的 Non-Reasoning 樣本。
最終用這 800K 樣本 SFT DeepSeek-V3-base 模型,產出了 Reasoning 和非 Reasoning 能力兼顧的新的模型(注:這裡並沒有基於上個階段的模型繼續微調,而是在基模上微調的,主要是為了保證更好的通用能力,然後進一步透過過濾後的樣本繼續微調,保留refine後的推理能力)。
階段 4:增強 RL 階段(Reinforcement Learning for all Scenarios) 
這階段其實跟 K1.5 的工作差不多,對於多樣的資料,採用多種獎勵方式來做精細化的獎勵反饋。複用了 R1-Zero 和 DeepSeek-V3 的 Reward Model 的設定。其他並沒有太多可關注的地方。 
5.3 DeepSeek-R1 總結 
R1-Zero 採用了非常激進的純 RL 方式來提升模型的問題推理能力,雖然模型有瑕疵,但 R1-Zero 的做法把 Reasoning Model 的探索推向了一個極簡方式,我個人覺得是非常有價值的嘗試。
但話又說回來,之所以 DeepSeek 能這麼玩,還是要依賴於他自己有較強大的 DeepSeek-V3 支撐,換做其他玩家,未必可行。如果我們再詳細對比 R1 和 K1.5 訓練過程,都是 SFT 冷啟,在做 RL 或 SFT 增強訓練,基本的做法是趨同的。而顯然 Kimi 的報告要更詳細,DeepSeek 的報告感覺是有所保留的。

總結

本文主要介紹了「國產之光」的三篇做 Reasoning Model 的工作,對於複雜問題的推理能力的探索,大家都不約而同的採用了精巧、簡潔的復現方案。透過設定清晰的目標,減少過多的人為設定,基於 RL 端到端的自驅探索能力上限。我覺得本文最終可以用一句話總結:Reasoning Model,RL is all your need!
技術交流群邀請函
△長按新增小助手
掃描二維碼新增小助手微信
請備註:姓名-學校/公司-研究方向
(如:小張-哈工大-對話系統)
即可申請加入自然語言處理/Pytorch等技術交流群

關於我們

MLNLP 社群是由國內外機器學習與自然語言處理學者聯合構建的民間學術社群,目前已經發展為國內外知名的機器學習與自然語言處理社群,旨在促進機器學習,自然語言處理學術界、產業界和廣大愛好者之間的進步。
社群可以為相關從業者的深造、就業及研究等方面提供開放交流平臺。歡迎大家關注和加入我們。

相關文章