DeepSeek强化学习被复制成功


DeepSeek就像打破了“四分钟跑一英里”的纪录一样,做了一件大家以前觉得不可能的事。突然之间,语言模型通过“RL强化学习”变得超级厉害,而且它的规模很小,小到一个博士生几天就能重新做出来,如下,今年肯定会很疯狂!

我们在CountDown游戏里重新做了DeepSeek R1-Zero,结果一切都很顺利。通过强化学习,一个只有30亿参数的小语言模型(LM)自己学会了检查答案和搜索解决方案。你只需要花不到30美元,就能亲自体验这种“啊哈!”的时刻。代码在这里:github.com/Jiayi-Pan/Tiny…

我们学到了这些:
方法:我们按照DeepSeek R1-Zero的方法——给一个基础的语言模型、一些提示和真实的奖励,然后运行强化学习(RL)。我们把这个方法用在了CountDown游戏上:这个游戏要求玩家用给定的数字和加减乘除算出目标数字。

结论:真的有用!模型一开始只是随便输出答案,但慢慢学会了修改和搜索的策略。比如,在下面的例子里,模型提出了一个解决方案,自己检查对不对,然后不断修改,直到答案正确。完整的实验记录在这里:https://wandb.ai/jiayipan/TinyZero

CountDown游戏的快速测试:
基础模型的质量很重要:我们试了Qwen-2.5-Base的0.5B、1.5B、3B到7B的模型。0.5B的模型只会随便猜一个答案然后停下来。但从1.5B开始,模型就学会了搜索、自我验证和修改答案,所以它们的表现越来越好。

基础模型和指导模型都可以:

  • 指导模型学得更快,但最后的表现和基础模型差不多。
  • 指导模型的输出更有条理、更容易读。所以不需要额外的指令调整,这也支持了R1-Zero的设计。

具体的RL算法不重要:
我们试了PPO、GRPO和PRIME这些算法,结果都差不多。我们没有时间调整参数,所以没法说哪个算法更好。

模型的推理行为取决于任务:

  • 在CountDown游戏里,模型学会了搜索和自我验证。
  • 在数字乘法任务里,模型学会了用分布规则分解问题,一步步解决。
训练这个模型的成本不到30美元!我们希望这个项目能让更多人了解强化学习的研究,让它变得更简单、更容易上手!

简单解释:
通过一种叫“RL强化学习”的方法,这个AI程序学会了自己检查答案对不对,还能自己想办法解决问题,不需要别人告诉它怎么做。

这个程序的任务是用一些给定的数字(比如19、36、55、7)和加减乘除,想办法算出目标数字(比如65),每个数字只能用一次。

这个AI会一步一步解释它是怎么想的,尝试不同的组合,发现错误后会改进,直到找到正确答案。

对人工智能发展的影响:
自我验证:

  • 这个程序在解决问题时会自己检查答案,有点像人类思考时会反思自己做得对不对。
  • 这是AI向自主工作迈出的一步,以后可能不需要别人监督,它自己就能改正错误。
高效开发:
  • 用一个小一点的程序(30亿个“小零件”)就能做到这些事,说明不一定需要像GPT-4那样超大的程序才能很厉害。
  • 这让开发AI变得更便宜、更容易,普通人也能用得起。
推理和解决问题:
  • 以前的AI可能直接给答案,但这个AI会解释它是怎么想的。
  • 这让人们更信任它,也更容易理解它的答案,这对医学、法律或科学研究这些领域很重要。
概括:
  • 这个AI不仅能解决数学问题,还能把这种能力用到其他任务上,比如修代码或者研究科学问题。
  • 这说明AI正在变得更通用,能处理更多事情。
低成本应用:
  • 用这个技术的成本“不到30美元”,说明厉害的AI功能越来越便宜了,以后小公司甚至个人都能用得起。

总结:
这个研究展示了“强化学习”怎么让一个小一点的AI程序也能解决复杂的问题。这让AI变得更便宜、更容易理解,还能用到更多地方。

DeepSeek-R1 的完全开放复刻:
https://github.com/huggingface/open-r1

步骤1:通过从DeepSeek-R1中提取高质量的推理语料库来复制R1-Distill模型。
步骤2:复制DeepSeek用于创建R1-Zero的纯RL管道。这将涉及为数学、推理和代码策划新的大规模数据集。
第3步:展示我们可以从基础模型-SFT-RL通过多阶段训练。

此 repo 的目标是构建 R1 管道的缺失部分,以便每个人都可以重现并在此基础上构建。该项目设计简单,主要包括:

  • src/open_r1包含训练和评估模型以及生成合成数据的脚本:
    • grpo.py:在给定的数据集上使用 GRPO 训练模型。
    • sft.py:数据集上模型的简单 SFT。
    • evaluate.py:在 R1 基准上评估模型。
    • generate.py:使用Distilabel从模型生成合成数据。
  • Makefile包含一个易于运行的命令,利用上述脚本执行 R1 管道中的每个步骤。