DeepSeekMath与DeepSeek-R1推理模型中的策略优化算法
作者:Soumanta Das
近日热文:
1. 全网最全的神经网络数学原理(代码和公式)直观解释
2. 大模型进化史:从Transformer到DeepSeek-R1的AI变革之路
3. 2W8000字深度剖析25种RAG变体:全网最全~没有之一
知乎【柏企】
公众号【柏企科技说】【柏企阅文】
介绍
在本文聚焦于DeepSeek - R1 - Zero和DeepSeek - R1关键创新的核心——强化学习,特别是组相对策略优化(GRPO)。尽管GRPO在R1发布期间备受关注,但它是在几个月前的DeepSeekMath论文中正式提出的。
DeepSeek - R1 - Zero与DeepSeek - R1中的强化学习
训练后阶段已成为大语言模型端到端训练流程的核心组成部分。它能够提高推理准确性,适应人类偏好,且成本远低于预训练。另一种提升推理能力的技术是测试时或推理时计算,由OpenAI在o1模型中首次引入。OpenAI发现,随着强化学习(训练时计算)的增加,以及回答问题前思考时间(测试时计算)的延长,o1模型的性能会有所提升。
自然而然地,许多研究致力于通过改进训练时和测试时计算,来复制o1模型的成功。DeepSeek的最新发布成果,是利用纯强化学习提升大语言模型推理能力的重要一步。这一成果令人瞩目,因为其研究显示,无需任何监督数据的纯强化学习,就能催生自我评估、错误检查和自我进化等能力。
强化学习在大语言模型中的重要性
Andrej Karpathy在一条推文中对此进行了精彩阐述。简而言之,儿童学习和深度学习存在两种类型:
- 模仿学习:观察、模仿或进行模式匹配,类似于大语言模型的预训练、监督微调等。
- 强化学习:在与环境交互并接收反馈的过程中,通过反复尝试来学习。
强化学习在推理和产生“涌现行为”方面更为强大。当大语言模型在无指导的情况下,制定问题解决路径、推进过程、发现问题并按需重新评估、尝试其他方法时,这种强大的行为就是“涌现行为”。我们发现,DeepSeek正是通过纯强化学习达到了这一阶段,也就是常说的“顿悟时刻”。
大语言模型的推理过程可以被看作是一个强化学习问题。其中,模型充当智能体,生成的文本是采取的行动,推理质量决定了获得的奖励。模型的文本生成策略即策略,通过采取行动(与环境交互)和获取奖励,策略得到优化。在训练过程中不断迭代这一过程,模型就能学会找到最佳推理路径。因此,优化策略是提升大语言模型推理能力的关键。
在接下来的内容中,我们将重点介绍策略优化技术,先从OpenAI的近端策略优化(PPO)开始,进而深入理解DeepSeek的组相对策略优化(GRPO)。
强化学习术语
虽然本文不涉及强化学习的入门概念,但以下简单总结了后续会遇到的常用术语。
近端策略优化(PPO)
2017年,OpenAI的研究人员发表论文,介绍了一系列新的强化学习策略梯度方法——近端策略优化(PPO)。开发这些方法,是为了满足开发一种可扩展至大语言模型、数据高效且稳健的算法的需求。简而言之,PPO源于这样一个问题:“如何利用现有数据,对策略进行尽可能大的改进,同时又不会因步子迈得太大,而意外导致性能下降?”
下面将介绍论文中的3种方法:
- PPO Clip
- PPO Penalty
- 带有KL散度的PPO(PPO with KL Divergence)
在理解DeepSeek的GRPO实现之前,了解这些方法十分重要。
PPO - Clip
PPO - Clip依赖于目标函数中的特殊裁剪操作,以避免新策略过度偏离旧策略。PPO Clip的正式公式有些复杂,我们将其拆解,逐一分析。
首先,PPO Clip会获取一批数据,并计算所谓的“代理损失(Surrogate Loss)”。代理损失是两个值中的最小值,即未裁剪目标和裁剪目标。下图展示了这两个目标与代理损失之间的关系。
PPO - Clip中的优势函数(Advantage Function):优势函数在代理损失方程的两项中均存在。
PPO Clip中的概率比(Probability Ratio):未裁剪目标项中的概率比,决定了新策略相较于旧策略的可能性。若该比率大于1,则新策略更有可能被采用;若小于1,则旧策略更具可能性。下图给出了更详细的解释。
裁剪(Clipping):裁剪的目的是确保策略不会发生剧烈更新。如果概率比过高或过低,就会促使新策略远离旧策略,这是不可取的。为避免这种情况,会使用超参数ε来限制策略更新的幅度。尽管裁剪在确保合理策略更新方面作用显著,但有时仍可能失效。有多种技术可预防这种情况,其中一种是对KL散度添加惩罚项,下文将详细介绍。
PPO - Penalty
除了PPO Clip中裁剪后的代理目标,另一种方法是对KL散度施加惩罚,这种方法被称为PPO - Penalty。通过超参数𝛽(惩罚系数)对散度值进行缩放和调整,使每次策略更新时,KL散度达到目标值dtarg。
带有KL散度的PPO(PPO with KL Divergence)——而非裁剪
PPO - Penalty中的KL散度(KL Divergence in PPO - Penalty):KL散度是一种用于计算两个概率分布差异的统计技术。在这种情况下:
- 首先,计算每个可能行动的新概率与旧概率之比。例如,在下面的例子中,“向左走(Taking a Left)”这一行动的比率为1.13,这意味着策略更新使该行动更有可能发生。同样,“向上走”或“向下走”的比率为0.5,则表示相反情况。
- 第二步,对这些概率取自然对数(也称为信息增益)。
- 随后,用旧概率对“信息增益”进行加权。加权的原因类似于“对我们经常做的事情进行改变,应比对很少做的事情的改变更加谨慎”这一常见原则。
下图展示了如何计算KL散度和惩罚系数。
PPO Clip和PPO Penalty中的策略更新
前文介绍了两种PPO变体中代理损失函数的计算方法。PPO的下一步是策略更新,本质上是对一批轨迹的损失求期望。
然后,使用随机梯度下降(SGD)更新策略(即新的策略参数θ)。
大语言模型中的PPO
在大语言模型的背景下,强化学习(尤其是PPO)的公式有所调整。我们不再使用(状态,行动)对,而是采用符号$o_t|q, o_{<t}$,其中$q$和$o$分别是从问题数据集和旧策略中采样得到的问题和输出。在这个符号中:
- $o_t$是在时间步$t$根据当前问题生成的令牌(token)。
- $o_{<t}$是在时间步$t$之前生成的令牌(即$t$之前的部分输出) 。
大语言模型生成的输出可视为针对输入问题采取的“行动”。类似地,问题可类比为状态——就像传统强化学习中智能体的行动依赖于当前状态一样,大语言模型的输出也依赖于当前输入的问题。因此,我们重新构建问题,不再训练最优学习策略,而是基于问题和先前输出,训练最优答案生成策略。
此外,我们还有一个奖励模型,用于评估大语言模型的输出,这有助于模型获得反馈,随着时间推移产生更好的结果。
组相对策略优化
组相对策略优化在DeepSeekMath中提出,并在DeepSeek - R1 - Zero中应用。它基于PPO进行了以下关键改进:
- 消除价值模型:减少内存消耗和计算负担。回顾PPO,优势$A_t$是通过广义优势估计(GAE)计算的,GAE基于预期的未来奖励($r_{>=t}$)和学习得到的值函数$V_ψ$ 。
- 基于组的奖励比较:不使用学习得到的值函数,而是从旧策略针对给定问题采样的多个输出,输入到奖励模型中,将所有采样输出的奖励求平均,以此计算基线奖励。
基于组的评估——简化示例
假设输入问题($q$)是“法国的首都是什么?”
假设针对上述问题,有2个采样输出$o_1$和$o_2$:
- “Paris is the capital of France”
- “Paris is a city in France and is the capital of France”
假设我们有一个基于事实准确性和简洁性的奖励函数,该函数分别给$o_1$和$o_2$打分为8分和6分。那么平均奖励($R$)为$(8 + 6)÷2 = 7$分。
因此,这些输出的优势与以下计算结果成比例:
- $A(o_1) → 8 - 7 = 1$ (对于$o_1$ )
- $A(o_2) → 6 - 7 = -1$ (对于$o_2$ )
本质上,我们对采样组的奖励求平均,并在组内对样本进行相对比较。需要注意的是,我们无需计算每个输出中单个令牌的奖励。稍后会了解到,输出中的所有令牌都被赋予相同的优势值。
优势$A(o_1)$优于基线($R = 7$),而$A(o_2)$比平均值差。因此,新策略会尝试提高得到$o_1$(即“Paris is the capital of France”)的概率。
注:优势计算中,会将组$G$的标准差作为分母。为简化示例,此处省略,因为它对两个优势值的影响相同,所以相对比较仍然成立。
GRPO深入解析
与PPO类似,GRPO中的策略更新,是通过对问题分布的代理损失求期望,并从旧策略中采样$G$个输出来实现的,用以下公式表示:
代理损失与PPO Clip和PPO Penalty中的有些相似。在GRPO中,同时采用裁剪和KL散度,以防止策略剧烈更新,确保训练的稳定性。代理损失的注释公式如下图所示:
GRPO中的KL惩罚(KL Penalty in GRPO):传统PPO和GRPO的一个重要区别,在于KL惩罚项的定义方式。GRPO使用以下无偏估计器:
如果给定参数的估计值的期望值等于该参数的真实值,则称这个估计器是无偏的。
GRPO中的结果监督(Outcome Supervision in GRPO):如前文所述,对于问题$q$,从旧策略模型中采样一组输出$\{o_1, o_2, …, o_G\}$。然后,奖励模型生成$G$个奖励,每个输出对应一个$\{r_1, r_2, …, r_G\}$。接着,通过减去组平均奖励并除以组标准差,对这些奖励值进行归一化处理。结果监督将归一化后的奖励,作为输出中所有令牌的优势,然后通过最大化GRPO目标函数来优化策略。
GRPO中的过程监督(Process Supervision in GRPO):与在每个输出结束时给予奖励的结果监督不同,过程监督在每个推理步骤结束时给予奖励。过程奖励模型对输出的每个步骤进行评分。例如,对于有$K_1$个步骤的输出$o_1$,过程奖励模型会生成$K_1$个奖励$\{r_{1index(1)}, r_{1index(2)}, …, r_{1index(K_1)}\}$,其他输出同理。这些奖励随后被归一化。随后,过程监督将每个令牌的优势,计算为归一化奖励的总和,然后通过最大化GRPO目标函数来优化策略。
用于迭代强化学习的GRPO(GRPO for Iterative RL):在强化学习训练过程中,旧的奖励模型可能无法有效监督当前的策略模型。为解决这一问题,会利用采样输出及其相应奖励,为奖励模型生成新的训练数据。然后,使用新数据和10%的历史数据(防止灾难性遗忘),对旧的奖励模型进行训练。
奖励建模
在训练DeepSeek - R1 - Zero时,采用了基于规则的奖励系统,主要包含两种类型:
- 准确率奖励(Accuracy rewards):该模型评估响应是否正确,在某些情况下,这些奖励基于规则设定。
- 格式奖励(Format rewards):格式奖励要求模型将思考过程置于
<think>
和</think>
标签之间。
此外还发现,基于结果或过程的奖励模型,不如可验证奖励有效,因为前者可能存在奖励被篡改的问题。
结论
R1 - Zero中最引人注目的一点,是模型展现出自我评估这一涌现能力。在DeepSeek - V3 - base模型上应用强化学习,且不进行任何监督微调,模型就能通过利用额外的测试时计算进行推理。模型生成的推理令牌,使其能够更深入地探索和优化思维过程。
在某些推理基准测试中,DeepSeek - R1 - Zero的表现优于OpenAI - o1 - mini和OpenAI - 0912。
引用
- DeepSeekMath — Paper
- DeepSeek R1 — Technical Report
- Secrets of RLHF in Large Language Models Part I — PPO — Paper
- Secrets of RLHF in Large Language Models Part II — Reward Modelling — Paper
- Proximal Policy Optimization Algorithms — Paper
- RLHF book (Nathan Lambert)
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。