详解DeepSeek-R1核心强化学习算法:GRPO

在目前大语言模型中进行微调的流程中,一般在监督微调(Supervised Fine-Tuning, SFT)阶段之后,进一步通过强化学习对模型进行优化可以显著提升其性能。而Group Relative Policy Optimization (GRPO),就是使用在该阶段,替换传统的PPO算法。

From PPO to GRPO:

Proximal Policy Optimization (PPO) 是一种广泛使用的强化学习算法,尤其适用于对 LLMs 进行微调。PPO 的目标是通过最大化以下替代目标函数来优化策略模型:

其中,πθ 和 πθ_old 分别是当前策略模型和旧策略模型,q 和 o 是从问题数据集和旧策略 πθ_old 中采样的问题和输出。超参数 ϵ 用于稳定训练过程。优势 A_i 是通过广义优势估计(Generalized Advantage Estimation, GAE)计算的,计算过程基于奖励 {ri≥j} 和学习到的值函数 Vπold。为了减轻对奖励模型的过度优化,标准方法是在每个标记的奖励中添加一个来自参考模型的每个标记的KL惩罚,即

其中,𝑟_𝜑 是奖励模型,𝜋_𝑟𝑒𝑓 是参考模型,通常是初始的监督微调(SFT)模型,而 𝛽 是 KL 惩罚项的系数。

然而,PPO 中的值函数通常是一个与策略模型大小相当的模型,这带来了显著的内存和计算负担。此外,在 LLMs 的上下文中,值函数在训练过程中被用作优势计算中的Baseline,但通常只有最后一个 token 会被奖励模型赋予奖励分数,这可能使得值函数的训练变得复杂。

为了解决这些问题,我们提出了 Group Relative Policy Optimization (GRPO),不再需要像PPO那样加入额外的价值函数近似,而是直接使用多个采样输出的平均奖励作为Baseline,显著减少了训练资源的使用。

具体来说,对于每个问题 i,GRPO 从旧策略 πθold 中采样一组输出 {i1,i2,…,iA},然后通过最大化以下目标函数来优化策略模型:

其中,ϵ 和 β 是超参数,A^i,j 是基于组内奖励的相对优势估计。与 PPO 不同,GRPO 通过直接使用奖励模型的输出来估计基线,避免了训练一个复杂的值函数。此外,GRPO 通过直接在损失函数中加入策略模型和参考模型之间的 KL 散度来正则化,而不是在奖励中加入 KL 惩罚项,从而简化了训练过程。

此外,GRPO 通过直接在损失函数中加入策略模型和参考模型之间的 KL 散度来正则化,而不是在奖励中加入 KL 惩罚项,从而简化了训练过程。

与(2)中PPO使用的 KL 惩罚项不同,GRPO使用下面的无偏估计来估计 KL 散度:

该值一定为正。

结果监督强化学习与 GRPO:

对于每个问题 q,从旧策略模型 πθ_old 中抽取一组输出 {o1, o2, …, oG}。然后使用奖励模型对这些输出进行评分,产生相应的 G 个奖励 r={r1, r2, …, rG}。随后,通过减去组平均值并除以组标准差来对这些奖励进行标准化处理。结果监督在每个输出 oi 的末尾提供标准化的奖励,并将输出中所有token的优势 Aˆi,t 设定为该标准化奖励,即 Aˆi,t = (ri - mean®) / std®,然后通过最大化方程(3)中定义的目标来优化策略。

过程监督强化学习与GRPO:

结果监督仅在每个输出结束时提供奖励,这可能不足以有效监督复杂数学任务中的策略。遵循历史方法,我们还探讨了过程监督,它在每个推理步骤结束时提供奖励。

具体来说,给定问题 q 和 G 个抽样输出 {o1, o2, …, oG},使用过程奖励模型对每个输出步骤进行评分,从而得到相应的奖励:R={{rindex(1), …, rindex(K1)}, …, {rindex(1)11G, …, rindex(KG)G}},其中 index(j) 是第 j 步的结束标记索引,Ki 是第 i 个输出中的总步数。

我们也用平均值和标准差对这些奖励进行标准化处理,即 ˜rindex(j)i = (rindex(j) - mean®) / std®。接下来,过程监督计算每个标记的优势作为后续步骤的标准化奖励之和,即 Aˆi,t = ∑index(j)≥t ˜rindex(j)i,并通过最大化方程(3)中定义的目标来优化策略。

迭代强化学习与GRPO:

在强化学习的训练进程中,随着策略模型的不断进化,旧的奖励模型可能不足以有效地监督当前的策略模型。因此,为了应对这个问题,我们引入了带有组相对策略优化(Group Relative Policy Optimization, GRPO)的迭代强化学习方法。

具体来说,在每次迭代中,基于当前策略模型生成的数据创建新的奖励模型训练集,并通过一种包含重播机制的方法来持续训练奖励模型,其中历史数据占比10%。这一过程有助于确保奖励模型能够跟上策略模型的进步,从而更有效地指导后续的训练。

DeepSeekMath-RL的训练与评估:

在本节中,我们详细描述了DeepSeekMath-RL模型的训练和评估过程。首先介绍了用于监督学习阶段的数据集,并讨论了强化学习(RL)训练设置。随后,展示了评估结果,并将DeepSeekMath-RL与不同的基线方法进行了比较。

监督学习数据集

为了训练DeepSeekMath-RL的基础策略模型,我们使用了一个包含3500万个数学问题的数据集进行监督学习。这些问题是通过从互联网上爬取得到的,并经过清理以确保其适合用于训练。此外,对于奖励模型的训练,我们额外收集了一个由高质量回答组成的数据集,这些回答是通过抽样自旧策略模型生成的答案,并经过人工标注者筛选和改进得到的。这个奖励模型训练集包含了约1600万个问题-答案对。

强化学习训练设置

在强化学习阶段,我们采用了先前部分中介绍的方法:结果监督、过程监督以及迭代GRPO。为了保证训练的稳定性,我们采取了一系列措施,包括但不限于:

  • 使用监督学习阶段训练出的模型作为初始化;

  • 在更新策略时,结合历史数据(约占10%)来保持训练的连续性和稳定性;

  • 调整学习率和其他超参数以优化性能。

讨论:

5.1 预训练中的经验教训

我们首先分享我们在预训练过程中的经验。除非另有说明,我们将遵循前概述的训练设置。值得注意的是,当提到本节中的DeepSeekMath语料库时,我们使用的是在数据收集过程的第二次迭代中创建的89B标记的数据集。

5.1.1 代码训练有助于数学推理

一个流行但未经验证的假设是:代码训练可以提高推理能力。我们试图对这一假设提供部分回答,特别是在数学领域:代码训练可以提高模型在有无工具使用的情况下进行数学推理的能力。

为了研究代码训练如何影响数学推理,我们进行了以下两阶段训练和一阶段训练设置的实验:

两阶段训练

  • 代码训练400B标记 → 数学训练150B标记:我们训练DeepSeek-LLM 1.3B模型,先进行400B代码标记的训练,然后进行150B数学标记的训练。

  • 通用训练400B标记 → 数学训练150B标记:作为对照实验,我们还用通用标记(从DeepSeek-AI创建的一个大规模通用语料库中采样)代替第一阶段的代码标记进行训练,以尝试研究代码标记与通用标记相比在提高数学推理方面的优势。

一阶段训练

  • 数学训练150B标记:我们训练DeepSeek-LLM 1.3B模型进行150B数学标记的训练。

  • 代码和数学混合训练:数学训练后进行代码训练会降低编码性能。我们研究当代码标记和数学标记混合进行一阶段训练时,是否仍然可以提高数学推理能力,并且是否可以缓解因两阶段训练而产生的灾难性遗忘问题。

表6和表7展示了在不同训练设置下的下游性能。

代码训练对使用工具进行数学推理有益。如表6所示,在两阶段训练设置中,单独的代码训练已经显著提高了使用Python解决GSM8K和MATH问题的能力。第二阶段的数学训练进一步提高了性能。有趣的是,在一阶段训练设置中,混合代码标记和数学标记有效地缓解了两阶段训练中出现的灾难性遗忘问题,并且在编码(表7)和使用工具进行数学推理(表6)方面实现了协同增效。

代码训练也提高了没有工具使用的数学推理能力。在两阶段训练设置中,初始阶段的代码训练已经导致了适度的提升。它还提高了后续数学训练的效率,最终导致了最佳性能。然而,将代码标记和数学标记混合进行一阶段训练会损害没有工具使用的数学推理能力。一个猜想是,由于DeepSeek-LLM 1.3B模型的规模有限,它缺乏同时完全吸收代码和数学数据的能力。

ArXiv论文似乎对提高数学推理能力无效:

ArXiv论文通常被包含在数学预训练数据中,但关于它们对数学推理影响的详细分析尚未广泛进行。或许令人意外的是,根据我们的实验,ArXiv论文似乎对提高数学推理能力无效。我们对不同大小的模型进行了实验,包括DeepSeek-LLM 1.3B和DeepSeek-Coder-Base-v1.5 7B,使用了经过不同处理流程的ArXiv语料库:

  • MathPile:一个8.9B标记的数据集,使用清理和过滤启发式规则开发,其中超过85%是科学ArXiv论文。

  • ArXiv-RedPajama:移除了前言、注释、宏和参考书目的全部ArXiv LaTeX文件,总计28.0B标记。

在我们的实验中,我们分别用MathPile和ArXiv-RedPajama语料库训练DeepSeek-LLM 1.3B模型150B标记,以及DeepSeek-Coder-Base-v1.5 7B模型40B标记。似乎ArXiv论文对提高数学推理能力无效。当仅在ArXiv语料库上训练时,两个模型在本研究中使用的各种不同复杂度的数学基准测试中均未显示出显著的改进,甚至出现了性能下降。这些基准测试包括定量推理数据集、多项选择挑战以及形式化数学。

然而,这一结论存在局限性,应谨慎对待。我们尚未研究:

  • ArXiv标记对本研究中未包含的特定数学相关任务(例如,将形式陈述或证明非形式化)的影响;

  • 当ArXiv标记与其他类型数据结合使用时的效果;

  • 在更大模型规模下,ArXiv论文是否会显现出其益处。

因此,需要进一步探索,我们将此留作未来的研究内容。

关于强化学习的理解:

朝向统一范式:

在本节中,我们提供了一个统一的范式来分析不同的训练方法,如SFT、RFT、DPO、PPO、GRPO,并进一步进行实验以探索该统一范式的因素。一般来说,关于参数 θ 的训练方法的梯度可以写成:

存在三个关键组成部分:1)数据源 D,它决定了训练数据;2)奖励函数 πθold,它是训练奖励信号的来源;3)算法 A:它处理训练数据和奖励信号以确定梯度系数 A(s,a,i,πθold),该系数决定了对数据的惩罚或强化的大小。我们根据这样一个统一的范式分析了几种代表性方法:

  • 监督微调(SFT):SFT在人类选择的SFT数据上对预训练模型进行微调。

  • 拒绝采样微调(RFT):RFT进一步在SFT模型采样的输出上对SFT模型进行微调,这些输出基于SFT问题进行了过滤。RFT根据答案的正确性过滤输出。

  • 直接偏好优化(DPO):DPO通过在SFT模型采样的输出上使用成对的DPO损失来微调SFT模型。

  • 在线拒绝采样微调(Online RFT):与RFT不同,Online RFT使用实时策略模型进行初始化,并通过实时策略模型采样的增强输出进行微调。

  • PPO/GRPO:PPO/GRPO使用SFT模型初始化策略模型,并使用实时策略模型采样的输出进行强化。

为什么强化学习有效?

在本文中,我们在一个子集的指令微调数据上进行了强化学习,并且在指令微调模型的基础上取得了显著的性能提升。为了进一步解释为什么强化学习有效,我们在两个基准测试上评估了SFT和RL DeepSeekMath 7B的Pass@K和Maj@K准确率。如图7所示,RL增强了Maj@K的性能,但没有增强Pass@K。这些发现表明,RL通过使输出分布更加稳健来增强模型的整体性能,换句话说,似乎改进是归因于从TopK中提升正确响应,而不是增强基本能力。

如何实现更有效的强化学习?

我们证明了强化学习在数学推理任务中效果很好。我们还提供了一个统一的范式来理解一系列代表性训练方法。在这个范式内,所有方法都被概念化为直接或简化的强化学习技术。如方程5所总结的,存在三个关键组成部分:数据源、算法和奖励函数。我们为更有效的强化学习提供了一些潜在的未来方向。

数据源:数据源是所有训练方法的原材料。在RL的上下文中,我们特别指的是从策略模型采样的输出的未标记问题。在本文中,我们仅使用来自指令微调阶段的问题,并使用简单的核采样来采样输出。我们认为这是我们的RL管道仅提高了Maj@K性能的一个潜在原因。在未来,我们将探索我们的RL管道在分布外问题提示上,结合基于树搜索方法的先进采样(解码)策略。此外,高效的推理技术等技术决定了策略模型的探索效率,也起着极其重要的作用。

算法:算法处理数据和奖励信号以确定梯度系数,从而更新模型参数。根据方程5,在一定程度上,所有方法现在都完全信任奖励函数的信号来增加或减少某个token的条件概率。然而,无法确保奖励信号始终可靠,特别是在极其复杂的任务中。例如,即使是经过精心标注的PRM800K数据集,仍然大约有20%的错误标注。为此,我们将探索对噪声奖励信号具有鲁棒性的强化学习算法。我们相信,这种WEAK-TO-STRONG对齐方法将为学习算法带来根本性的变化。

奖励函数:奖励函数是训练信号的来源。在RL中,奖励函数通常是神经奖励模型。我们认为存在三个重要的奖励模型方向:

1)如何增强奖励模型的泛化能力。奖励模型必须能够有效地泛化以处理分布外的问题和先进的解码输出;否则,强化学习可能仅仅稳定LLMs的分布,而不是提高它们的基本能力;

2)如何反映奖励模型的不确定性。不确定性可能潜在地作为弱奖励模型和弱到强学习算法之间的连接桥梁;

3)如何高效地构建高质量的过程奖励模型,这些模型可以为推理过程提供细粒度的训练信号。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

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

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

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值