DeepSeek-V3到DeepSeek-R1-Zero,只用了三步:一个基础的训练模板,一个简单的激励模型(纯强化学习策略),以及 GRPO 策略。他们的激励模型同样简单,主要分成两类激励:
- 准确度激励:判断答案是否正确。例如,如果模型回答 1 + 1 = 2,则加 1 分;如果答案错误,则不加分。
- 格式激励:模型必须按照要求的格式作答。例如,若问题是「1+1 等于几?」,模型直接回答「answer 2」将得 0 分。但如果它在 think 标签中先写出推理过程,再在 answer 标签中给出答案,则会获得更高的分数。
训练过程中,只给了问题、答案和规则。横轴是 RL 的迭代次数,竖轴是响应的长度。他们发现模型学着学着,自己把答案越吐越长了。激励模型里,我们没有激励过长度这件事情,只判断了对错和你有没有思考。但是模型自己发现,一旦我思考地越长,我越能答对。这个发现十分惊人,因为之前的团队没有想到通过这么简单的手段就能解决这个问题。这是最重要的一张图。「R1 Zero literally solves reasoning tasks with more thinking time」。这个模型在没有任何激励的情况下,通过增加思考时间,自主学会了如何解决需要推理的任务。
R1 Zero 的一些问题。首先,可读性较差。第二是经常出现语言混杂的问题,类似于外企白领的说话方式:「Maria,今天这个 schedule 有些满」。输出的可读性相对较差。从R1-zero到R1,并不是直接到达的,而是有几个中间模型,我们暂时称为checkpoint。有两个checkpoint阶段:
checkpoint-1:我们用了 R1 Zero 生成了右侧那个高质量的 SFT 数据,也就是 cold start 数据,这些数据由 R1 Zero 输出的高质量带有推理过程的数据,作为 cold start 数据重新去 SFT 了 Deepseek V3 base 模型。
checkpoint-2:拿着这个 checkpoint-1 去做了一轮类似 R1 Zero 的强化学习。但这次有一些不同。除了激励准确度和格式,但他们加入了一个新的激励项——一致性(consistency)。这样就没有语言混杂问题了。
用这个checkpoint-2版本再生成了第二轮的高质量 CoT 数据。这时的 CoT 数据质量比前面的cold start更好,主要因为它的推理过程是语言统一的。他们通过人工筛选和规则匹配等方式,剔除了一些冗余、可读性差部分,得到了一个经过筛选和优化的高质量 CoT 数据。
同时,这个checkpoint-2版本,也输出了右边这个,通用知识的 SFT 数据。这些数据与之前的高质量 CoT 数据合并后,用于进行最后一次的强化学习。在这次强化学习中,整个过程更像是我们通常训练一个模型的方式,包括了 human preference 的部分,也就是我们对模型输出格式、内容等的偏好。最后得出的模型便是大家现在使用的 DeepSeek R1。