去年9月的时候,OpenAI发布了o1,o1通过大规模强化学习进行训练,具有了“高级推理”能力。

并且从始至终CloseAI都没有公开过推理模型的训练方法 。不过DeepSeek R1已经复现了这种推理行为,并公布了其训练方法的完整细节。这篇文章将探讨DeepSeek R1背后的关键思想,并分析DeepSeek R1是如何训练出推理能力的。

OpenAI的o1模型标志着大语言模型(LLMs)训练的一个新范式。它引入了所谓的 “thinking” Token ,这些 Token为模型提供了一种 思维空间 ,使其可以用来 思考问题 以及处理用户的查询。

o1的一个重要发现是,模型在测试时的计算量增加会提升其性能。这其实就是说, 模型生成的 Token越多,它的回复就越好 。下面这张图取自OpenAI的博客,很好地说明了这一点。

AIME准确率分别与训练时间和测试时间的计算量的关系图

AIME准确率分别与训练时间和测试时间的计算量的关系图

在上面的图中,纵轴是模型在AIME(数学问题)上的性能表现,而横轴是不同的计算时间。

左边的图描述的是大名鼎鼎的scaling law,即效果随模型规模线性增长,这个规律引发了2023年的大语言模型爆发。

在右图中,我们看到了一种新的scaling law。即 模型生成的 Token越多它的性能就越好 。

“thinking” Token

o1的一个关键特性就是它所谓的 “thinking” Token 。这些是在训练后引入的 特殊 Token ,用于界定模型的思维链(CoT)推理过程(也就是思考问题的过程)。这些特殊 Token之所以重要,有两个原因。

其一 ,它们清晰地标示出了模型 “思考” 的起始和结束位置,这样在构建用户界面(UI)时就能很容易地对其进行解析。

其二 ,它能生成一种人类可解释的输出,展示模型是如何 “思考” 问题的。

虽然OpenAI透露他们使用了强化学习来实现这一能力,但他们并没有分享细节。不过多亏了DeepSeek最近发布的论文,真相终于大白。

DeepSeek的论文

今年1月,DeepSeek发表了《DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning》,这篇论文引起了不小的轰动 。

它介绍了两个模型: DeepSeek-R1-Zero 和 DeepSeek-R1 。前者完全通过强化学习(RL)进行训练,而后者则是监督微调(SFT)和强化学习的混合。

虽然DeepSeek-R1的效果很惊艳,也成功出圈,被全国人民所熟知。但从技术的角度上看,DeepSeek-R1-Zero也很重要,原因有二:其一,它为R1生成了训练数据;其二,它展示了模型中出现的的推理能力,而这些能力并非是被直接教给模型的 。

换句话说, R1-Zero仅通过强化学习就“发现”了思维链(CoT)以及测试时计算量的缩放规律 !

DeepSeek-R1-Zero(仅强化学习)

强化学习(RL) 是一种机器学习方法,模型不是基于明确的示例进行训练,而是 通过试错来学习。它的工作方式是向模型传递一个奖励信号,而这个奖励信号与模型的参数之间没有明确的函数关系。

这就有点像我们在现实世界中学习的方式。例如,如果我申请了一份工作但没有拿到Offer,我就得弄清楚自己哪里做得不好以及如何改进。这跟监督学习不太一样,用这个例子来类比的话,监督学习就像是招聘人员给我具体的反馈,告诉我哪里做得不好以及如何改进。

使用强化学习来训练R1-Zero涉及到许多技术细节,我们重点介绍三个关键点: Prompt模板 、 奖励信号 以及 GRPO(组相对策略优化) 。

1) Prompt模板

用于训练的 模板 如下所示,其中{prompt}将被替换为一个(大概是)复杂数学、编码和逻辑问题数据集的问题。注意,通过简单的Prompt,其中包含了<think></think>标签。

用户和助手之间的对话。用户提出一个问题,助手来解决它。助手首先在脑海中思考推理过程,然后向用户提供答案。推理过程和答案分别包含在 <think> </think> 和 <answer> </answer> 标签内,即 <think> 这里是推理过程 </think>
<answer> 这里是答案 </answer>。用户:{prompt}。助手:

这里值得注意的一点是,使用了最小化且宽松的Prompt策略。

这是DeepSeek的有意选择,目的是 避免对模型的回复产生偏差 ,并 观察模型在强化学习过程中的自然演化 。

工作中接触过DSPY,就是自动迭代Prompt的,大家也可以去了解下,和这个异曲同工。

2) 奖励信号

强化学习的 奖励 有 两个组成部分 : 准确性奖励和格式奖励 。由于训练数据集包含有明确正确答案的问题,因此DeepSeek使用了一种简单的基于规则的策略来评估回复的准确性。同样,使用基于规则的格式奖励来确保在思考标签之间生成推理 Token。

作者指出,没有使用神经奖励模型(即奖励不是由神经网络计算的),因为这可能容易受到 奖励权重优化 的影响。换句话说, 大语言模型会学会如何“欺骗”奖励模型,使其在最大化奖励的同时降低下游性能 。

3) GRPO(组相对策略优化)

最后一个细节是如何将奖励转化为模型参数的更新。

GRPO 是一种 强化学习方法,它结合了一系列的回复来更新模型参数 。为了鼓励训练的稳定性,作者还在损失函数中加入了裁剪和KL散度正则化项。裁剪确保优化步骤不会太大,而正则化则确保模型的预测不会发生太突然的变化。

下面是完整的损失函数,并带有一些(希望)有帮助的注释。

GRPO损失函数

GRPO损失函数

涌现能力!!

R1-Zero最引人注目的成果,是尽管它所得到的指导很少,但它却发展出了我们可能认可的有效推理策略。

例如,它通过强化学习 隐含地学会了通过增加测试时的计算量来改进回复 (回想一下前面提到的o1的发现)。

平均回复长度随着训练的增加(以及性能的提升)而增加

平均回复长度随着训练的增加(以及性能的提升)而增加

另一个值得注意的能力是,它能够以一种惊人的类似人类的内心独白来反思过去的回复。下面是R1-Zero的一个例子。注意在生成最终答案之前的 长思维链(CoT)和额外的验证步骤 (由于回复很长,我省略了一些部分)。

用户Prompt:如果我写一个代码库需要1.5小时,实习生需要8小时。我们两人一起写3个代码库需要多长时间?

<think> 为了解决你和你的实习生一起写三个代码库需要多长时间的问题,我们首先需要分别找出你们每小时能写多少个代码库。
(长思维链)...
所以,你和你的实习生一起写三个代码库大约需要3.7895小时。
为了确保一切合理,我们将答案四舍五入到合理的小数位数(例如,保留两位小数):
t ≈ 3.79小时
然而,如果你需要一个更“人性化”的答案,你可以将小数部分转换为分钟。因为0.7895小时是:
0.7895 × 60分钟 ≈ 47.37分钟
所以,3.7895小时大约是3小时47.37分钟(如果四舍五入到最接近的分钟数,大约是3小时47分钟)。
## 验证(可选的验证步骤)
为了验证,让我们检查一下在t = 72/19小时内你们各自能写多少个代码库:
你在72/19小时内的工作量
= (每小时2/3个代码库)× (72/19小时)
= (2 × 72)/(3 × 19)
= 144 / 57
= 48/19个代码库。
(验证过程)...
然而,除非另有说明,否则应保留更“精确”的分数形式答案。因此,答案是:72/19小时,约为
$3.7895$小时,保留两位小数时约为$3.79$小时。
</think>
72/19小时(或约3.79小时)。

R1-Zero存在的问题

尽管R1-Zero的思考 Token为我们提供了一个人类可读的窗口,让我们可以了解模型的 “思考过程” ,但也存在一些问题:学习到的思维链(CoT)有时存在 可读性问题和语言混合问题 。

DeepSeek-R1(监督微调 + 强化学习)

为了缓解R1-Zero的可解释性问题,DS探索了一种多步骤训练策略,该策略 同时利用了监督微调(SFT)和强化学习(RL) 。这种策略催生了 DeepSeek-R1 。整个训练过程可以分为4个步骤。

步骤1:使用推理数据进行监督微调

为了帮助模型在学习如何推理时更加准确,作者从监督微调开始。这一步 利用了数千个来自各种来源的长思维链(CoT)示例 ,包括少样本Prompt(即展示如何思考问题的示例)、直接Prompt模型使用反思和验证,以及对来自R1-Zero的合成数据进行优化。

这样做有 两个优势 : 其一 ,可以向模型明确展示所需的回复格式; 其二 ,查看精心策划的推理示例可以为最终模型带来更好的性能。

步骤2:R1-Zero风格的强化学习(+ 语言一致性奖励)

接下来,在监督微调之后,对模型应用强化学习训练步骤。这一步的做法与R1-Zero完全相同,但在奖励信号中增加了一个组件,以激励语言的一致性。之所以在奖励中加入这一成分,是因为R1-Zero倾向于混合使用多种语言,有时候生成的结果根本没法看。

步骤3:使用混合数据进行监督微调

此时,模型在推理任务上的性能可能已经与R1-Zero相当(甚至更好)。

然而,这个中间模型在实际应用中可能不太实用,因为它会对收到的任何输入都进行推理(例如 “你好”),而对于事实性问答、翻译和创意写作等任务来说,这是没有必要的。这就是为什么要使用 推理数据(60万个示例) 和 非推理数据(20万个示例) 进行另一轮监督微调。

这里的 推理数据 是由步骤2中得到的模型生成的。此外,还包括了一些示例,这些示例使用大语言模型评判器将模型的预测与真实答案进行比较。

非推理数据 来自两个地方。首先,用于训练DeepSeek-V3(基础模型)的监督微调数据集。其次,由DeepSeek-V3生成的合成数据。请注意,其中包含了一些不使用思维链(CoT)的示例,这样模型就不会对每个回复都使用思考 Token。

步骤4:强化学习 + 基于人类反馈的强化学习

最后,再进行一轮强化学习,其中包括(再次)R1-Zero风格的推理训练以及基于人类反馈的强化学习。后一个组件有助于 提高模型的实用性和无害性 。

整个训练流程的结果就是DeepSeek-R1,它在推理任务上贼六,光是看它的思考流程就感觉很神奇啊。

结论

虽然目前的推理模型还存在局限性,但它已经证明了强化学习(无需人类干预)可以 产生能够独立学习的模型 。这(有可能)打破了当前模型的隐性限制,目前的模型只能 回忆 和 重新组合 之前在互联网上看到的信息(即现有的人类知识)。

这种新的强化学习方法的前景在于,模型可以(靠自身)超越人类的理解,从而带来新的科学和技术突破。并且一旦可自驱迭代的范式被找到,这个世界会变成什么样估计我们根本都想象不到了。

 

 

 如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。


👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。


1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐