如何训练LLMs进行“思考”(如o1和DeepSeek-R1)

📖阅读时长:19分钟

🕙发布时间:2025-02-13

近日热文:全网最全的神经网络数学原理(代码和公式)直观解释
欢迎关注知乎和公众号的专栏内容
LLM架构专栏
知乎LLM专栏
知乎【柏企
公众号【柏企科技说】【柏企阅文

一台会思考的笔记本电脑

OpenAI的o1模型为大型语言模型(LLM)的训练开创了全新范式。它引入了所谓的“思考”令牌(tokens),这就像是为模型启用了一个“草稿本”,使其能够借此思考问题、处理用户查询。

o1模型的一个重要发现是,随着测试时计算量的增加,模型性能会得到提升。通俗来讲,就是模型生成的令牌越多,给出的回复质量就越高。下面这张转载自OpenAI博客的图,清晰地展现了这一点。

AIME精度随训练时间和测试时间计算量的变化,图转载自[1]

在上图中,y轴代表模型在AIME(数学问题)上的性能表现,x轴表示不同的计算时间。左图展示了广为人知的神经缩放定律,正是它掀起了2023年的大型语言模型热潮。也就是说,模型训练的时间越长(即训练时计算量越大),其性能就越出色。

而右图呈现出一种新型的缩放定律。可以看到,模型生成的令牌数量越多(即测试时计算量越大),性能表现就越好。

“思考”代币

o1模型的关键特性之一就是它的“思考”代币。这些特殊的代币是在模型训练后引入的,用于界定模型的思维链(CoT)推理过程,也就是其思考问题的过程。这些特殊代币意义重大,主要基于两点原因:

其一,它们能够清晰地划分模型“思考”的起始和结束位置,这样在搭建用户界面(UI)时,就可以轻松解析相关内容。其二,它生成的内容能让人们理解模型是如何“思考”解决问题的。

尽管OpenAI透露他们运用强化学习赋予了模型这一能力,但具体的实现细节并未公开。不过,得益于DeepSeek近期发表的文章,如今我们对此有了较为深入的了解。

DeepSeek的论文

2025年1月,DeepSeek发表了《深度搜索 - R1:通过强化学习激励LLM的推理能力》[2] 。这篇论文引发了广泛关注,其核心贡献在于揭开了o1模型背后的秘密。

论文中介绍了两个模型:DeepSeek - R1 - Zero和DeepSeek - R1。前者完全基于强化学习(RL)进行训练,后者则结合了监督微调(SFT)和强化学习两种方式。

虽然论文标题和众多报道聚焦于DeepSeek - R1,但DeepSeek - R1 - Zero同样不可忽视。一方面,它为R1生成训练数据;另一方面,它展现出惊人的突发推理能力,这些能力并非人为特意赋予模型的。

换句话说,R1 - Zero仅依靠强化学习,就实现了思维链推理和测试时计算量的有效扩展!下面我们来探讨一下它的工作原理。

DeepSeek - R1 - Zero(仅限RL)

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

这和我们在现实生活中的学习过程颇为相似。比如,我申请了一份工作但没有收到回复,这时我就得思考自己哪里出了问题,以及如何改进。而监督学习则不同,打个比方,监督学习就像是招聘人员明确地告诉我做错了什么,以及该如何改进。

使用强化学习训练R1 - Zero涉及诸多技术细节,这里我重点介绍三个关键要素:提示模板、奖励信号和GRPO(组相对策略优化)。

1)提示模板

训练所用的模板如下,其中{prompt}会被替换为来自复杂数学、编码和逻辑问题数据集的具体问题。注意,通过简单的提示,模板中包含了<answer>和<think>标签。

用户与助手之间的对话。用户提出问题,助手进行解答。助手先在脑海中思考推理过程,然后为用户提供答案。推理过程和答案分别包含在<think></think>和<answer></answer>标签内,即:
<think>推理过程在此处</think>
<answer>答案在此处</answer>
用户:{prompt}。
助手:

这里值得注意的是,DeepSeek采用了极简且宽松的提示策略。这是他们有意为之,目的是避免对模型的回复产生偏差,以便观察模型在强化学习过程中的自然演变。

2)奖励信号

强化学习的奖励由两部分构成:准确性奖励和格式奖励。由于训练数据集里的问题都有明确的正确答案,所以可以采用简单的基于规则的策略来评估模型回复的准确性。同样,基于规则的格式奖励用于确保在思维标签之间生成推理令牌。

论文作者指出,他们没有使用神经奖励模型(即奖励并非由神经网络计算得出),因为这种方式可能容易受到“奖励黑客攻击”。也就是说,大型语言模型可能会学会如何欺骗奖励模型,在提升奖励的同时却降低了下游任务的性能。

这就好比现实中有些人会钻激励机制的空子,只为最大化个人利益,却忽视了激励机制的初衷。这也凸显了制定合理奖励机制的难度,无论是对人类还是计算机而言。

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

最后一个关键要素是如何将奖励转化为模型参数的更新。这部分内容技术含量较高,如果不太感兴趣,读者可以直接跳过。

GRPO是一种强化学习方法,它综合一系列的响应来更新模型参数。为保证训练过程稳定,作者在损失函数中加入了裁剪和KL散度正则化项。裁剪操作能防止优化步长过大,正则化则确保模型预测不会发生突变。

结果(涌现能力)

R1 - Zero最令人瞩目的成果是,尽管训练时给予的指导极少,但它却能自主开发出我们能够理解的有效推理策略。

例如,通过强化学习,它潜移默化地掌握了通过增加测试时计算量来优化回复的方法(回想一下前文提到的o1模型的发现)。下面这张来自R1论文[2]的图展示了这一现象。

另一个值得关注的能力是,它能像人类一样进行内心反思,回顾过往的回复。下面是R1 - Zero的一个示例,注意在生成最终答案前,它有很长的思维链推理过程,还进行了额外的验证步骤(由于回复较长,部分内容有所省略)。

用户提示:如果我写一个代码库需要1.5小时,我的实习生需要8小时。那么我们一起写3个代码库需要多长时间?
<think>为了算出你和你的实习生一起写3个代码库所需的时间,我们首先要分别求出你们每小时能写多少个代码库。
(长思维链推理过程)...
所以,你和你的实习生一起写3个代码库大约需要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的思考令牌为我们理解模型的“思考过程”提供了可读窗口,但论文作者也指出了一些问题。具体而言,模型学习到的思维链有时存在可读性欠佳和语言混杂的情况。这可能意味着其推理过程逐渐偏离了人类容易理解的范畴。

DeepSeek - R1(SFT + RL)

为解决R1 - Zero在可解释性方面的问题,论文作者探索了一种结合监督微调(SFT)和强化学习的多步训练策略,由此诞生了DeepSeek - R1。这一模型性能更优,如今也受到了更多关注。整个训练过程可细分为4个步骤。

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

为帮助模型掌握推理方法,作者首先采用监督微调。他们利用了来自多种渠道的数千个长思维链示例,包括少样本提示(即展示如何思考问题的示例)、直接引导模型进行反思和验证,以及优化从R1 - Zero生成的合成数据[2] 。

这样做有两个显著优势:一是可以向模型明确展示期望的回复格式;二是通过接触精心整理的推理示例,最终模型的性能会得到提升。

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

接下来,在完成监督微调后,对模型进行强化学习训练。这一步的训练方式与R1 - Zero基本相同,但在奖励信号中增加了一项,用于鼓励语言的一致性。之所以添加这一奖励,是因为R1 - Zero存在语言混杂的问题,导致其生成的内容可读性较差。

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

此时,模型在推理任务上的表现可能已经与R1 - Zero相当,甚至更优。然而,这个中间模型在实际应用中还存在一些问题,因为它会对接收到的任何输入都进行推理(比如“你好”这样的简单问候),但这对于事实性问答、翻译和创意写作等任务来说并没有必要。因此,需要使用推理数据(60万个示例)和非推理数据(20万个示例)再次进行监督微调。

这里的推理数据由步骤2得到的模型生成。此外,还引入了使用大型语言模型评判的示例,将模型预测结果与真实答案进行对比。

非推理数据则来源于两个地方:一是用于训练DeepSeek - V3(基础模型)的监督微调数据集;二是由DeepSeek - V3生成的合成数据。需要注意的是,其中包含了不使用思维链的示例,这样可以避免模型对每个回复都使用思考令牌。

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

最后,再次进行强化学习,这一步同样包含R1 - Zero风格的推理训练以及基于人类反馈的强化学习。后者有助于提升模型的实用性和无害性。

经过这一系列流程,最终得到的DeepSeek - R1在推理任务中表现出色,并且可以像普通的人工智能助手一样与用户进行交流。

结论

o1模型的发布为大型语言模型的改进开辟了新方向:通过增加测试时计算量提升性能。尽管OpenAI没有公开其实现方法,但5个月后,DeepSeek成功复现了这一推理行为,并公开了技术细节。

虽然目前的推理模型还存在一定的局限性,但这无疑是一个充满前景的研究方向。因为它表明,无需人为过多干预,仅依靠强化学习就能训练出具备独立学习能力的模型。这有可能突破现有模型的固有局限,毕竟当前模型大多只能调用和整合互联网上已有的人类知识。

参考文献

[1] Learning to reason with LLMs

[2] arXiv:2501.12948 [cs.CL]

[3] Deep Dive into LLMs Like ChatGPT

推荐阅读

1. DeepSeek-R1的顿悟时刻是如何出现的? 背后的数学原理
2. 微调 DeepSeek LLM:使用监督微调(SFT)与 Hugging Face 数据
3. 使用 DeepSeek-R1 等推理模型将 RAG 转换为 RAT
4. DeepSeek R1:了解GRPO和多阶段训练
5. 深度探索:DeepSeek-R1 如何从零开始训练
6. DeepSeek 发布 Janus Pro 7B 多模态模型,免费又强大!

本文由mdnice多平台发布


柏企科技圈
23 声望5 粉丝