作者:小貍愚@知乎
Arxiv論文地址:https://arxiv.org/abs/2501.12948
ModelScope論文地址:https://modelscope.cn/papers/109508
github論文地址:https://github.com/deepseek-ai/DeepSeek-R1/tree/main
DeepSeek-R1本質上給出了模型訓練中的長鏈推理,或復雜推理問題的一種可行路徑。可貴的是,在論文中DeepSeek給出了一個非常完整的技術實現路徑,還包括了一些失敗的嘗試。這給其他模型廠商提供了完整的復現方式。我們先看最后的評測結果:
可以看到R1的結果幾乎都與OpenAI-o1-1217持平,部分評測集甚至超越了后者,如AIME和MATH。
DeepSeek-R1的訓練路徑是非常簡潔的,這和DeepSeek-V2和V3模型積累的訓練經驗積累存在非常大的關系。
首先我們先明確R1模型的訓練目標,這個非常重要:
Our goal is to explore the potential of LLMs to develop reasoning capabilities without any supervised data, focusing on their self-evolution through a pure RL process.
劃重點:探索幾乎沒有任何監督數據的條件下,模型通過RL訓練,自我更新并涌現復雜推理能力的可能性。
論文中用一句話概括了整體訓練過程,我們先放一下原文:
we introduce DeepSeek-R1, which incorporates a small amount of cold-start data and a multi-stage training pipeline. Specifically, we begin by collecting thousands of cold-start data to fine-tune the DeepSeek-V3-Base model. Following this, we perform reasoning-oriented RL like DeepSeek-R1- Zero. Upon nearing convergence in the RL process, we create new SFT data through rejection sampling on the RL checkpoint, combined with supervised data from DeepSeek-V3 in domains such as writing, factual QA, and self-cognition, and then retrain the DeepSeek-V3-Base model. After fine-tuning with the new data, the checkpoint undergoes an additional RL process, taking into account prompts from all scenarios. After these steps, we obtained a checkpoint referred to as DeepSeek-R1, which achieves performance on par with OpenAI-o1-1217.
訓練路徑:
1.先收集了一部分高質量冷啟動數據(約幾千條),使用該數據fine-tune DeepSeek-V3-Base模型,記為模型A
2.使用A模型用GRPO訓練,使其涌現推理能力,收斂的模型記為B
3.使用B模型產生高質量SFT數據,并混合DeepSeek-V3產生的其他領域的高質量數據,形成一個高質量數據集
4.使用該數據集訓練原始DeepSeek-V3-Base模型,記為模型C
5.使用C模型重新進行步驟2,但是數據集變為所有領域,收斂后的模型記為D,這個模型就是DeepSeek-R1
6.訓練C模型的數據對小模型做蒸餾,效果也非常好
當然,最開始DeepSeek并沒有使用冷啟動,而是直接對DeepSeek-V3-Base進行了GRPO訓練,發現雖然CoT能力提升比較大,但是回復的內容魚龍混雜,甚至有多個語言同時出現的情況,所以才產生了上面比較標準的訓練路徑。
DeepSeek-R1的實驗有很多貢獻,我們列出文章中列出來的:
1.跳過SFT直接使用GRPO做RL,效果一樣很好(或者說,只進行冷啟動階段的幾千條數據的SFT)。這一發現證明強化學習在LLM訓練中的作用比之前預想要大很多,甚至可以取代SFT
個人認為,這一點我們要分開來看,GRPO在少量顯卡上的輕量訓練比較難涌現比較好的效果,因此如果對Instruct或者Base模型進行垂類訓練,SFT仍然是不二之選。
2. RL-采樣SFT-RL-蒸餾SFT的pipeline對其他模型訓練具有啟示作用
3. 較大模型蒸餾的數據用于訓練小模型效果比直接從零RL小模型要好。這一點的發現基本說明數據集本身的好壞對模型訓練起決定性作用,或者說人給不了模型需要的數據,模型才給得了模型需要的數據。換句話說,模型的next-token-prediction具有獨特的生成和自我進化方式,該方式和人類給出的提示數據有所不同,而在不同模型間可能是通用的。這一點也基本決定了未來模型的訓練中使用優質模型蒸餾的數據集,或模型self-improvement會成為重要的訓練路徑。
具體實現
GRPO的reward并沒有采用PRM,而是使用了基于正則的ORM,其中包括了兩個點:
1.評估最終答案是否正確。包含最終結果比對、代碼運行結果等
2.格式獎勵:模型需要將CoT過程放在 之間
疑問:具體的獎勵值是怎么定義的?不連續且稀疏的獎勵可能導致policy不收斂
上面我們提過,最開始的GRPO是沒有冷啟動SFT的,產生的模型叫DeepSeek-R1-Zero,其訓練結果如下:
AIME結果從15.6%一躍到了71%,而且這個訓練過程是不需要任何監督數據的,只需要準確評估最終結果。這也是以PPO、GRPO為主包含Rollout過程的強化學習路徑的優勢所在。而且,隨著Generate-RL的on policy訓練過程,模型涌現了解決復雜任務的能力,甚至出現了反思,以及對復雜的問題產生更多的token和推理過程。
Aha Moment of DeepSeek-R1-Zero A particularly intriguing phenomenon observed during the training of DeepSeek-R1-Zero is the occurrence of an “aha moment”. This moment, as illustrated in Table 3, occurs in an intermediate version of the model. During this phase, DeepSeek-R1-Zero learns to allocate more thinking time to a problem by reevaluating its initial approach. This behavior is not only a testament to the model’s growing reasoning abilities but also a captivating example of how reinforcement learning can lead to unexpected and sophisticated outcomes.
說句題外話,這是否可以印證模型的能力提升,只需要預訓練后來自于真實世界的正負反饋和模型本身的游走呢?那么現在的模型訓練系統的最大問題就是模型和真實世界的交互反饋能力的不足了。
由于Zero模型的游走隨機性比較強,不少問題的推理有可讀性差的問題,因此DeepSeek額外訓練了DeepSeek-R1模型。
1.冷啟動,使用少量示例提示,其中包含長推理鏈,或者直接提示模型生成帶有反思和驗證的詳細答案,或者收集DeepSeek-R1-Zero 的輸出并以可讀格式呈現,并通過人工注釋進行后期處理以細化結果。從這些數據微調DeepSeek-V3-Base
2.在SFT后的模型上執行和Zero上相同的RL,但是為了規避語言混雜的問題,在ORM中添加了語言一致性獎勵,CoT過程中符合要求的語言比例越高則獎勵越高
3.通過拒絕采樣來進行微調。具體來說,首先通過拒絕采樣生成推理軌跡,對部分數據(問題、真實值、采樣值)輸入DeepSeek-V3來判斷軌跡質量,以及過濾掉可讀性差、語言混雜的部分,對每個query保留了多個正確軌跡,收集好的數據集約60w條。對于CoT無關的數據,使用了和DeepSeek-V3相同的數據集并進行采樣,生成了約20w條,總數據集共80w條,使用這個數據集對DeepSeek-V3進行了2 epoch的訓練
4.對上述微調的模型繼續進行GRPO。本次GRPO除了使用上述的ORM判斷外,還增加了對非CoT數據的獎勵,方法是使用了額外的reward model,以符合人類要求的回復習慣以及提高模型的幫助性和無害性
5.使用80w條數據(論文中的意思應該就是上面描述的數據集)對小模型做蒸餾,效果也比較好。DeepSeek沒有做針對小模型的后續RL,雖然效果應該也是不錯的
在對比實驗中,DeepSeek做了針對小模型的RL&蒸餾的實驗對比:
在實驗中,使用小模型做RL的效果,不如使用大模型蒸餾得到的數據SFT得到的小模型的效果。因此,可以得出兩個結論:首先,將更強大的模型蒸餾為較小的模型會產生出色的結果,而較小的模型依賴本文提到的大規模 RL需要巨大的計算能力,并且可能甚至無法達到蒸餾的效果。其次,盡管蒸餾策略既經濟又有效,超越智能的邊界可能仍然需要更強大的基礎模型和更大規模的強化學習。
最后,我們注意下不成功的嘗試:
1.PRM。過程獎勵模型在RL中作用不大,甚至是反作用。我感覺這個和當初把知識圖譜+預訓練結合起來的問題是一樣的,即在大規模transformer結構訓練中使用另外的不可導工具的輔助可能導致不穩定。PRM模型面臨著獎勵欺騙、不可導、效果有限等問題,如果訓練新的PRM模型需要額外的資源和時間
2.蒙特卡洛樹搜索。DeepSeek最初探索了使用蒙特卡羅樹搜索(MCTS)來增強測試時的計算可擴展性。將答案分解為更小的部分,以允許模型系統地探索解決方案空間。提示模型生成多個標簽,這些標簽對應于搜索所需的具體推理步驟。在訓練過程中,首先使用收集到的提示通過由預訓練值模型指導的蒙特卡羅樹搜索找到答案。隨后,使用生成的問題-答案對來同時訓練行為模型和值模型,迭代地改進該過程。這種方法的失敗在于next-token的維度爆炸問題非常嚴重,在優先探索時間下只能采樣一部分路徑,這些路徑可能是不良的,或者是局部最優的,而相關的細粒度價值模型也很難訓練,最終導致policy模型難以迭代改進。雖然Alpha-Go/Zero中使用該算法達到了最優,但由于next-token的維度非常高,因此該算法難以擴展到NLP領域
關于第二點需要額外注意,并非蒙特卡洛方法在NLP領域完全不可用(事實上目前不少工作是基于MCTS采樣達到的SOTA效果),而是從base模型從0開始采樣訓練的時候是不可用的。蒙特卡洛方法的前提要求是要么探索空間的維度可控,要么policy模型的generate過程是可控且多樣的。如果使用instruct(或者說已經具備了一定CoT能力的)模型進行蒙特卡洛采樣效果應該會有不錯的提升。
立春好時節
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.