问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

DeepSeek R1是怎么训练出来的?- R1论文精读

创作时间:
作者:
@小白创作中心

DeepSeek R1是怎么训练出来的?- R1论文精读

引用
1
来源
1.
https://blog.cnbang.net/tech/4160/

DeepSeek R1模型的出现,不仅展示了中国AI技术的实力,也为全球AI研究者提供了一个值得深入研究的案例。本文将从技术角度解析DeepSeek R1模型的核心创新点,包括R1-Zero、R1和蒸馏三个关键部分,帮助读者深入了解这一里程碑式的AI模型。

背景

大语言模型的发展,之前一直是以预训练为主,虽然性能一直在提升,但主要是小修小补,跨越式的GPT5一直出不来。OpenAI在24年9月发布的o1提出了新的路线:在预训练好的模型上,用强化学习做后训练,能显著提高模型推理能力,其效果在解数学、编码等问题上屠榜。

但o1只说了强化学习能让模型学会思维链的方式提升推理能力,其他的发现都没有公布,加上o1一直是期货,12月才正式推出,200美元一个月,普通人都用不上,充满神秘。

而DeepSeek自主研发了通过强化学习让模型学会思维链提升推理能力,性能逼近o1,加上之前DeepSeekV3在预训练基础模型上的创新,推理成本也显著低于o1,直接推出全民免费可用媲美o1的模型,甚至在一些中文语境下效果显著超过o1,大众用户一用感受到NB,业内人士震惊它的创新能力纷纷学习,美国人民恐慌中国AI的发展有超越美国引领技术潮流的可能性,结合大国叙事,爱国情怀,各种元素综合下各觉得都会乐此不疲地研究、使用、讨论,引爆全网。

接下来一步步精读下DeepSeek-R1的论文《DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning》了解现象级R1模型是怎么做出来的。

R1论文

DeepSeek R1是基于预训练好的DeepSeekV3基础模型进行的后训练优化,V3做了很多创新优化,很大降低了预训练模型和模型推理的成本,是R1的基础,这里先不讨论V3,只看R1在V3基础上做了什么后训练。

在DeepSeekR1这篇论文里核心做的三个事:

  1. R1-Zero:首个证明只通过RL而不通过SFT就能让模型涌现推理能力。
  2. R1:新的强化学习后训练范式。
  3. 蒸馏:蒸馏显著提升小模型能力,小模型有潜力。

我们一个个具体看下这三个事。

R1-Zero

R1-Zero证明了对已预训练好的模型,不需要经过SFT,只需要纯粹的RL,就能让模型涌现CoT推理能力。

SFT是监督式微调,也就是准备好一堆标注好的数据,让模型去学习拟合,可以粗略理解为刷题,大量的刷题学习能解决类似的题目;

RL是强化学习,只告诉模型什么是好的什么是不好的,过程中模型自己学习怎么达到目标,可以理解为不靠刷题,自己去理解探索数学和世界的规律,理论上灵活性强,上限更高,还有可能探索出人类未知的能力。

强化学习首次出圈是AlphaGo,AlphaGo先学习人类棋谱,再用强化学习自我对弈进化,而随后的AlphaGo Zero没有人类棋谱,只定义好围棋奖励规则,模型自己学习怎么下,达到更高的水平。R1-Zero这命名也是致敬Alpha-Zero,因为它们非常类似,脱离人类的指导自主发现规律提升智能。

为什么之前没人做到?

  1. 模型能力没达到一定阈值,仅通过强化学习没法涌现。
  2. 强化学习是种方法,过程中用什么算法做价值判定也很大程度影响效果
  3. o1可能已经做了同样的探索和结果,也可能没有,它闭源不公开,而DeepSeek首次探索并公开了。

GRPO vs PPO

R1-Zero最大的不同,是在强化学习中使用GRPO算法代替PPO。GRPO算法也是DeepSeek团队在24年2月《DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models》这篇论文提出的,其核心思想可以理解为两个字:内卷

简单来说,PPO是用一个模型去评估当前输出的收益,模型觉得这个输出好,就更新参数往这方向靠近,类似四六级考试的判定,有个分数线,过了就好,不过就不好;GRPO是让模型一次性输出一组数据,在这组数据中选得分最高的,让模型逐步靠近得分高的输出,类似高考的内卷选拔,你只要比同龄人好,就是好。

更具体的可以看这张图:

图上的一些概念:

  • Reference Model:预训练的大语言模型
  • Reward Model:奖励模型,给定输入和输出,给出得分。可以是基于神经网络训练的模型,使用人类标注数据做训练;也可以是规则模型,定死一些规则做打分。这里的输入是大语言模型一次完整的输出。
  • Value Model:对模型输出的每一步做一个预测,预测当前状态下后续能得到的收益。这里的输入是大语言模型每一次token的输出。
  • Policy Model:我们正在训练的大语言模型。base是Reference Model,训练过程中会不断更新参数,得到我们最终需要的模型。
  • GAE:Generalized Advantage Estimation广义优势估计,评估每一个动作的好坏程度
  • q:输入 question
  • o:输出 output
  • r:模型完整的输出经过Reward Model计算后的分数
  • v:模型每一步的输出后的状态,经过Value Model计算后的价值估计值,用于评估当前token输出的好坏。
  • KL:Kullback-Leibler divergence KL散度,衡量新策略(当前训练中的模型输出的结果)和旧策略(base模型输出的结果)之间的差异,保障训练中策略更新幅度不要过大,保证稳定性。

PPO用Reward Model计算大模型完整输出的奖励分数(r),过程中会跟原始模型的输出做对比(KL),避免偏离太远。大模型每步token输出,都会经过Value Model判定输出对后续奖励的期望值(v),经过GAE函数计算每步动作的好坏程度,更新我们在训练的大模型Policy Model参数。

GRPO去掉了Value Model,对每个输入(q)输出多个结果o1 o2 o3 …,奖励模型判断这些结果的好坏,从中选出最好的,更新模型参数。对算法和公式更详细的介绍,推荐这两个讲解:(1),(2)

GRPO去掉了Value Model,带来了一些好处:

  1. 大大降低计算成本,少了价值模型,训练过程的内存占用、计算量、整体效率都更好。
  2. 更适合开放式的问题推理,不受限于价值模型判断的准确性。
  3. 整个流程也更简洁优美了。

Reward Model

从上图可以看到,主要需要设计的只剩Reward Model,R1-Zero设计了一个基于规则的Reward Model,之所以用简单的规则而不是基于神经网络的模型做奖励判定,一个是不需要训练,简化了流程和降低成本,一个是如果用神经网络模型作为奖励判定,如果这个判定模型不够强,可能会让训练的大语言模型钻空子作弊,效果不一定好。

主要是两个简单的规则:

  1. 答案判断,如果是数学问题,会要求按格式要求输出最终答案,对比答案是否正确,对于LeeCode上的程序问题,会用编译器去判断能不能跑通对应的test case。
  2. 格式判断,有没有按照指定的格式输出内容,也就是思维链的内容在里,输出的内容在里。

训练模板

训练时会输入预置prompt,让模型按格式要求输出。这个模板有意设置得很简单,避免带偏模型,也不会告诉模型要进行反思性推理或者其他推理策略,确保可以观察到模型在强化学习过程中自发去发现怎样的推理方式才是更有效的。

现象&结果

训练过程中两个重要的现象:

  1. 输出越来越长:随着训练量的推进,输出的长度稳步加长,推理能力也随之提升。这也验证了OpenAI o1里提到的test-time scaling,也就是更长的推理输出能更好提升模型推理能力,模型在强化学习过程中自主发现了这个规律。
  2. Aha moment:训练过程中模型学会了停下来重新评估前面的思考,而且使用拟人的口气进行了反思。强化学习过程中人类没有输入任何类似的反思引导,模型能自主进行这种反思,十分有趣。我理解为,在预训练的模型里,模型已经有这样的反思意识潜力,在训练的某次输出过程中偶然出现,而出现后的结果对复杂推理有帮助,强化学习的机制会持续鼓励这样的输出。

训练的结果,在推理相关的benchmark上,基本达到o1的水平:

R1-Zero有非常有趣的发现,即不做监督学习,仅对预训练模型进行强化学习这条路是OK的,最终的模型有媲美o1的推理能力,但当前这种方式训练出的R1-Zero实际对外使用会有些问题,主要是对人不友好,比如输出的内容中英文混杂,猜测是奖励模型并没有做这种人类阅读友好的奖励判定,模型没理由能做好这块。

R1

为了做出一个推理能力强,输出对人类友好,综合能力OK的模型,DeepSeek另外训练了R1模型。

整个流程可以可以看这图,图片来自这个视频,顺便推荐这个视频的讲解。

这里做了两个阶段的后训练,每个阶段都是先SFT,再进行RL,只是数据和目标不同。

一阶段

  1. 用少量的几千个包含了思维链推理的数据,对预训练模型做SFT。虽然上面说R1-Zero不用SFT直接用RL也可以涌现推理思维链,但有少量精品数据做SFT,RL初期就能让模型生成可读性较好的结果,另外可能也能让训练冷启动效率更高,可以看这个视频感受下,在复现过程中,如果没有SFT直接RL,前期要经历比较长的无效训练。
  2. 用跟训练R1-Zero同样的步骤,用coding、数学、科学、逻辑这些推理密集的数据,对SFT后的模型做强化学习。这次强化学习的奖励模型里增加了对语言一致性的奖励,减少模型输出中英夹杂的概率,虽然加了后发现对模型的推理能力会有些下降,但还能接受。

二阶段

  1. 把上述强化学习后的模型,生成与推理相关的数据,并对这些数据择优,包括去掉语言一致性不行的case、去掉长篇大论的case、对同个问题生成多次并选择最好的一次,拿到质量相对好的60w个推理相关数据,加上另外收集标注的20w个跟推理无关,包含写作、事实性回答、翻译等数据,一起对模型再做一次SFT。R1的中文输出很强,更大可能是跟这20w数据的质量高相关。
  2. 把上述SFT后的模型,再做一次强化学习。这次强化学习具体没有展开,主要是引导模型安全输出,过滤有害输出,以及再次提升推理能力的一次训练。这次的奖励模型额外再加上了对通用内容的奖励,在文科内容、日常问答上,应该也准备了一些质量比较高的case和奖励规则模型。

这几个步骤后,R1就训练完成了,可以看到这个基于V3模型的后训练过程成本是很低的,数据量不大,但效果非常显著,特别是在编码和数学问题上,R1相对V3提升了几个档次。

而这个过程,看起来也是可以scale的,可以用这个训好的模型继续多步生成一些case,择优组成新的数据,继续进行SFT和强化学习。

这条显著提升模型推理能力的后训练路跑通了,公开解了o1一直遮遮掩掩的强化学习路线,也展现了很好的低成本持续scale up的潜力。沿着这条路走能scale到什么程度还不太清楚,拭目以待。

蒸馏

R1训完了,最终我们用的就是上述训练出来的模型,但这篇论文还没完,DeepSeek的同学发现用上述R1训练过程中生成的60w推理相关的数据,以及20w的额外数据去对小模型做SFT,小模型性能的提升非常明显。

看起来这一步纯粹是用质量更好的数据对小模型做SFT,只是这些数据大部分是R1生成的,相当于是蒸馏提取了R1的能力精华,拟合了R1的能力,这样也能给小模型带来较好的推理能力提升。

从分数看,这些小模型在数学和coding上的性能是不错的,如果1.5b在部分场景上能有媲美4o的效果,那端上大模型会迎来一波应用潮。但实际用起来没那么理想,试过1.5B模型基本不遵循指令,有些刷分的感觉,但这仅是做了初步的SFT后的效果,在这基础上对小模型继续进行强化学习,可能整体能力能有提升,也是值得期待的点。

这里论文上还额外做了另一个实验,用类似R1-Zero的方法直接对小模型做强化学习,实验效果是相对用蒸馏数据做SFT的方式,效果差很多。一个猜测是小模型就是能力有限,直接用强化学习达到顿悟和性能提升,得基于模型本身能力足够才行。

到这里R1论文内容结束了,结尾部分提到后续会在多轮对话、json输出、语言混合、提示词问题、写工程代码弱这些问题上提升的展望,解决这些只是时间问题。

复现

这篇论文介绍了R1整个算法、训练流程和结果,但最核心的应该是数据,包括用于R1-Zero的数据是什么,数据量有多大,生成的60w数据具体是什么样的,标注的20w文科数据是什么,这是决定模型效果的另一个核心因素,DeepSeek的中文效果出圈,应该很大程度还是标注的20w文科数据质量高,不确定RL带来的推理能力提升在文科这块上的帮助有多大。这些数据没有公开,友商要复刻出DeepSeek的效果没那么容易。

网上有不少开始复现R1和R1-Zero的开源项目研究,最大的是huggingface的open-r1,也有学生在3B模型上小规模复现R1-Zero的开源项目TinyZero。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号