三張圖速通DeepSeek-R1論文和技術原理

MLNLP

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


社群的願景是促進國內外自然語言處理,機器學習學術界、產業界和廣大愛好者之間的交流和進步,特別是初學者同學們的進步。
來源 | 知乎
作者|木堯

總覽

最近在研究和復現 DeepSeek-R1(671B 引數 MoE,啟用 37B 引數,128K 上下文的深度思考模型)論文,於是畫了三張圖來把整個論文核心內容總結一下,歡迎大家討論!核心是三組模型:
  • 一是純強化學習(後文簡稱 RL)方案訓的 DeepSeek-R1-Zero 驗證技術方案可行,Reasoning 能力提升;
  • 二是 80w 有監督微調(後文簡稱 SFT)+ 類似剛才 RL 方案訓練的 DeepSeek-R1,能力對標 OpenAI o1;
  • 三是直接拿剛才 80w 對 Qwen/Llama 系列模型 SFT 蒸餾出來的小模型,能力對標 OpenAI o1-mini。
先上圖!
圖一:DeepSeek-R1-Zero 訓練
圖二:DeepSeek-R1 訓練
圖三:DeepSeek-R1-Distill 系列小模型蒸餾

分別展開三張圖

圖一:DeepSeek-R1-Zero 訓練

圖一:DeepSeek-R1-Zero 訓練
先說意義:DeepSeek-R1-Zero 首次透過純 RL 而不用任何 SFT 激發 LLM 的推理能力,讓模型自己探索解決複雜問題的 CoT,生成能自我驗證(self-verification)、反思(reflection)的 long-CoT。
再看動機:RL在推理任務中已被證明具有顯著的效果,然而之前的工作嚴重依賴於監督資料,收集耗時費力。所以能不能讓 LLM 透過純 RL 進行自我進化嘞?於是有了這一部分的工作。
訓練策略及最佳化目標:採用了 DeepSeek 自家提出來的 GRPO 演算法(Group Relative Policy Optimization)。GRPO 放棄了與策略模型大小相同的 Critic Model 來節省 RL 訓練成本。具體地,對於每個問 ,GRPO 從舊策略模型 中取樣一組輸出 {},然後透過最大化以下目標函式來最佳化策略模型 表示待最佳化的引數):
GRPO 的最佳化目標
簡單來說,就是針對分佈 P(Q) 中取樣的一個問題 q,透過計算這一組 G 個輸出結果的獎勵得分的期望(即對所有問題的平均)來獲得整個目標函式的期望值。其中,優勢函式 用來計算當前策略相比舊策略的優勢,表示當前策略在該狀態下的表現是否好於舊策略。而使用KL散度(Kullback-Leibler divergence)度量當前策略()與一個參考策略()之間的差異,是為了從而約束策略的更新,避免策略的過大變化。具體可以去自行研究一下 GRPO 的論文,這裡就不再展開太細。
獎勵建模:並沒有用 Reward Model(發現存在 reward hacking),因此用的基於規則的獎勵,包括兩方面:
  • 準確性獎勵:準確性 RM 模型評估答案是否正確。例如,數學問題結果是確定的,所以可以讓模型最後把答案包在 \box 裡以便基於規則驗證正確性。對於 LeetCode 問題,可以使用透過執行測試用例來判斷對不對。
  • 格式獎勵:要求模型將思考過程放在 <think> 和 </think> 標籤之間。
練模版:因為是從預訓練的 base 模型開始訓,所以並沒有用 chat templete,而是如圖模版,直接拼上各種 prompt 讓模型往後續寫輸出結果,純純根據獎勵來自我最佳化:
訓練模版
實驗觀察到模型自我進化:隨著 test-time computation(也就是生成 token 數)的增加,DeepSeek-R1-Zero 湧現出複雜的行為,例如反思,以及探索解決問題的替代方法,還觀察到有趣的”頓悟時刻“(aha moment)。這些行為並非人類明確引導的結果,而是模型與強化學習環境互動的自發結果。這種自發性顯著增強了 DeepSeek-R1-Zero 的推理能力,使其能夠以更高的效率和準確性處理更具挑戰性的任務,驗證了RL的方案可行性。
缺點:純 RL 訓出來的 DeepSeek-R1-Zero 雖然推理能力提升,但可讀性不太好(比如沒有 markdown 格式導致看起來不是很順眼),而且容易出現語種混雜(尤其是對於非中英語種的 prompt)。所以此時的模型並不能作為一個合格的類 o1 模型釋出給使用者使用,於是有了接下來圖二的 DeepSeek-R1 訓練。

圖二:DeepSeek-R1 訓練

圖二:DeepSeek-R1 訓練
訓練過程:主要包含四個大步驟,冷啟動sft、推理任務強化學習、拒絕取樣與sft、全場景強化學習。
第一步,Cold Start(冷啟動)。
與 DeepSeek-R1-Zero 不同,為了避免預訓練 base 直接 RL 早期不穩定,於是構建幾千條 long CoT 資料來微調模型作為 RL 的初始化 actor。設計了可讀性高的 pattern,定義輸出格式為 |special token|<思考過程>|special token|<答案總結>。探索了幾種方法來構建資料:
  • 使用 long CoT 作為 example 的 few-shot 提示
  • 透過 prompt 讓模型生成包含反思(reflection)和驗證(verification)的詳細答案
  • 收集 DeepSeek-R1-Zero 的可讀格式輸出,並透過人工標註後處理來完善結果
第二步,推理任務RL訓練。
在使用冷啟動資料對 DeepSeek-V3-Base 進行微調後,使用與DeepSeek-R1-Zero 相同的 RL 策略進行訓練直到收斂。這一階段專注於提升模型在推理密集型任務(如編碼、數學、科學和邏輯推理)中的推理能力,這些任務涉及定義明確的問題和清晰的解決方案。
獎勵建模的 trick:在訓練過程中,觀察到 CoT 經常出現語言混用,特別是 prompt 涉及多種語言時。為了緩解語言混用問題,我們在強化學習訓練中引入了語言一致性獎勵,該獎勵計算為鏈式推理中目標語言單詞的比例。儘管消融實驗表明,這種對齊會導致模型效能略有下降,但該獎勵與人類偏好一致,使模型輸出更具可讀性。訓練的時候將推理任務的準確性獎勵與語言一致性獎勵直接相加,形成最終獎勵。
第三步,拒絕取樣與sft。
拿上一步RL收斂的ckpt用於生成sft資料。與冷啟動主要關注推理任務不同,這一階段納入了其他領域的資料,以增強模型在寫作、角色扮演等通用任務中的能力。具體來說,按照以下方式生成資料並微調模型。
  • 推理資料:透過 reasoning prompts 用拒絕取樣生成推理軌跡。在前一階段,僅納入了可以透過基於規則的獎勵進行評估的資料。然而,在這一階段,透過納入額外的資料擴充套件了資料集,其中一些資料使用生成式獎勵模型,將真實結果和模型預測輸入 DeepSeek-V3 進行判斷。此外,由於模型輸出有時混亂且難以閱讀,於是過濾掉了語言混用、長段落和程式碼塊的鏈式推理。每個提示取樣多個回答,並僅保留正確的回答。總共收集了約 60萬條推理相關的訓練樣本。
  • 非推理資料:對於非推理資料,如寫作、事實問答、自我認知和翻譯,重用 DeepSeek-V3 的部分監督微調資料集,透過提示 DeepSeek-V3 生成 CoT 然後回答問題。對於更簡單的問題,如“你好”,不會在回答中提供 CoT。最終收集了大約20萬條與推理無關的訓練樣本。
使用這 80w 資料集直接對預訓練模型 DeepSeek-V3-Base 進行 2 epoch 的微調。
第四步,全場景強化學習。
為了進一步使模型與人類偏好對齊,這裡再進行強化學習,旨在提升模型的有用性和無害性,同時最佳化其推理能力。具體使用了組合的獎勵訊號和多樣化的提示分佈來訓練模型。
  • 對於推理資料,遵循 DeepSeek-R1-Zero 中概述的方法,利用基於規則的獎勵來指導數學、編碼和邏輯推理領域的學習過程。
  • 對於通用資料,採用獎勵模型來捕捉複雜且微妙場景中的人類偏好。
資料方面,基於 DeepSeek-V3 的流程,並採用類似的偏好對和訓練集的 prompt 分佈。
  • 有用性方面,專注於最終總結,確保評估強調響應對使用者的實用性和相關性,同時儘量減少對底層推理過程的干擾。
  • 無害性方面,評估模型的整個答案,包括推理過程和最終答案總結,以識別和減輕在生成過程中可能出現的任何潛在風險、偏見或有害內容。
最終透過組合獎勵和多樣化的資料分佈,訓練出在推理方面表現出色的、優先考慮有用性和無害性的、震驚了一把整個AI圈子的、效能比肩 OpenAI o1 的 DeepSeek-R1。
失敗嘗試:早期其實也嘗試過 o1 釋出那會兒盛傳的過程獎勵模型(PRM)和 蒙特卡洛樹搜尋(MCTS)方案,但效果並沒達到預期。可能是因為:
  • PRM 不太好定義細粒度步驟、每一步正確與否也不好判斷、PRM的引入可能導致 reward hacking 而且還得費資源重新訓獎勵模型;
  • MCTS 對於 next token prediction 任務,並不想下象棋那樣有明確的搜尋空間,token 生成的搜尋空間那可是呈指數增長的;如果給每個節點設定最大擴充套件限制,可能導致模型陷入區域性最優。

圖三:DeepSeek-R1-Distill 系列小模型蒸餾

圖三:DeepSeek-R1-Distill 系列小模型蒸餾
訓練方式:直接用剛才訓 DeepSeek-R1 的 80w 資料對 qwen 和 llama 做 sft,包括 Qwen2.5-Math-1.5B、Qwen2.5-Math-7B、Qwen2.5-14B、Qwen2.5-32B、Llama-3.1-8B和Llama-3.3-70B-Instruct。對於蒸餾模型,僅應用監督微調(SFT),並未包括強化學習階段(儘管加入強化學習可以顯著提升模型效能)。這裡的主要目標是展示蒸餾技術的有效性,將強化學習階段的探索留給更廣泛的學術界。
模型蒸餾的兩個結論:
  • 將更強大的模型蒸餾到小型模型中可以取得優異的結果,而小模型僅依賴本文討論的大規模強化學習可能需要巨大的計算資源,且可能無法達到蒸餾的效能。
  • 儘管蒸餾策略既經濟又有效,但要超越智慧邊界,可能仍需要更強大的基礎模型和更大規模的強化學習。

總結

本文用三張圖介紹了 DeepSeek-R1 論文的三個核心內容(純RL的方案可行性、DeepSeek-R1修煉手冊、蒸餾小模型的潛力)。未來會聚焦通用能力提升(函式呼叫、多輪對話、複雜角色扮演以及 json 輸出等任務上的表現不如 DeepSeek-V3)、語言混用問題解決(尤其是針對非中英prompt)、prompt engineering(比如 DeepSeek-R1 對 prompt 較為敏感,few-shot 會降低效能)、軟體工程任務上的改進等。
最後,放一張論文中的評測圖和 lmarena.ai 的排行,祝國產大模型越來越好!
論文中的評測圖
lmarena 排行(2025.01.28 除夕凌晨)

參考資料

論文:https://github.com/deepseek-ai/DeepSeek-R1/blob/main/DeepSeek_R1.pdf

模型:https://huggingface.co/deepseek-ai/DeepSeek-R1

排行:https://lmarena.ai

技術交流群邀請函
△長按新增小助手
掃描二維碼新增小助手微信
請備註:姓名-學校/公司-研究方向
(如:小張-哈工大-對話系統)
即可申請加入自然語言處理/Pytorch等技術交流群

關於我們

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

相關文章