1 背景

春節期間, DeepSeek R1 再次引發了廣泛關注,就連我們先前撰寫的DeepSeek V3解讀文章也被重新轉發並引發了大量的討論。

雖然對DeepSeek R1已經有了很多的分析和重述,但我們還是決定在這裡寫一些對應的閱讀筆記。

我們將透過三張核心原理圖來展示模型構造和關鍵技術點,提煉DeepSeek-R1系列的精髓,以便更直觀地了解其設計思路。

相應的論文是 [2501.12948] DeepSeek-R1:透過強化學習激勵法學碩士中的推理能力

對應的開源模型是 DeepSeek-R1

2 簡介

2.1 常見推理演算法

如下圖2所示,作者講解了四種常見的推理演算法。儘管它們在具體細節上有所不同,但它們都包含兩個核心操作:

  • 擴展:產生令牌來擴展解決路徑。
  • 聚合:整合各條路徑的結果,得到最終答案。增加擴展階段的計算資源通常可以提高聚合階段答案的品質。

自洽性(SC)。如圖2a所示,SC的核心思想是產生多個不同的輸出(可以透過改變取樣參數等實現),然後對所有答案進行投票,選出獲勝率最高的答案。關鍵參數是候選答案的數量n。

Rebase 演算法:如下圖 2b 所示,Rebase 也會產生多個輸出,但它們是分多個步驟產生的。每一步都使用Reward模型進行評分,取得分數最高的結果繼續產生。最終生成一棵具有多個分支的推理樹。在聚合階段選擇得分最高的答案(Best-of-N)。

蒙特卡羅樹搜尋(MCTS):如下圖 2c 所示,MCTS 是一種強大的推理演算法,它透過逐漸採樣來擴展節點並建立解決方案樹,直到到達包含候選解決方案的葉節點。每個解決方案都透過獎勵模型或模擬進行評分,並將分數傳播回其祖先節點以更新其獎勵值,從而完成一次迭代。關鍵參數也是 n,增加 n 可以更深入、更廣泛地探索潛在的解決方案。

內化認知鏈(ICoT)。如下圖 2d 所示,最新的 LLM,例如 OpenAI o1 和 Qwen-QWQ,可以在訓練期間內化推理行為,而無需明確的推理演算法。其核心思想是產生一個 CoT 序列,將複雜問題分解為多個子問題,然後透過反思先前的輸出來迭代優化這些答案,最終得出解決方案。

2.2 推理對齊方法

2.2.1 Best-of-N 方法概述

簡而言之,Best-of-N 是 LLM 推理中廣泛使用的對齊方法,其旨在透過產生多個候選響應並選擇最佳響應來確保生成結果的高品質。它由三個主要過程組成:

  1. 生成過程:對於給定的提示 X,Best-of-N 方法會產生 N 個 IID 回應 (Y₁, Y₂, …, Yₙ),其中 N 通常被稱為「批次大小」。
  2. 評分機制:每個產生的反應都由獎勵模型評分,以獲得對應的分數{s(Y₁), s(Y₂), ..., s(Yₙ)}。
  3. 選擇最佳答案:最後,選擇所有產生的答案中得分最高的答案作為輸出,即Y_Best-of-N = argmax {s(Y₁), s(Y₂), …, s(Yₙ)}。

此方法的優點是:

  1. 它可以有效避免複雜的微調步驟,從而更容易部署已經預先訓練或使用指令微調的語言模型。
  2. 它實現簡單,易於理解,本質上沒有超參數:主要超參數是 N,可以在推理過程中動態調整。
  3. 它在生成品質方面具有很強的競爭力,甚至可以與 RLHF 或 DPO 等一些複雜的後訓練技術相提並論。研究表明,Best-of-N 方法在獎勵和 KL 散度的權衡曲線上表現良好,甚至超越其他複雜的對齊策略。

這種方法的缺點是

  1. 推理需要產生N個序列,這會導致大量的計算開銷。實際上,N 的合理值範圍是 4 到 128,但為了與最先進的後訓練方法競爭,可能需要更高的 N 值,例如 1000 到 60000,這可能導致幾乎不可接受的計算開銷。

best-of-N 方法通常用於產生高品質資料集以供後續監督微調,並在 LLaMA-2 和 LLaMA-3 的對齊過程中發揮了關鍵作用。

2.2.2 OpenAI best-of-N 方法

OpenAI 於 [2009.01325] 學習從人類回饋中總結 。具體來說,它用於透過從多個模型中選擇生成的最佳摘要來評估和最佳化摘要模型的性能。此方法有助於研究人員更好地理解不同評估指標與人類評估者偏好之間的關係,並用於指導模型訓練和優化。

OpenAI 在後續也採用了 Best-of-N 採樣(拒絕採樣) [2112.09332] WebGPT:透過瀏覽器輔助進行問答並附帶人工回饋。具體來說,從 BC 模型或 RL 模型中採樣固定數量的答案(4、16 或 64),並選擇獎勵模型得分最高的答案作為對抗性獎勵模型的最佳化方法。此方法不需要額外的訓練,但是增加了推理階段的計算複雜度來實現。

2.2.3 Google BOND 方法

[2407.14622] BOND:將 LLM 與 Best-of-N Distillation 結合,來自 Google 的作者提出了 Best-of-N Distillation (BOND),一種新的 RLHF 演算法,旨在透過分佈匹配演算法模擬 Best-of-N 採樣策略,而不會顯著增加推理期間的計算開銷。

具體來說,作者首先推導了Best-of-N採樣的精確解析分佈,並給出了Best-of-N採樣的機率函數:

其次,作者將此問題表述為分佈匹配問題;

隨後,作者建議使用 Jeffreys 散度作為分佈配對目標:

最後,為了解決選擇 N 的問題,作者提出了迭代 BOND 方法,透過迭代提取 Best-of-N 分佈來提高策略的效能。具體步驟包括:

初始化輔助Anchor策略π(anchor)。

迭代執行 BOND 來提煉出 Best-of-N π(anchor),並在每一步之後更新 π(anchor)。

2.3 過程督導與結果督導

Outcome和Process指的是Reward模型評估的兩個面向:

  • 結果獎賞模型:評估模型輸出的最終結果是否正確或符合預期。
  • 過程獎賞模式:評估模型在產生結果過程中的推理和決策步驟是否合理且有效。

例如,OpenAI 的 Let's Verify Step by Step | OpenAI 也提到:

  • 過程監督(結果監督):涉及對模型推理過程的每個步驟提供回饋。訓練過程監督獎勵模型 (PRM) 來預測解決方案每個步驟的正確性。
  • 結果監督:結果監督僅根據模型推理的最終結果提供回饋。結果監督獎勵模型(ORM)使用解決方案的最終答案進行訓練,並透過自動檢查確定正確性。

2.4 獎勵駭客

在強化學習中,獎勵駭客是指代理人利用獎勵函數設計的缺陷,以不符合設計者初衷的方式最大化累積獎勵的現象。這種行為雖然從技術上滿足了獎勵函數的最佳化目標,但實際效果卻與預期的任務目標有所偏差,甚至可能導致負面後果。

重點分析:

  1. 定義與表現:
    1. 代理人發現獎勵函數中的缺陷,並透過走「捷徑」而不是真正解決問題來獲得高額獎勵。
    2. 例如,清潔機器人會關掉燈,讓房間「看起來」乾淨,而不是真正清潔房間;遊戲代理重複得分而未完成關卡目標;為了減少煞車次數而選擇不減速,這會帶來安全隱憂;為了欺騙高分,產生與關鍵字相符的無意義的內容。
  2. 根本原因:
    1. 不完整的獎勵函數設計:過度簡單或無法涵蓋邊緣情況。
    2. 目標和獎勵不一致:獎勵函數未能完全反映真實目標,導致代理人針對「錯誤」的目標進行最佳化。
  3. 解決方案:
    1. 改進獎勵設計:引入多維獎勵(如安全性、效率等)或動態調整獎勵函數。
    2. 對抗性驗證:透過附加機制偵測代理人是否「作弊」。
    3. 人工幹預和約束:設定行為邊界(例如安全層)或人工回饋(例如 RLHF)。
    4. 逆增強學習(IRL):從專家演示中學習更現實的獎勵函數。
    5. 分層強化學習:將任務分解為子目標,以降低局部最佳化的風險。
  4. 與過度擬合的關聯:
    1. 兩者都表現出訓練指標和實際表現之間的脫節,但 Reward Hacking 更強調獎勵函數的設計缺陷,而不是模型的泛化能力。
  5. 概括:
    1. 獎勵駭客揭示了強化學習中目標協調的挑戰。解決這個問題需要設計更強大的獎勵機制、引入外部約束並結合人類的先驗知識,以確保代理的行為既高效又符合設計意圖。

3 DeepSeek-R1-零 & DeepSeek-R1

3.1 概述

先前的研究很大程度上依賴大量監督數據來提高模型性能。研究表明,即使沒有SFT作為冷啟動,大規模RL也能夠顯著增強模型的推理能力。此外,引入少量冷啟動數據可以進一步優化效能。以下是與DeepSeek-R1相關的型號:

  1. DeepSeek-R1-Zero:此模型將 RL 直接應用於基礎模型,無需任何 SFT 資料。
  2. DeepSeek-R1:該模型從已使用數千個長 CoT 樣本進行微調的檢查點開始應用 RL。
  3. DeepSeek-R1-Distill-xx:將 DeepSeek-R1 的推理能力提煉成一個小型的密集模型。

3.2 DeepSeek-R1-零

下圖展示了DeepSeek-R1-Zero模型訓練中的關鍵點:

PS:要注意的是,論文中並沒有提供太多關於DeepSeek-R1-Zero的RL過程中所用到的數據的資訊。不過在後續的R1訓練中對於資料的生成過程和數量還是有一些解釋的,雖然不是特別具體。

3.2.1 強化學習演算法

為了降低 RL 的訓練成本,作者使用了 DeepSeek 自己的 GRPO(Group Relative Policy Optimization)方法,[2402.03300] DeepSeekMath:在開放語言模型中突破數學推理的極限。此方法放棄了通常大小與 Policy 模型相當的 Critic 模型,而是使用群體分數來估計基線。對應解釋如下圖所示(圖片來自推特):

3.2.2 獎勵模型

獎勵是訓練訊號的來源,決定了RL的最佳化方向。為了訓練 DeepSeek-R1-Zero,作者使用了基於規則的獎勵系統,該系統主要包含兩種類型的獎勵:

  • 準確度獎勵:評估反應是否正確。例如:
    • 在結果確定性的數學問題中,模型需要以特定的格式(例如在框內)提供最終答案,以便可以透過規則可靠地驗證其正確性。
    • 類似地,對於 LeetCode 問題,可以使用基於預定義測試案例的編譯器產生回饋。
  • 格式獎勵:格式獎勵也用於強制模型將其思考過程置於“ “ 和 ” ”標籤。

在DeepSeek-R1-Zero的開發過程中,作者並沒有採用結果神經獎勵模型(Outcome Neural Reward Model)或是過程神經獎勵模型(Process Neural Reward Model),因為作者發現神經獎勵模型在大規模RL過程中可能遭遇獎勵欺騙(Reward Hacking);此外,重新訓練獎勵模型不僅需要額外的訓練資源,而且還使整個訓練過程變得複雜。

3.2.3 訓練模板

為了訓練 DeepSeek-R1-Zero,作者首先設計了一個簡單的模板來引導基礎模型遵循設定的指令。如下表1所示,該Template:需要DeepSeek-R1-Zero產生一個推理過程,然後給出最終的答案。

作者刻意將限制限制在這個結構框架內,避免引入任何內容偏見——例如強制反思推理或促進特定的解決問題的策略——以確保在 RL 過程中能夠準確觀察到模型的自然演變。

3.2.4 結論

無需 SFT 資料的穩健推理能力:透過直接從 Base 模型啟動 RL,可以密切監視模型的演化軌跡,而不會受到 SFT 幹擾。如下圖3所示,DeepSeek-R1-Zero的思考時間在整個訓練過程中持續提升(成長長度逐漸變長)。這種改進並非源自於外部調整,而是模型內部發展的自然結果。 DeepSeek-R1-Zero透過延長測試時間計算,自然而然地獲得了解決日益複雜的推理任務的能力,例如反思的能力。

DeepSeek-R1-Zero 在訓練中經歷了「頓悟時刻」。如下表3所示,這一刻發生在模型的中期版本階段。在此階段,DeepSeek-R1-Zero 學會了透過重新評估其初始方法來分配更多的思考時間來解決難題。

多數投票:透過應用多數投票,可以進一步提高 DeepSeek-R1-Zero 的效能。例如如下表2所示,在AIME基準測試中使用多數投票後,其效能從71.0%躍升至86.7%,超越了OpenAI-o1-0912。

弱點:DeepSeek-R1-Zero雖然表現出強大的推理能力,並自主開發出意想不到的強大推理行為,但它仍然面臨可讀性差和語言混合等挑戰。

3.3 DeepSeek-R1

為了使推理過程更具可讀性並與開放社群共享,作者進一步探索了 DeepSeek-R1 方法,該方法使用人性化的冷啟動資料進行 RL。受到 DeepSeek-R1-Zero 的啟發,我們自然而然地提出了兩個問題:

  1. 透過引入少量高品質數據作為冷啟動,是否可以進一步提高推理性能或加速收斂過程?
  2. 我們如何訓練一個使用者友善的模型,不僅可以產生清晰連貫的 CoT,而且還具有強大的泛化能力?

針對這些問題,我們設計了DeepSeek-R1的訓練流程。該過程包含多個階段,如下所述:

Stage-1如下圖所示,透過SFT+RL訓練DeepSeek-R1的中間狀態:

下圖顯示了第 2、3 和 4 階段:

  • 第二階段:左上角,建構200K非推理資料和600K推理資料。
  • 第 3 階段:右上,SFT + RL 列車 DeepSeek-R1。
  • 第四階段:下圖,蒸餾 DeepSeek-R1-Distill-xx。

3.3.1 冷啟動(階段 1)

與 DeepSeek-R1-Zero 不同,為了防止在 RL 訓練開始時 Base 模型的不穩定的冷啟動階段,作者為 DeepSeek-R1 構建並收集了少量的 Long CoT 數據,以作為初始 RL Actor 對模型進行微調。為了收集這些數據,作者探索了各種方法:

  • 使用少樣本提示和長 CoT 範例
  • 透過反思和驗證直接提示模型產生詳細答案
  • 以人類可讀的格式收集 DeepSeek-R1-Zero 輸出
  • 透過手動標記進行後處理來完善結果

作者總共收集了數千個冷啟動數據,用於對 DeepSeek-V3-Base 進行微調,作為 RL 的起點。與DeepSeek-R1-Zero相比,冷啟動資料的優點包括

  • 可讀性:DeepSeek-R1-Zero 答案可能混合多種語言,或缺少用於突出顯示使用者答案的 Markdown 格式。相較之下,在為 DeepSeek-R1 建立冷啟動資料時,作者設計了一種可讀格式,其中在每個回應末尾包含一個摘要,並過濾掉不可讀的回應。這裡,輸出格式定義為|special_token| |特殊令牌|其中reasoning_process是Query的鍊式思維,summary用來總結推理結果。
  • 潛力:透過精心設計人類先驗冷啟動資料模式的組合,作者觀察到其效能優於 DeepSeek-R1-Zero。

3.3.2 推理驅動的強化學習(第一階段)

DeepSeek-V3-Base在冷啟動資料上微調後,採用與DeepSeek-R1-Zero相同的大規模RL訓練流程。此階段旨在提高模型在推理密集型任務中的能力,特別是在程式設計、數學、科學和具有明確解決方案的邏輯推理問題上。

在訓練過程中,作者觀察到 CoT 經常受到語言混合的影響,尤其是當 RL 提示涉及多種語言時。為了緩解語言混合問題,作者在 RL 訓練中引入了語言一致性獎勵,該獎勵是根據 CoT 中目標語言單字的比例來計算的。雖然消融實驗顯示這種對齊方式會導致模型表現略有下降,但這種獎勵機制符合人類的偏好並增強了可讀性。最後,作者直接將推理任務的準確率添加到語言一致性獎勵中形成最終獎勵,並對微調後的模型進行 RL 訓練,直到其在推理任務上收斂。

3.3.3 建構80萬精選資料(Stage-2)

當推理的 RL 收斂時,將使用產生的檢查點收集 SFT 資料以進行下一輪訓練。與最初主要著重推理的冷啟動數據不同,此階段結合了其他領域的數據,以增強模型在寫作、角色扮演和其他通用任務中的能力。具體來說,數據生成和模型微調如下:

  • 推理資料:從前面提到的 RL 訓練檢查點(DeepSeek-R1 第 1 階段)中選擇推理提示並進行拒絕取樣來產生推理軌跡。在前一階段,僅包括可以使用基於規則的獎勵進行評估的數據。然而,在這個階段,資料集透過包含更多資料而擴展,其中一些資料是使用獎勵模型產生的,並且透過將模型預測輸入到 DeepSeek-V3(DeepSeek V3 作為評判者)來判斷真正的答案。此外,由於模型輸出有時令人困惑且難以閱讀,因此混合語言的思維鏈、長段落和程式碼區塊被過濾掉。對於每個提示,都會抽樣多個答案,並且只保留正確的答案(N 個中最佳)。總共收集了約60萬個推理相關的訓練樣本。
  • 非推理資料:例如寫作、事實性問題、自我意識和翻譯,使用了 DeepSeek-V3 流程並重複使用了 DeepSeek-V3 的一些 SFT 資料集。對於一些非推理任務,在回答問題之前呼叫DeepSeek-V3來產生潛在的CoT。然而,對於「Hello」這樣簡單的查詢,Response中並沒有提供思路鏈。最後共收集到約20萬個非Reasoning訓練樣本。

3.3.4 適用於所有場景的 SFT 和 RL(第 3 階段)

使用上述兩個資料集(Reasoning 和非 Reasoning)對 DeepSeek-V3-Base 進行了兩輪微調,共計約 800,000 個選定樣本。

為了使模型進一步符合人類偏好,作者實現了 RL 的第二階段,旨在提高模型的實用性和無害性,同時完善其推理能力。具體來說,該模型是透過獎勵訊號和多樣化提示分佈的組合來訓練的。

  • 對於推理數據,遵循DeepSeek-R1-Zero中描述的方法,使用基於規則的獎勵機制來指導模型在數學、程式設計和邏輯推理領域的學習。
  • 對於一般數據,獎勵模型用於捕捉人類在複雜而微妙的情況下的偏好。基於 DeepSeek-V3 流程,使用類似的偏好對和訓練提示分佈策略。
  • 在有用性方面,只考慮最終的摘要,確保評估著重於回應對使用者的實用性和相關性,同時最大限度地減少對底層推理過程的干擾。
  • 無害性方面,對模型的整個Response進行綜合評估,包括Reasoning過程和總結,識別並消除生成過程中可能出現的任何潛在風險、偏見或有害內容。
  • 最終,透過整合獎勵訊號和多樣化資料分佈,可以訓練出一個既優先考慮益處又無害、推理能力出色的模型。

3.3.5 蒸餾(第 4 階段)

為了讓更有效率的小模型具備DeepSeek-R1的推理能力,作者直接用DeepSeek-R1-Stage-1選取的80萬個樣本對開源模型Qwen和LLaMA進行了微調。結果表明,這種直接蒸餾方法顯著提高了小模型的推理能力。作者使用的基礎模型包括Qwen2.5-Math-1.5B、Qwen2.5-Math-7B、Qwen2.5-14B、Qwen2.5-32B、Llama-3.1-8B和Llama-3.3-70B-Instruct。之所以選擇Llama-3.3,是因為它的推理能力比Llama-3.1略好。

對於蒸餾模型,作者僅使用了SFT,沒有包含RL階段。雖然引入RL可以大幅提升模型的效能,但作者在這裡的主要目的還是為了展示蒸餾技術的有效性,而RL階段的探索則留待後續的研究。

PS:另外,其實也可以用最終的DeepSeek-R1來產生上述數據,重新建構蒸餾所用的80萬個數據,蒸餾後的模型可能會有更好的效果;但代價就是資料需要重建。

類似文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *