0. 引言
在人工智能快速发展的今天,我们正见证一个微妙但意义深远的转变。本月发布的GPT-4.5和Llama 4等旗舰模型虽然技术先进,却未能引起往常的轰动。这种平淡反应背后隐藏着行业发展的关键信号:我们可能正接近纯粹通过扩大模型规模和数据量所能实现的极限。
与此同时,xAI和Anthropic等公司已经开始在其模型中强化推理能力,甚至提供专门的"思考"功能。更引人注目的是,OpenAI最新发布的o3推理模型展示了当计算资源战略性地投入到推理能力的强化学习中时,性能提升的巨大潜力。
推理能力正逐渐成为区分下一代AI模型的关键因素。本文作为上篇将深入探讨推理模型的强化学习训练方法。目录概览如下:
-
推理模型
-
RLHF基础
-
PPO简介
-
强化学习算法:从PPO到GRPO
-
强化学习奖励建模:从RLHF到RLVR
-
DeepSeek-R1推理模型的训练方法
参考资料:
https://magazine.sebastianraschka.com/p/the-state-of-llm-reasoning-model-training
更多DeepSeek和R1相关可以查阅之前的小作文:
2、深度揭秘DeepSeek R1 背后的强化学习:开启大模型训练新纪元
3、推理模型专题|DeepSeek-R1如何用强化学习、冷启动和蒸馏,开启大模型训练新思路?
4、推理模型专题 | DeepSeek开源版o1比肩OpenAI满血版o1(技术报告解读)
下一篇小作文将从代码实战角度演示如何做GRPO训练。
更多大模型相关,欢迎关注微信公众号"小窗幽记机器学习":
1. 推理模型
简而言之,推理(reasoning)是关于推断的训练技术,使LLM更好地处理复杂任务。在LLM的背景下,推理指的是模型在提供最终答案前产生中间步骤的能力。这个过程通常被描述为思维链(Chain-of-Thought,CoT)推理。在CoT推理中,LLM明确地生成一系列结构化的陈述或计算,展示它如何得出结论。
下面是一个示例:
图示展示LLM如何处理多步骤推理任务。模型不仅仅是回忆事实,而是需要结合几个中间推理步骤来得出正确的结论。根据实现方式的不同,中间推理步骤可能会或可能不会显示给用户。
2. RLHF基础
强化学习(RL)训练方法用于构建和改进推理模型,这些方法或多或少与LLM对齐的人类反馈强化学习(RLHF)方法相关。因此,在讨论基于RL的特定推理修改之前,先简要回顾一下RLHF的工作原理。
传统LLM通常经历三步训练程序:
-
预训练
-
监督微调
-
对齐(通常通过RLHF)
"原始"的LLM对齐方法是RLHF,这是开发LLM标准流程的一部分。第一个ChatGPT模型就是遵循InstructGPT论文描述的方法而开发的。RLHF的最初目标是将LLM与人类偏好对齐。例如,假设你多次使用LLM,LLM为给定提示生成多个答案。RLHF引导LLM生成更多你偏好风格的答案。(RLHF通常也用于LLM的安全调优:避免分享敏感信息、说脏话等。)
下面简要介绍一下RLHF。
在进行RLHF流程之前,需要先对预训练模型进行监督微调。这种微调还不是RL部分,而是一个先决条件。然后,RLHF使用称为近端策略优化(PPO)的算法进一步对齐LLM。需要注意,除了PPO之外还可以使用其他算法;这里提到PPO是因为它最初在RLHF中使用。
为简单起见,将RLHF流程分为三个独立步骤:
-
RLHF步骤1(先决条件):预训练模型的监督微调(SFT)
-
RLHF步骤2:创建奖励模型
-
RLHF步骤3:通过近端策略优化(PPO)进行微调
下图所示的RLHF步骤1是一个监督微调步骤,为进一步的RLHF微调创建基础模型。
图片来自InstructGPT论文,https://arxiv.org/abs/2203.02155
在RLHF步骤1中,创建或采样提示(例如,从数据库)并要求人类编写高质量的回复,再使用这个数据集以监督方式微调预训练得到的基础模型。如前所述,这在技术上不是RL训练的一部分,而仅仅是一个先决条件。
在RLHF步骤2中,使用监督微调(SFT)的模型创建奖励模型,如下图所示。
来自InstructGPT论文,https://arxiv.org/abs/2203.02155
如上图所示,对于每个提示,从上一步创建的微调LLM生成四个回复。人类标注者根据他们的偏好对这些回复进行排名。虽然这个排名过程很耗时,但它可能比为监督微调创建数据集稍微省力一些。这是因为对回复进行排名可能比编写回复更简单。
在构建了这些排名的数据集后,设计一个奖励模型,为后续RLHF步骤3中的优化阶段输出奖励分数。这里的想法是奖励模型替代并自动化了耗时的人工排名,使得在大型数据集上的训练变得可行。这个奖励模型(RM)通常源自上一个监督微调(SFT)步骤中创建的LLM。为了将RLHF步骤1中的模型转变为奖励模型,其输出层(下一个token分类层)被回归层替代,该层只有1个输出节点。
RLHF流程的第三步是使用奖励模型(RM)来微调先前监督微调(SFT)的模型,如下图所示。
来自InstructGPT论文,https://arxiv.org/abs/2203.02155
在RLHF步骤3,基于在RLHF步骤2中创建的奖励模型的奖励分数,使用近端策略优化(PPO)更新SFT模型。
2. PPO简介
如前所述,原始的RLHF方法使用了一种称为近端策略优化(PPO)的强化学习算法。PPO的开发旨在提高策略训练的稳定性和效率。在强化学习中,"策略"是指我们想要训练的模型;在这种情况下,策略=大语言模型。
PPO背后的关键思想之一是限制每次更新步骤中策略允许改变的程度。这是通过使用一个裁剪损失函数来实现的,这有助于防止模型进行过大的更新,从而可能使训练不稳定。除此之外,PPO还在损失函数中包含了KL散度惩罚项。这一项是用以比较当前策略(正在训练的模型)与原始SFT模型。这说明鼓励模型的更新保持在合理的接近范围内。毕竟,我们的目标是对模型进行偏好调整,而不是完全重新训练。
这就是"近端"策略优化中"近端"的由来:该算法尝试使更新保持在接近现有模型的范围内,同时仍允许改进。为了鼓励一些探索,PPO还添加了一个熵奖励,这鼓励模型在训练过程中变化输出。
以下进一步介绍PPO。不过,这涉及很多术语,所以在继续之前,我尝试在下图中总结了关键术语。
RLHF中关键术语说明。例如,PPO涉及几个模型,其中PPO是RLHF中使用的算法(而RLHF是最流行的LLM对齐方法之一)。
下面,将通过伪代码说明PPO中的关键步骤。此外,为了使其更直观,我还将使用一个类比:想象你是一名经营小型食品配送服务的厨师。你不断尝试新的食谱变化以提高客户满意度。你的总体目标是根据客户反馈(奖励)调整你的食谱(策略)。
1、计算新策略与旧策略的下一个token概率的比值:
ratio = new_policy_prob / old_policy_prob
简而言之,这将衡量新食谱与旧食谱有多大不同。
注:关于"new_policy_prob",我们还没有使用最终更新的策略。我们使用的是当前版本的策略(即我们正在训练中的模型)。然而,按照惯例称其为"新"。所以,即使你仍在实验中,我们按照惯例将你当前的草稿称为"新策略"。
2、将该比值乘以该行动的好坏程度(称为优势):
raw_score = ratio * advantage
这里,为简单起见,可以假设优势是基于奖励信号计算的:
advantage = actual_reward - expected_reward
在厨师类比中,可以将优势视为新菜表现如何:
advantage = customer_rating - expected_rating
例如,如果客户给新菜打9/10分,而客户通常给我们7/10分,那就是+2的优势。
请注意,这是一个简化。实际上,这涉及广义优势估计(GAE),在这里省略了这一点,以免文章过于臃肿。然而,需要提及的一个重要细节是,预期奖励是由所谓的"评论家"critic(有时也称为"价值模型")计算的,而实际奖励则由奖励模型计算。即,优势计算涉及另外2个模型,通常与我们正在微调的原始模型大小相同。
在类比中,可以将这个评论家(价值模型)视为我们在将新菜提供给客户之前请朋友尝试的对象。我们还请朋友估计客户会如何评价它(那就是预期奖励)。奖励模型就是给出反馈的实际客户(即实际奖励)。
3、计算裁剪分数:
如果新策略变化太大(例如,ratio > 1.2 或 < 0.8),我们裁剪比率,如下所示:
clipped_ratio = clamp(ratio, 0.8, 1.2)clipped_score = clipped_ratio * advantage
在类比中,想象新食谱获得了特别好(或坏)的评价。我们可能会被引诱彻底改变整个菜单。但这很冒险。所以,我们暂时限制我们的食谱可以改变的程度。(例如,也许我们让菜变得更辣了,而那个顾客恰好喜欢辣食,但这并不意味着其他人也会喜欢。)
4、然后使用原始分数和裁剪分数中的较小值:
if advantage >= 0: final_score = min(raw_score, clipped_score)else: final_score = max(raw_score, clipped_score)
这里需要注意。例如,如果优势是正的(新行为更好),我们限制奖励。这是因为我们不想过度相信可能是巧合或运气的好结果。如果优势是负的(新行为更差),我们限制惩罚。这里的想法类似。即,除非我们真的确定,否则我们不想对一个坏结果反应过度。
简而言之,如果优势是正的,我们使用两个分数中较小的一个(以避免过度奖励),如果优势是负的,我们使用较大的一个(以避免过度惩罚)。
在类比中,这确保如果一个食谱的表现比预期好,我们不会过度奖励它,除非我们有信心。如果它表现不佳,我们不会过度惩罚它,除非它一直表现不好。
5、计算损失:
这个最终分数是我们在训练期间最大化的(通过在翻转分数符号后使用梯度下降来最小化)。此外,我们还添加一个KL惩罚项,其中β是惩罚强度的超参数:
loss = -final_score + β * KL(new_policy || reference_policy)
在类比中,我们添加惩罚以确保新食谱与我们原始风格不会相差太远。这防止你每周"重新发明厨房"。例如,我们不想突然将猪脚饭店突然变成披萨店。
下面用一个具体的数值例子进行总结。
PPO涉及多个模型:
-
策略(policy),即经过SFT训练并且我们想要进一步对齐的LLM。
-
奖励模型(reward model),这是一个经过训练用来预测奖励的模型(见RLHF步骤2)。
-
评论家(critic),这是一个可训练的模型,用于估计奖励。
-
参考模型(reference model,原始策略),用它来确保策略不会偏离太多。
为什么我们需要奖励模型和评论家模型?奖励模型通常在使用PPO训练策略之前训练。它用于自动化人类评判者的偏好标记,并为策略LLM生成的完整回应提供分数。 相比之下,评论家对部分回应进行评判。我们用它来创建最终回应。虽然奖励模型通常保持冻结状态,但评论家模型在训练过程中会更新,以更好地估计奖励模型创建的奖励。
3. RL算法:从PPO到GRPO
PPO是RLHF中最初使用的算法。从技术角度来看,它在用于开发推理模型的RL流程中运行得很好。然而,DeepSeek-R1在其RL流程中使用的是一种称为群组相对策略优化(GRPO)的算法。DeepSeek团队将GRPO介绍为:"近端策略优化(PPO)的一个变体,它在增强数学推理能力的同时优化PPO的内存使用。"因此,GRPO的主要动机是提高计算效率。
效率的提升是通过去除"评论家"(价值模型)实现的,即计算价值函数(即预期未来奖励)的LLM。GRPO不依赖这个额外的模型来计算估计奖励以计算优势,而是采取了一种更简单的方法:它从策略模型本身采样多个答案,并使用它们的相对质量来计算优势。
为了说明PPO和GRPO之间的差异,直接从DeepSeekMath论文中的图表进行介绍:
来自DeepSeekMath论文的注释图,说明PPO和GRPO的区别
4. RL奖励建模:从RLHF到RLVR
到目前为止,将RLHF视为一个程序,并介绍了两种常用于RLHF的强化学习算法:PPO和GRPO。但如果RLHF已经是LLM对齐工具包的核心部分,那么这些与推理有什么关系呢?
RLHF与推理之间的联系来自于DeepSeek团队如何应用类似的基于RL的方法(使用GRPO)来训练其R1和R1-Zero模型的推理能力。不同之处在于,DeepSeek-R1团队没有依赖人类偏好并训练奖励模型,而是使用可验证奖励。这种方法被称为可验证奖励强化学习(RLVR)。需要再次强调:与标准RLHF不同,RLVR绕过了对 奖励模型 的需求。
因此,模型不是从人类标记的例子中学习什么是"好"答案,而是从确定性工具(如符号验证器或基于规则的工具)获得直接的二元反馈(正确或错误)。想想数学问题的计算器或代码生成的编译器。
图-9 可验证奖励强化学习(RLVR)的例子。该模型被提示解决一个数学问题并产生一个答案。不使用学习奖励模型,而使用符号验证器(例如,计算器)检查输出并提供正确与否的反馈。
图-9
这里的一个动机是通过使用自动正确性检查作为RL期间的监督信号来避免嘈杂或昂贵的人类或学习奖励。另一个动机是通过使用"廉价"的工具如计算器,可以替代昂贵的奖励模型训练和奖励模型本身。由于奖励模型通常是整个预训练模型(但带有回归头),因此RLVR效率要高得多。
因此,简而言之,DeepSeek-R1使用了RLVR与GRPO,它消除了训练过程中的两个昂贵模型:奖励模型和价值模型(评论家),如下图所示。
图-10 LLM训练中强化学习设置的比较。带有PPO的传统RLHF使用奖励模型(根据人类偏好进行训练)和评论家(价值模型)来指导学习。GRPO消除了评论家模型。带GRPO的RLVR更进一步,去掉了奖励模型,而是依赖于计算器或编译器等符号工具的可验证奖励。
图-10
在下一节中,简要介绍DeepSeek-R1流程,并讨论DeepSeek团队使用的不同可验证奖励。
5. DeepSeek-R1的训练方式
前面已经介绍了什么是RLHF和RLVR,以及PPO和GRPO,、现在先简要回顾DeepSeek-R1论文的核心内容。
首先,有三种类型的模型:
-
DeepSeek-R1-Zero:纯强化学习训练
-
DeepSeek-R1:指令微调(SFT)和强化学习相结合训练
-
DeepSeek-Distill变体:通过指令微调(SFT)创建,不使用强化学习
以下为DeepSeek-R1流程图,用来说明这些模型之间的关系。
DeepSeek-R1系列的训练流程
DeepSeek-R1-Zero:使用可验证奖励(RLVR)和GRPO进行训练,这足以使模型通过生成中间步骤展示推理能力。这表明模型具备推理能力是可以跳过SFT阶段。模型通过探索而非从示例学习来提升其推理能力。
DeepSeek-R1是旗舰模型,性能最佳。与DeepSeek-R1-Zero的区别在于,它交替使用了指令微调、RLVR和RLHF。
DeepSeek-Distill变体:旨在成为小型且易于部署的模型;它们是通过使用来自DeepSeek-R1模型的指令数据对Llama 3和Qwen 2.5模型进行指令微调生成的。 这种方法在推理部分没有使用任何强化学习(然而,RLHF被用于创建Llama 3和Qwen 2.5基础模型)。
DeepSeek团队没有使用基于LLM的奖励模型来训练DeepSeek-R1-Zero。相反,他们对DeepSeek-R1-Zero和DeepSeek-R1的推理训练使用了基于规则的奖励。DeepSeek团队在开发DeepSeek-R1-Zero时没有应用基于结果或过程的神经奖励模型,因为他们发现神经奖励模型可能在大规模强化学习过程中遭遇奖励黑客行为。为了训练DeepSeek-R1-Zero,他们采用了一个主要由两类奖励组成的基于规则的奖励系统:
(1) 准确性奖励: 准确性奖励模型评估回答是否正确。例如,对于具有确定性结果的数学问题,要求模型以指定格式(如在方框内)提供最终答案,从而能够可靠地通过基于规则的验证来检查正确性。同样,对于LeetCode问题,可以使用编译器根据预定义的测试用例生成反馈。
(2) 格式奖励: 除了准确性奖励模型外,还采用了格式奖励模型,强制模型将其思考过程放在''和''标签之间。
更多大模型相关,关于关注微信公众号"小窗幽记机器学习":