强化学习演进:GRPO 从何而来

强化学习(Reinforcement Learning, RL)是机器学习的一个分支,其核心是让智能体(Agent)通过与环境(Environment)的交互,学习如何采取最优行动(Action)以最大化长期累积奖励(Reward)。

传统强化学习

基本概念和框架

传统强化学习的基本概念和框架如下:

  • 智能体(Agent):学习和决策的主体,如机器人、游戏 AI 等。
  • 环境(Environment):智能体所处的情境,如游戏规则、物理世界等。
  • 状态(State):环境在某一时刻的具体情况,如棋盘布局、传感器数据。
  • 动作(Action):智能体可执行的操作,如移动、加速等。
  • 奖励(Reward):环境对智能体动作的即时反馈(数值信号),如得分增加、任务失败惩罚。
  • 策略(Policy):智能体的行为准则,即从状态到动作的映射,包括了:
    • 确定性策略:给定状态选择固定动作(如 a = π ( s ) a=\pi(s) a=π(s) )。
    • 随机性策略:按概率分布选择动作(如 π ( a ∣ s ) \pi(a|s) π(as))。
  • 价值函数(Value Function):评估状态或动作的长期价值。
    • 状态价值函数 V ( s ) V(s) V(s):在状态 s s s 下,遵循策略 π \pi π 的预期累积奖励。
    • 动作价值函数 Q ( s , a ) Q(s,a) Q(s,a):在状态 s s s 下执行动作 a a a 后的预期累积奖励。
  • 探索与利用(Exploration vs. Exploitation):
    • 探索:尝试新动作以发现潜在更高奖励。
    • 利用:根据已有知识选择当前最优动作。
    • 平衡两者是强化学习的关键挑战。
  • 马尔可夫决策过程(Markov Decision Process, MDP):MDP 是强化学习的数学模型,用于描述环境的状态转移和奖励机制。MDP 假设未来状态只依赖于当前状态和动作,而与过去状态无关,即假设当前状态包含所有历史信息(马尔可夫性),由五元组 ( S , A , P , R , γ ) (S,A,P,R,\gamma) (S,A,P,R,γ) 描述,其中:
    • S S S:状态集合(或状态空间),表示环境中所有可能的状态。状态 s ∈ S s\in S sS 是环境在某一时刻的具体表现。
    • A A A:动作集合(或动作空间),表示智能体在某一状态下可以采取的所有可能动作。动作 a ∈ A a\in A aA 是智能体的决策输出。
    • P P P:状态转移概率 P ( s ′ ∣ s , a ) P(s^\prime|s,a) P(ss,a),在当前状态 s s s 下执行动作 a a a 后转移到状态 s ′ s^\prime s 的概率。
    • R R R:奖励函数 R ( s , a , s ′ ) R(s,a,s^\prime) R(s,a,s),其中 s s s 当前状态, a a a 是智能体采取的动作, s ′ s^\prime s 是执行动作 a a a 后转移到的下一个状态。奖励函数是一个关键组成部分,它定义了智能体在特定状态下采取某个动作后,环境返回的即时奖励。奖励函数的作用是为智能体提供反馈,帮助其评估动作的好坏,从而学习最优策略。
    • γ \gamma γ:折扣因子,权衡即时与未来奖励,调节未来奖励的重要性,取值范围为 0 ≤ γ ≤ 1 0 \le \gamma \le 1 0γ1 γ \gamma γ 越接近 1,表示越重视未来奖励;越接近 0,表示越重视当前奖励。
  • 贝尔曼方程(Bellman Equation)
    贝尔曼方程是强化学习中的核心方程,用于描述价值函数的递归关系。状态价值函数的贝尔曼方程为:
    V ( s ) = ∑ a π ( a ∣ s ) ∑ s ′ P ( s ′ ∣ s , a ) [ R ( s , a , s ′ ) + γ V ( s ′ ) ] V(s) = \sum_a \pi(a|s) \sum_{s^\prime}P(s^\prime|s,a)[R(s,a,s^\prime)+\gamma V(s^\prime)] V(s)=aπ(as)sP(ss,a)[R(s,a,s)+γV(s)]

简单示意图

强化学习示意图

深度强化学习

顾名思义,即深度学习技术和强化学习技术结合,一方面将深度学习模型嵌入到强化学习框架中,从而能够处理开放域复杂推理(如文本生成、逻辑推理)等无限状态空间的决策问题,另一方面,利用强化学习技术训练深度学习模型,能极大提升模型性能。这一技术的典型应用为2022年底OpenAI发布的大模型ChatGPT,其训练中应用了强化学习技术(RLHF),之后强化学习在大模型的训练中受到了越来越多的关注和重视,目前已经成为了训练大模型的必要技术。

基本概念

对应于传统强化学习,大模型背景下的深度强化学习的一些基本概念如下:

  • 智能体:大模型
  • 环境:开放式环境
  • 状态:各种可能的输入数据
  • 动作:各种可能的输出
  • 奖励:大模型输出的得分(一般与人类偏好对齐)
  • 策略:同智能体,一般也叫策略模型或者Actor,产生何种输出是由大模型本身参数决定的
  • 价值函数:与策略模型同等参数的另一个模型

算法演进

奖励是训练信号的来源,决定了RL的优化方向。因此,对于奖励函数的设置至关重要,不合理的奖励函数会导致各种各样的问题。
这里将强化学习训练过程类比为小学考试场景,从奖励函数的优化看看强化学习算法的发展,类比关系如下:

  • 学生(需要训练的策略模型):通过优化策略(学习)追求高回报(考试成绩)。
  • 教师(奖励模型,RM):评估生成内容质量,提供即时反馈(考试评分)。
  • 家长(Critic):基于 RM 反馈生成长期价值评估(零花钱发放规则),指导策略优化方向。

只使用奖励

假设哥哥和弟弟在同一个小学班级。老师对学生考试评分并给出“绝对分数”。哥哥得分通常为 80 分以上(满分 100 分),而弟弟的得分通常为 30 分左右。然后他们直接把这些分数拿给爸爸,向他要零花钱——这意味着他们的“奖励”只是原始考试成绩。谁的分数更高,谁就能得到更多的零花钱。
咋看起来挺好的,但其实有两个大问题:

  • 不公平:弟弟通过很大的努力成绩从30提高到60,但仍然比不上哥哥的80+,奖励依然比哥哥少,他没有得到应用的奖励,导致弟弟觉得不值得(对应于RL中,模型不往这个方向优化,因为奖励不够)。
  • 不稳定:追求更高的分数可能会导致哥哥采取极端的学习方法(例如,整天死记硬背、熬夜等),而这也会导致哥哥状态不稳定,影响了成绩的稳定性(对应于RL中,模型倾向于选择一些极端的动作,导致奖励波动降到,模型训练不稳定)。

在RL中,如果只是简单地优化最终的奖励,也就是最大化下面的目标函数:
J naive ( θ ) = E q , o ∼ ( d a t a , π θ ) [ r ( o ) ] \mathcal{J}_{\text{naive}}(\theta) = \mathbb{E}_{q,o \sim (data,\pi_\theta)}[r(o)] Jnaive(θ)=Eq,o(data,πθ)[r(o)]
那么就会遇到高方差和部分改进动力不足的问题。也就是说,Actor缺乏与自身当前水平相匹配的基线,从而阻碍了训练效率。

引入评论家Critic

发现到这个问题后,爸爸意识到“这不仅仅关乎绝对的分数,还关乎你相对于现有水平进步了多少”。

于是他决定: 把哥哥的“预计分数线”定为 80 分,把弟弟的定为 40 分。如果考试成绩超过这些分数线,就能得到更多的零花钱;如果没有,得到的零花钱就很少,甚至一分钱都没有。

因此,如果弟弟努力学习,成绩从 30 分跃升至 60 分,那么他就比“预计分数线”高出 20 分,这意味着他将获得丰厚的奖励。与此同时,如果哥哥成绩保持在 80 多分左右,奖励就会较小,所以哥哥不一定会比弟弟得到更多。这种安排鼓励每个人从自己的基线水平开始进步,而不是单纯比较绝对分数。

但是这个分数线不是一成不变的,爸爸需要不断地调整分数线以适应哥哥和弟弟的进步。如果弟弟水平达到了60分,那40分的分数线就不再合理和公平(这又会导致他进步动力不足,也会让哥哥觉得不公平)。同理哥哥的基线分数也需要调整。换句话说,爸爸也需要学习,特别是要了解哥哥和弟弟进步的情况。

在RL中,这个“分数线”被称为价值函数 V ψ ( s ) V_\psi(s) Vψ(s),它充当了基准,训练目标从“单纯的奖励”演变为“比基准表现好多少”,用优势(Advantage)来表达:
A t = r t − V ψ ( s t ) A_t = r_t -V_\psi(s_t) At=rtVψ(st)
对于给定的状态 s t s_t st 和动作 o t o_t ot,如果实际奖励超出了评价者的预期,则意味着该动作的表现优于预期(获得正 A t A_t At,也就是正激励,模型会提高选择该动作的概率)。如果低于预期,则该动作表现不佳( A t A_t At 为负,也就是负激励,模型会降低选择该动作的概率)。最简单的目标函数可以表示为:
J adv ( θ ) = E [ A ( o ) ] ,其中 A ( O ) = r ( o ) − V ψ ( s ) \mathcal{J}_{\text{adv}}(\theta) = \mathbb{E}[A(o)],\text{其中} A(O)=r(o)-V_\psi(s) Jadv(θ)=E[A(o)]其中A(O)=r(o)Vψ(s)
通过减去这条“分数线”,减少训练中的方差(优势相对单纯的奖励更稳定),对超出预期的行为给予更高的梯度信号,对未达到预期的行为进行惩罚。

添加 Clip 和 Min 操作

即使有了“分数线”,也会出现新的问题。例如:如果哥哥在某次考试中突然取得突破,获得 95 分或 100 分,爸爸就会给他巨大的奖励,这会鼓励哥哥在下次考试前采取过于激进的学习模式,使得其成绩可能会在两个极端(95 和 60)之间波动,从而导致巨大的奖励波动。

因此,爸爸决定对哥哥和弟弟每一步更新学习策略的幅度进行限制——他不会因为一次考得好就给与很多的零花钱。如果他给的太多,哥哥可能会陷入极端探索;如果他给的太少,哥哥又没有动力。所以他必须找到一个平衡点。
在强化学习算法 PPO(Proximal Policy Optimization)中,这种平衡是通过“Clip”机制实现的。PPO目标的核心包括:
min ⁡ ( r t ( θ ) A t , clip ( r t ( θ ) , 1 − ε , 1 + ε ) A t ) \min\Bigg(r_t(\theta)A_t, \text{clip}\bigg(r_t(\theta), 1-\varepsilon, 1+\varepsilon\bigg)A_t\Bigg) min(rt(θ)At,clip(rt(θ),1ε,1+ε)At)
其中 r t ( θ ) = π θ ( o t ∣ s t ) π θ old ( o t ∣ s t ) r_t(\theta)=\frac{\pi_\theta(o_t|s_t)}{\pi_{\theta_{\text{old}}}(o_t|s_t)} rt(θ)=πθold(otst)πθ(otst) 表示该动作的新旧策略之间的概率比。如果该比率偏离 1 太远,则会将其限制在 [ 1 − ε , 1 + ε ] [1-\varepsilon,1+\varepsilon] [1ε,1+ε] 范围内,这限制了策略在一次更新中可以移动的程度。

参考模型 Reference Model

即便如此,如果哥哥只关注高分,他可能会采取一些可疑的策略——例如,作弊或恐吓老师让他获得满分。显然,这违反了所有规则。在大模型领域,类似的情况是产生有害或虚构的内容以获取更高的奖励。

因此,爸爸又定了一条规则:“不管怎样,你都不能偏离自己原本诚实的学习方法太多。如果你偏离基准太远,即使你分数很高,我也会取消你的资格,扣留你的零花钱。”

这类似于从学期开始(即在最初的监督微调之后)标记一条“参考线”。你不能偏离原来的策略太远,否则你会面临处罚。
在 PPO 中,这通过针对参考模型(初始策略)添加 KL 惩罚来反映,具体的,在目标函数中会包含下面一项表达式:
− β D K L ( π θ ∣ ∣ π ref ) -\beta\mathbb{D}_{KL}(\pi_\theta||\pi_{\text{ref}}) βDKL(πθ∣∣πref)
这使得 Actor 不会偏离原始的合理策略太远,避免“作弊”或其他严重越界的行为。

GRPO

有一天,爸爸说:“我没时间一直评估你的学习进度,也无暇不断画新的分数线。为什么不先做五组模拟测试,然后取它们的平均分作为你的预期分数呢?如果你在实际考试中超过了平均成绩,说明你比自己的预期要好,所以我会奖励你。否则,你得不到多少。”所有人都可以依靠一套个人的模拟测试,而不是爸爸必须不断调整的外部评价。

到目前为止,我们看到 PPO 依赖于 Actor + Critic + Clip + KL 框架。然而,在大模型场景中,Critic 通常需要与 Actor 一样大才能准确评估状态,这可能是昂贵的,有时也不切实际——特别是如果你最后只有一个最终奖励(比如最终答案质量)。
因此,Group Relative Policy Optimization (GRPO)应运而生。其核心思想是:

  • 没有为Critic提供单独的价值网络
  • 对同一个问题从当前策略中采样多个输出
  • 将这些输出的平均奖励视为基线
  • 任何高于平均水平的输出都会产生“正优势”,任何低于平均水平的输出都会产生“负优势”

同时,GRPO 保留了 PPO 的 Clip 和 KL 机制,以确保稳定、合规的更新。
最终,GRPO的目标是最大化下面的函数:
J G R P O ( θ ) = E [ q ∼ P ( Q ) , { o i } i = 1 G ∼ π θ old ( O ∣ q ) ] 1 G ∑ i = 1 G ( min ⁡ ( π θ ( o i ∣ q ) π θ old ( o i ∣ q ) A i , clip ( π θ ( o i ∣ q ) π θ old ( o i ∣ q ) , 1 − ε , 1 + ε ) A i ) − β D KL ( π θ ∥ π ref ) ) , \begin{aligned} \mathcal{J}_{GRPO}(\theta) &= \mathbb{E}\left[ q \sim P(Q), \{ o_i \}_{i=1}^G \sim \pi_{\theta_{\text{old}}} (O|q) \right] \\ &\frac{1}{G} \sum_{i=1}^G \left( \min \left( \frac{\pi_\theta(o_i|q)}{\pi_{\theta_{\text{old}}}(o_i|q)} A_i, \ \text{clip}\left( \frac{\pi_\theta(o_i|q)}{\pi_{\theta_{\text{old}}}(o_i|q)}, 1 - \varepsilon, 1 + \varepsilon \right) A_i \right) - \beta \mathbb{D}_{\text{KL}} (\pi_\theta \parallel \pi_{\text{ref}}) \right), \end{aligned} JGRPO(θ)=E[qP(Q),{oi}i=1Gπθold(Oq)]G1i=1G(min(πθold(oiq)πθ(oiq)Ai, clip(πθold(oiq)πθ(oiq),1ε,1+ε)Ai)βDKL(πθπref)),
其中 A i = r i − mean ( { r 1 , r 2 , ⋯ , r G } ) std ( { r 1 , r 2 , ⋯ , r G } ) A_i = \frac{r_i-\text{mean}(\{r_1, r_2, \cdots, r_G\})}{\text{std}(\{r_1, r_2, \cdots, r_G\})} Ai=std({r1,r2,,rG})rimean({r1,r2,,rG})
通过对同一问题的多个输出的奖励取平均值并进行标准化来计算“相对分数”,这样,就不再需要专门的价值函数,但仍然可以获得动态“分数线”,并简化训练且节省资源。

深度强化学习演进图示

暂时无法在飞书文档外展示此内容

参考

DeepSeek-R1 Dissection: Understanding PPO & GRPO Without Any Prior Reinforcement Learning Knowledge

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/24616.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树和二叉树

文章目录 树和二叉树1.树的概念1.1特点1.2基本概念 2.二叉树2.1二叉树的定义2.2特殊的树2.3 二叉树的性质2.4二叉树的存储 二叉树的遍历 树和二叉树 1.树的概念 树是一种非线性的数据结构,它是由n个有限结点组成一个有具体层次关系的集合 1.1特点 没有前驱结点的…

ubuntu离线安装Ollama并部署Llama3.1 70B INT4

文章目录 1.下载Ollama2. 下载安装Ollama的安装命令文件install.sh3.安装并验证Ollama4.下载所需要的大模型文件4.1 加载.GGUF文件(推荐、更容易)4.2 加载.Safetensors文件(不建议使用) 5.配置大模型文件 参考: 1、 如…

15.代码随想录算法训练营第十五天|(递归)110. 平衡二叉树,257. 二叉树的所有路径*,404. 左叶子之和,222.完全二叉树的节点个数[打卡自用]

15.代码随想录算法训练营第十五天|(递归)110. 平衡二叉树,257. 二叉树的所有路径*,404. 左叶子之和,222.完全二叉树的节点个数 给定一个二叉树,判断它是否是 平衡二叉树 示例 1: 输入&#xf…

GateWay

文章目录 创建网关配置路由规则工作原理 断言过滤器默认filter全局跨域 左边的是响应式网关,右边是传统网关(Servlet年代) 推荐左边的 需求 创建网关 在服务模块外 新建一个gateway模块 导入依赖,nacos和gateway和负载均衡 配置一下 这里网关默认占80…

十一、大数据治理平台总体功能架构

大数据治理平台的功能架构图中心主题:数据治理 核心重点是建立健全大数据资产管理框架,确保数据质量、安全性、可访问性和合规性。 大数据治理平台总体功能架构图 关键功能领域 1.数据资产平台(左侧) 此部分主要关注数据资产本身…

网络安全 机器学习算法 计算机网络安全机制

(一)网络操作系统 安全 网络操作系统安全是整个网络系统安全的基础。操作系统安全机制主要包括访问控制和隔离控制。 访问控制系统一般包括主体、客体和安全访问政策 访问控制类型: 自主访问控制强制访问控制 访问控制措施: 入…

PDF扫描档智能方向识别:多模型投票机制的实践测试 救活古典书籍

2025-02-22 20:10物联全栈123 尊敬的诸位!我是一名物联网工程师。关注我,持续分享最新物联网与AI资讯和开发实战。期望与您携手探寻物联网与 AI 的无尽可能 RAG知识库搭建的过程中,扫描档pdf的支持和准确率一直是个大家都不愿主动提起的事情…

初会学习记录

【25初级会计《实务》】第一章:权责发生制举例_哔哩哔哩_bilibili 务实: 第一章 (1)会计概念,职能和目标: 2025年2月25日: (2)会计假设: 2025年2月26日: (3)会计核算基础: 202…

【FL0091】基于SSM和微信小程序的社区二手物品交易小程序

🧑‍💻博主介绍🧑‍💻 全网粉丝10W,CSDN全栈领域优质创作者,博客之星、掘金/知乎/b站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战,以及程序定制化开发…

【DDD系列-10】一页纸回顾DDD

1. DDD是什么 DDD: 是 Domain-Driven Design 的缩写,是 Eric Evans (埃里克•埃文斯)于 2004 年提出的一种软件设计方法和理念。其主要的思想是,利用确定的业务模型来指导业务与应用的设计和实现。主张开发人员与业务人员持续地沟通和模型的…

【视频2 - 4】初识操作系统,Linux,虚拟机

📝前言说明: ●本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,主要跟随B站博主灵茶山的视频进行学习,专栏中的每一篇文章对应B站博主灵茶山的一个视频 ●题目主要为B站视频内涉及的题目以及B站视频中提到的“课后作业”。…

逆向pyinstaller打包的exe软件,获取python源码(5)

在ailx10:逆向pyinstaller打包的exe软件,获取python源码(2)中,我们已经逆向出了主程序,但是import导入的py文件并没有被逆向出来,今天在知乎网友给的提醒下,说是在 PYZ-00.pyz_extracted 文件夹中&#xff…

快速理解Raft分布式共识算法

目录 拜占庭将军问题 Raft算法是干什么的? 一、领导选举(选老板) 二、日志复制(发通知) 三、安全性(防篡改) 🌰 举个真实例子 ✔️ Raft的优势 基础 状态机 节点类型 任期…

mmdetection框架下使用yolov3训练Seaships数据集

之前复现的yolov3算法采用的是传统的coco数据集,这里我需要在新的数据集上跑,也就是船舶检测方向的SeaShips数据集,这里给出教程。 Seaships论文链接:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber8438999 一、…

方法的有关知识(含递归)

方法使用 方法就是一个 代码片段 . 类似于 C 语言中的 " 函数 " 。 方法(代码片段)定义: public class Method{ // 方法的定义public static int add(int x, int y) {return x y;} }修饰符(public static) 返回值类型 方法名称([参数类型 形参]){ 方法体代码;…

公链开发与公链生态开发:构建未来区块链世界的基石

在区块链技术日新月异的今天,公链(Public Blockchain)作为去中心化网络的核心,不仅为数字资产交易提供了坚实的基础,更推动了智能合约、去中心化应用(DApps)等生态系统的蓬勃发展。公链开发与公…

python+django+transformers模型:实现商品推荐功能(集成nacos配置,数据端mongo)

一、环境安装准备 #创建 虚拟运行环境python -m venv myicrplatenv#刷新source myicrplatenv/bin/activate#python Django 集成nacospip install nacos-sdk-python#安装 Djangopip3 install Django5.1#安装 pymysql settings.py 里面需要 # 强制用pymysql替代默认的MySQLdb pym…

vue3-07模拟vue3的响应式原理Proxy (代理对象)与Reflect (反射对象)

1.实现原理 通过Proxy (代理对象): 拦截对象中任意属性的变化,包括: 性值的读写、性的添加、属性的删除。通过Reflect (反射对象): 对源对象的属性进行操作。 new Proxy(data,{ // 拦截读取属性值 get (target, prop) ( return Reflect.get(target, prop) // 拦截设置属性值或…

微信小程序源码逆向 MacOS

前言 日常工作中经常会遇到对小程序的渗透测试,微信小程序的源码是保存在用户客户端本地,在渗透的过程中我们需要提取小程序的源码进行问题分析,本篇介绍如何在苹果电脑 MacOS 系统上提取微信小程序的源码。 0x01 微信小程序提取 在苹果电…

Python 3.12安装流程

一、下载Python安装包 访问Python官网:Python.org 点击 Download Python 3.12按钮(自动识别您的操作系统)。 二、运行安装程序 找到下载的安装文件(如 python-3.12.3-amd64.exe),双击运行。 勾选 Add py…