DeepSeek 系列模型詳解之 DeepSeek Math
DeepSeek Math發布于2024年2月,雖然是一個7B參數量的模型,但在Math基準榜單上的表現卻超過了多個30B~70B參數量的開源模型。
一、技術亮點
1. 數據集
使用Common Crawl提取的120B(1200億個)高質量數學網頁數據(具體包括與數學相關的token,以及自然語言和代碼數據等),總數據量是開源數據集OpenWebMath的9倍。如此大規模且高質量的數據集為模型提供了豐富的數學知識背景,使得它在處理數學相關任務時具有更強的能力。
2. 訓練策略
基于代碼領域模型DeepSeek-Coder-v1.5進行初始化,而不是從通用語言模型開始。從而賦予模型更好的數學推理能力。
3. 對齊技術
引入了一種近端策略優化(PPO)的變體——群組相對策略優化(GRPO)。GRPO通過將相似的任務或狀態分組,并根據它們之間的相對關系來調整獎勵信號,從而增強了模型的泛化能力和推理性能。此外,GRPO丟棄了Critic Model,顯著減少了訓練所需的顯存,提高了訓練效率和對齊效果。
4. 數學基準表現
在中文和英文數學基準榜單上,DeepSeek Math的表現超過了Mistral 7B、Llemma-34B等模型,并且其數學推理能力逼近GPT-4,與Minerva 540B的效果相當。
二、數據
1. 數據采集
如圖所示,是一個迭代Pipeline,展示了如何從一個種子語料庫(例如,一個小規模但質量高的數學相關數據集)開始,系統地從Common Crawl收集大規模數學語料庫。
整體數據采集過程是迭代式的。經過四輪數據收集迭代,最終收集了3550萬個數學網頁,總計1200億個token。具體流程如下:
- 選擇OpenWebMath(一個高質量數學網頁文本的集合)作為初始種子語料庫。并使用這個語料庫,訓練fastText模型。
- 利用訓練好的FastText模型,在包含400億網頁的Common Crawl中召回更多與數學相關的網頁。
- 在召回的數學網頁中,通過統計識別出與數學相關的域名(例如,mathoverflow.net)。
- 對這些域名下的URL路徑進行人工標注,標記出與數學內容相關的路徑(例如,mathoverflow.net/questions)。
- 將這些特定路徑下的網頁,如果它們未被前述步驟召回,則將它們作為正樣本加入到種子集合中,以供下一輪迭代使用。重復這一過程直到完成四輪迭代。
為了避免基準污染,沿用DeepSeek-Coder的n-gram過濾方法,過濾掉包含來自英語數學基準(如GSM8K和MATH)以及中文基準(如CMATH和AGIEval)的問題或答案的網頁。過濾標準如下:
- 10-gram匹配:任何包含與評估基準中的子字符串完全匹配的10-gram文本段落都將從數學訓練語料庫中移除。
- 短文本精確匹配:對于長度不足10-gram但至少有3-gram的基準文本,采用精確匹配方法過濾受污染的網頁。
2. 與開源數據對比
為了驗證DeepSeekMath數據的質量,采用相同的初始化模型(DeepSeek-Coder-v1.5)和訓練設置,在多個不同的數學數據集上分別訓練了1500億個token,并對比最終模型的效果。
如下圖展示了不同數學數據集訓練模型的效果對比。紅線代表使用DeepSeekMath數據訓練的模型,其在多個數學基準上的表現顯著領先于其他數據集。特別地,在一個epoch范圍內(例如對于Proof-Pile-2是50B tokens),DeepSeekMath數據訓練的模型效果更好,進一步證明了其數據質量的優越性。
下表展示了更多詳細的榜單和數據集結果對比,DeepSeekMath數據在以下幾個方面表現出優勢:中英雙語、更大規模、更高質量。
三、訓練設置
DeepSeek Math對一個具有13億參數的通用預訓練語言模型進行數學訓練。該模型與DeepSeek LLM采用相同框架,記為DeepSeek LLM 1.3B。在每個數學語料庫上分別對模型進行1500億token的訓練。所有實驗均使用高效輕量的HAI-LLM訓練框架進行。以下是詳細的訓練設置:
(1) 使用AdamW優化器,參數設置如下:
- 動量參數 (\beta_1 = 0.9)
- 動量參數 (\beta_2 = 0.95)
- 權重衰減系數 (weight_decay = 0.1)
(2) 采用多步學習率調度策略:
- 預熱階段:學習率在前2000個warmup steps后線性增加到最大值。
- 第一階段:在訓練進程的80%時,學習率降低到峰值的31.6%。
- 第二階段:在訓練進程的90%時,學習率進一步降低到峰值的10.0%。
(3) 最大學習率設置為。
(4) 使用400萬個token的批量大小(batch size)。
(5) 上下文長度設置為4000個token(context length)。
四、對齊階段
1. 監督式微調SFT
(1) 數據集
DeepSeek Math構建了一個數學指令微調數據集,涵蓋來自不同數學領域、具有不同復雜程度的中英文數學問題。這些問題與鏈式思維(Chain-of-Thought, CoT)、程序思維(Program-of-Thought, PoT)和工具集成推理格式(Tool-Integrated Reasoning Format)呈現的解決方案一一配對。總共有776,000個訓練樣本。
- 英語數學數據集:為GSM8K和MATH問題標注了工具集成解決方案,并采用了MathInstruct的一個子集,以及Lila-OOD的訓練集,其中的問題通過思維鏈(CoT)或程序思維(PoT)解決。英文數據集涵蓋了數學的多個領域,如代數、概率、數論、微積分和幾何等。
- 中國數學數據集:收集了涵蓋76個子主題(如線性方程)的中文 K-12 數學問題,并標注了 CoT 和工具集成推理格式的解決方案。
(2) 微調訓練
基于 DeepSeekMath-Base 進行數學指令調優,得到DeepSeekMath-Instruct 7B。訓練樣本隨機拼接,直到達到4K token的最大上下文長度。對模型進行500個步驟的訓練,批量大小為256,恒定學習率為。
2. 強化學習RL
(1) 從PPO到GRPO
近端策略優化(Proximal Policy Optimization,PPO)是一種基于演員-評論家(actor-critic)的強化學習算法,廣泛應用于大語言模型的強化學習微調階段。PPO通過最大化以下替代目標來優化大模型:
其中,
和
分別是當前策略模型和舊策略模型
- q和o分別是從問題數據集和舊策略模型
中采樣得到的問題和輸出。
- 參數是PPO中引入的剪切相關超參數,用于穩定訓練。
是優勢值,通過廣義優勢估計(Generalized Advantage Estimation, GAE)計算得出。
在PPO中,獎勵函數 和一個學習的價值函數 起著關鍵作用。因此,價值函數需要與策略模型一同訓練,為了緩解獎勵模型的過優化問題,標準方法是在每個 token 的獎勵中添加來自參考模型的每個 token 的 KL 散度懲罰項,即:
其中,
是獎勵模型。
是參考模型,通常是初始的監督微調(SFT)模型。
-
是KL懲罰的系數。
由于PPO中使用的價值函數通常是與策略模型規模相當的另一個模型,這帶來了巨大的內存和計算負擔。此外,在強化學習訓練期間,價值函數在優勢值計算中被用作基線以減少方差。然而,在大語言模型的情境中,通常只有最后一個 token 由獎勵模型賦予獎勵分數,這可能會使在每個 token 上都準確的價值函數的訓練變得復雜。
為了解決這些問題,DeepSeekMath提出了群組相對策略優化(Group Relative Policy Optimization,GRPO)。GRPO無需像PPO那樣進行額外的價值函數近似,而是使用針對同一問題生成的多個采樣輸出的平均獎勵作為基線。如下圖所示:
對于每個問題q,GRPO從舊策略中采樣
個輸出
然后通過最大化以下目標來優化策略模型:
其中,
和
是超參數。
是基于同一組內輸出的相對獎勵計算的優勢值。
具體步驟如下:
① 初始化策略模型:使用初始策略模型。
② 迭代優化:
- 參考模型更新:將當前策略模型
作為參考模型
。
- 采樣輸出:對于每個問題
,從舊策略模型
中采樣
個輸出
。
- 計算獎勵:使用獎勵模型
計算每個采樣輸出
的獎勵
。
- 計算優勢值:通過組相對優勢估計計算每個 token 的優勢值
。
- 更新策略模型:通過最大化 GRPO 目標函數更新策略模型
。
- 更新獎勵模型:通過連續訓練使用回放機制更新獎勵模型
。
GRPO利用組相對的方式計算優勢值,這與獎勵模型的比較性質非常契合,因為獎勵模型通常是在關于同一問題的輸出之間的比較數據集上進行訓練的。
此外,與PPO中使用的KL懲罰項不同,GRPO通過以下無偏估計器估計KL散度:
(2) 采用GRPO的結果監督強化學習
對于每個問題,從舊策略模型
中采樣
個輸出
。然后,使用獎勵模型對這些輸出進行評分,得到
個獎勵
。
接下來,這些獎勵通過減去組平均值并除以組標準差進行歸一化。歸一化后的獎勵用于設置每個輸出的優勢值
,即
最后,通過最大化目標函數來優化策略模型。
(3) 采用GRPO的過程監督強化學習
結果監督(Outcome Supervision)僅在每個輸出的末尾提供獎勵,這在復雜的數學任務中可能不夠充分和高效。過程監督(Process Supervision)在每個推理步驟的末尾提供獎勵。
具體來說,給定問題和從舊策略模型
中采樣的
個輸出
,使用過程獎勵模型對每個步驟的輸出進行評分,得到相應的獎勵:
其中,
是第
步的結束token索引。
是第
個輸出的總步數。
接下來,這些獎勵通過減去組平均值并除以組標準差進行歸一化:
然后,過程監督計算每個 token 的優勢值為后續步驟的歸一化獎勵之和:
最后,通過最大化目標函數來優化策略模型。
(4) 迭代強化學習
在強化學習訓練過程中,舊的獎勵模型可能不足以監督當前的策略模型。因此,DeepSeek Math還探索了迭代強化學習(Iterative RL)與GRPO的結合。
如下算法所示,在迭代 GRPO 中,根據策略模型的采樣結果為獎勵模型生成新的訓練集,并使用一種納入 10% 歷史數據的回放機制持續訓練舊的獎勵模型。然后,將參考模型設置為策略模型,并使用新的獎勵模型持續訓練策略模型。
具體步驟詳解如下:
(1) 初始化策略模型和獎勵模型
。
(2) 迭代過程:
- 參考模型更新:將當前策略模型
作為參考模型
。
- 采樣輸出:對于每個問題
,從舊策略模型
中采樣
個輸出
。
- 計算獎勵:使用獎勵模型
計算每個采樣輸出
的獎勵
。
- 歸一化獎勵:對獎勵進行歸一化處理,得到
。
- 計算優勢值:計算每個 token 的優勢值
為后續步驟的歸一化獎勵之和。
- 更新策略模型:通過最大化 GRPO 目標函數更新策略模型
。
- 更新獎勵模型:通過連續訓練使用回放機制更新獎勵模型
,并保留10%的歷史數據以確保獎勵模型的穩定性。
五、模型效果
下表評估的是模型未使用工具情況下,通過自身CoT解決數學題的能力。在MATH數學競賽數據集上,DeepSeekMath-RL 7B超過了7B~70B所有開源模型,以及大多數閉源模型(例如Inflection-2和Gemini Pro)13%的絕對值,非常接近GPT-4和Gemini Ultra性能。
其中值得注意的是,DeepSeekMath-RL 7B所有評估指標上都超過了基準模型DeepSeekMath-Instruct 7B,展示了GRPO強化學習訓練的有效性。
參考:https://arxiv.org/abs/2402.03300