@看DeepSeek R1的论文时,我突然想起了AlphaGo

看DeepSeek R1的论文时,我突然想起了AlphaGo - 知乎

R1的reward模型就给我留下了深刻印象:基于规则的奖励模型。

  • R1在文中提到,自己为什么没有用PRM:#card

    • 第一,在一般推理中,明确界定细粒度的推理步骤比较困难。

    • 第二,判断当前推理中间步骤是否正确非常困难。使用模型进行自动标注差强人意,而手动标注不利于扩大规模。

    • 第三,一引入基于模型的 PRM,就不可避免地会有奖励劫持问题,动态重训奖励模型资源开销大。

  • 因为从事LLM之初,我首先负责的是预训练,所以一个方法能否 scaling up 成为了我后面做持续训练、post-train时,评估这个方法最终能不能work并上到线上模型的重要维度(事实也证明,这样的方法基本都是work的),所以我很认同第二点。#card

    • 虽然现在有很多MC构造数据训练PRM的方法可以scaling up,但是前段时间qwen 数学推理的论文也提到了MC的方法就是会有幻觉,不如llm as judge,更不如人类标注,这里R1索性不用PRM了。

    • 但是r1因为要避免reward hacking,直接连基于模型的ORM都抛弃了,我觉得还是有魄力的。毕竟有不少工作表明了稠密reward在抗噪和提点方面的优势。

    • 但是仔细想想,其实qwen的那篇论文也提到了ORM有一定的PRM的特性,其实也会出幻觉(hacking)。

对于模型主体训练,R1使用了一个多阶段策略:#card

  • 首先利用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,幻觉越少这一点也让我看好这种做法。#card

  • 其次是看到模型自然的产生反思我也不是很意外,在我做的一些RLHF的实验中,模型只要输出能够变长,经常能看到自然的出现反思,不过我的反思大多最终反思出一个错误的结果。

  • 我猜测是因为如果模型输出有变长的趋势,在输出完答案后,自然会用剩下的“额度”去check答案对不对。不过这两年的大模型经验也让我认识到一点,模型一个能力的“涌现”,必定是训过这种类型的数据。所以根本问题其实是为什么强化能在采样的过程中采出这种response,以及为什么模型可以学会这种response而不是更多的去学别的response。(强化的时候模型的输出为什么变长或变短,为什么学了这种类型而没学另一种类型的response,探索稳定训练的症结所在,正好是我最近的研究内容,希望能有个明确的结果)

另一个是关于GRPO使用的KL loss。这个KL loss不是像 PPO 一样加在 reward 里乘在概率上,而是单独减去这个KL loss。并且这个KL loss 使用了 [[K3 估计器]] 估计,而不是直接用蒙特卡洛估计。#card

  • 我在做RLHF、蒸馏、自约束等需要KL loss的方法时也发现,当使用乘性KL时,比如将KL蕴含在reward分数里,乘在动作的对数概率上:

& r_{x_t}=\operatorname{reward}\left(x_{<t}\right)-\beta K L(\theta | \text { ref }) \
& J=f\left(r_{x_t}\right) \log \pi_\theta\left(x_t\right)
\end{aligned}

+可以采用蒙特卡洛估计的KL,允许KL估计值为负:+ + 可以采用蒙特卡洛估计的KL,允许KL估计值为负: +

K L(\theta | r e f)=E_{x_t \sim \pi_\theta} \log \frac{\pi_\theta\left(x_t\right)}{\pi_{r e f}\left(x_t\right)} \approx \frac{1}{N} \sum_{x_t} \log \frac{\pi_\theta\left(x_t\right)}{\pi_{r e f}\left(x_t\right)}

+但是当最终loss使用加性KL时:+ + 但是当最终loss使用加性KL时: +

J=f\left(r_{x_t}\right) l o g \pi_\theta\left(x_t\right)-\beta K L(\theta | r e f)

+ 一旦不是计算全词表KL,而是采样计算KL,基本都需要确保低方差KL的方案,不能再使用蒙塔卡洛估计。可以使用GRPO中的K3估计器,甚至直接上个绝对值或者平方都比蒙塔卡洛估计效果好。 为什么想起了AlphaGo#card + 其实我不是在读到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的探索失败了。

作者

Ryen Xiang

发布于

2025-04-16

更新于

2025-04-16

许可协议


网络回响

评论