看DeepSeek R1的论文时,我突然想起了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这篇论文都是对我的极大鼓舞,起码后面多了一个比较明确的尝试方向。

(文:机器学习算法与自然语言处理)

欢迎分享

发表评论