type
status
date
slug
summary
tags
category
icon
password
😀
阿里最新的RLHF论文,一直没搞懂 “grpo是用两个模型对每个token做重要性采样,gspo是对整个句子做重要性采样。对于一个完整的答案,token有很强的偶然性,而且对每个token的更新都要单独做截断,会导致有的更新到位,有的不到位,学到一些奇怪的东西” 做个对比

GRPO:基于Token独立加权的梯度

GRPO 的核心问题在于它如何计算策略梯度。
  1. 目标函数: 我们先看 GRPO 的优化目标(为简洁省略 clipping):
  1. 关键项定义
      • 优势 (Advantage) :对于序列 中的所有Token,该值是恒定的
      • 重要性权重 (Importance Weight) :这是Token级别的,每个Token都有自己独立的权重。
  1. 梯度分析 (核心问题所在): 对目标函数求导,我们得到 GRPO 的梯度: 公式解读
      • 是Token 的标准策略梯度,代表了模型参数应该移动的方向。
      • 关键在于:每个Token的梯度方向,都被其各自的、独立的重要性权重 进行了缩放。
      • 后果:由于 是基于单个Token的采样计算的,其值波动极大,充满了“偶然性”。这意味着在一个序列内部,Token 1 的梯度可能被放大 1.2 倍,Token 2 的梯度可能被缩小到 0.8 倍,Token 3 的梯度又被放大 1.5 倍。这种在序列内部不一致的、嘈杂的加权,导致了梯度的巨大方差,最终使训练过程不稳定,甚至导致模型崩溃。

GSPO:基于序列统一加权的梯度

GSPO 通过在序列层面进行加权,从根本上解决了这个问题。
  1. 目标函数: GSPO 的优化目标如下(为简洁省略 clipping):
  1. 关键项定义
      • 优势 (Advantage) :与 GRPO 相同,是序列级别的。
      • 重要性权重 (Importance Weight) :这是序列级别的,一个序列共享一个权重。
  1. 梯度分析 (解决方案): 对 GSPO 的目标函数求导: 公式解读
      • 是整个序列中所有Token梯度的总和。
      • 关键在于:这个“总梯度”被一个统一的、序列级别的权重 进行缩放。
      • 后果:序列 中的所有Token的梯度更新方向是一致的。权重 作为一个整体的调节因子,判断整个序列的“偏离程度”,然后统一地放大或缩小整个序列的更新步长。这种做法消除了 GRPO 中由于Token间权重不一致而引入的内部方差,从而“消除了这个不稳定性因素”。

核心差异公式化总结

特性
GRPO
GSPO
梯度加权项
Token各自的权重
序列共享的权重
梯度更新公式(单个序列)
权重不一致性
序列内部权重不一致,引入高方差
序列内部权重完全一致,信号稳定
结果
训练不稳定,易崩溃
训练稳定,效率和性能更高
最近的开源模型汇总(7.29)RAG技术汇总(4)高级检索方法
Loading...