看DeepSeekR1的論文時,我突然想起了AlphaGo

MLNLP

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


社群的願景是促進國內外自然語言處理,機器學習學術界、產業界和廣大愛好者之間的交流和進步,特別是初學者同學們的進步。
轉載自 | 知乎
作者 | 真中合歡
最近deepseek-r1和kimi k1.5的論文引起了廣泛的關注,今天給大家帶來一篇好友@真中合歡的文章,《看DeepSeek R1的論文時,我突然想起了AlphaGo》。
等了好久,終於等來R1的論文,我在當天晚上第一時間拜讀。整篇論文的實驗和理論給我一種簡潔的優雅,和DeepSeek-V3那篇論文的感覺完全不同。讀論文的過程中,我就想起了曾經看過的AlphaGo。於是也想發表一些淺顯的看法,有不對的地方歡迎指出。

Reward設計

讀完這篇論文,或者說讀論文的過程中,R1的reward模型就給我留下了深刻印象:基於規則的獎勵模型。
R1在文中提到,自己為什麼沒有用PRM:
第一,在一般推理中,明確界定細粒度的推理步驟比較困難。第
二,判斷當前推理中間步驟是否正確非常困難。使用模型進行自動標註差強人意,而手動標註不利於擴大規模。
第三,一引入基於模型的 PRM,就不可避免地會有獎勵劫持問題,動態重訓獎勵模型資源開銷大。
我非常認同這一觀點。因為從事LLM之初,我首先負責的是預訓練,所以一個方法能否 scaling up 成為了我後面做持續訓練、post-train時,評估這個方法最終能不能work並上到線上模型的重要維度(事實也證明,這樣的方法基本都是work的),所以我很認同第二點。雖然現在有很多MC構造資料訓練PRM的方法可以scaling up,但是前段時間qwen 數學推理的論文也提到了MC的方法就是會有幻覺,不如llm as judge,更不如人類標註,這裡R1索性不用PRM了。但是r1因為要避免reward hacking,直接連基於模型的ORM都拋棄了,我覺得還是有魄力的。畢竟很多工作也表明了稠密reward要好於稀疏reward。但是仔細想想,其實qwen的那篇論文也提到了ORM有一定的PRM的特性,其實也會出幻覺。

模型訓練

對於模型主體訓練,R1使用了一個多階段策略:
  • 首先利用base 模型+ 一些prompt + rule-based reward ,跳過SFT直接上GRPO強化,目標是讓reward提升,也就是提升做題準確率。這個過程中模型的輸出不斷變長,開始學會反思,但是這個階段的推理過程很難理解。這個時候的模型命名為R1 Zero
  • 第二步利用 R1 Zero 生成資料進行RS,留下推理過程正常的。再混合一些非推理資料,對base 模型SFT,再上強化,得到最終的R1。
首先能夠直接在base模型上RL我不是很意外,因為我們現在都會把SFT資料加到pretrain裡。比如qwen系列的pretrain模型,調一調prompt,基本的指令是能follow的。而且模型越貼近pretrain,幻覺越少這一點也讓我看好這種做法。
其次是看到模型自然的產生反思我也不是很意外,在我做的一些RLHF的實驗中,模型只要輸出能夠變長,經常能看到自然的出現反思,不過我的反思大多最終反思出一個錯誤的結果。
我猜測是因為如果模型輸出有變長的趨勢,在輸出完答案後,自然會用剩下的“額度”去check答案對不對。不過這兩年的大模型經驗也讓我認識到一點,模型一個能力的“湧現”,必定是訓過這種型別的資料。所以根本問題其實是為什麼強化能在取樣的過程中採出這種response,以及為什麼模型可以學會這種response而不是更多的去學別的response。(強化的時候模型的輸出為什麼變長或變短,為什麼學了這種型別而沒學另一種型別的response,探索穩定訓練的癥結所在,正好是我最近的研究內容,希望能有個明確的結果)
另一個是關於GRPO使用的KL loss。這個KL loss不是像 PPO 一樣加在 reward 裡乘在機率上,而是單獨減去這個KL loss。並且這個KL loss 使用了 http://joschu.net/blog/kl-approx.html,而不是直接用蒙特卡洛估計。
我在做RLHF、蒸餾、自約束等需要KL loss的方法時也發現,當使用乘性KL時,比如將KL蘊含在reward分數里,乘在動作的對數機率上:
可以採用蒙特卡洛估計的KL,允許KL估計值為負:
但是當最終loss使用加性KL時:
一旦不是計算全詞表KL,而是取樣計算KL,基本都需要確保KL非負來降低方差,不能再使用蒙塔卡洛估計。可以使用GRPO中的K3估計器,甚至直接上個絕對值或者平方都比蒙塔卡洛估計要好。

為什麼想起了AlphaGo

其實我不是在讀到R1後面說從AlphaGo汲取靈感,使用MCTS但是失敗了這裡想到的AlphaGo。我是看到 R1 zero 到 R1 這裡想起AlphaGo到AlphaZero。這正好是一個相反的過程。AlphGo用模仿學習+強化訓出了一個極強的AI,然後拋棄人類,直接自我博弈產生了AlphaZero。我記得之前聽一些下圍棋的同學說過,他們看AlphaZero的開局看不懂,不建議跟AlphaZero學圍棋。
deepseek使用Zero進行冷啟,但是Zero的思考過程難以理解,所以從zero生成的資料中拒絕取樣,留下一部分規整的資料SFT+RL產出正式版R1。
所以我這裡擅自猜測,deepseek會不會是先用SFT+RL訓了一版,然後再訓出的Zero,發現Zero效果喜人才拿來做RS訓出正式的R1。
另一個點是GRPO、RLOO這種取樣多次作為baseline的做法,相比於貪婪取樣和一次取樣+value function,更像AlphaGo的MCTS。不過可惜的是deepseek的探索失敗了。

最後

讀完論文,其實我唯一的疑惑就是,不在600B這麼大規格的模型上,而是在100B甚至更小的模型上,能否走通這個路線。不過不管怎麼說,R1這篇論文都是對我的極大鼓舞,起碼後面多了一個比較明確的嘗試方向。
技術交流群邀請函
△長按新增小助手
掃描二維碼新增小助手微信
請備註:姓名-學校/公司-研究方向
(如:小張-哈工大-對話系統)
即可申請加入自然語言處理/Pytorch等技術交流群

關於我們

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

相關文章