
社群是國內外知名的機器學習與自然語言處理社群,受眾覆蓋國內外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估計值為負:
為什麼想起了AlphaGo
最後

掃描二維碼新增小助手微信
關於我們
