type
status
date
slug
summary
tags
category
icon
password
阿里最新的RLHF论文,一直没搞懂
“grpo是用两个模型对每个token做重要性采样,gspo是对整个句子做重要性采样。对于一个完整的答案,token有很强的偶然性,而且对每个token的更新都要单独做截断,会导致有的更新到位,有的不到位,学到一些奇怪的东西”
做个对比
GRPO:基于Token独立加权的梯度
GRPO 的核心问题在于它如何计算策略梯度。
- 目标函数: 我们先看 GRPO 的优化目标(为简洁省略 clipping):
- 关键项定义:
- 优势 (Advantage) :对于序列 中的所有Token,该值是恒定的。
- 重要性权重 (Importance Weight) :这是Token级别的,每个Token都有自己独立的权重。
- 梯度分析 (核心问题所在): 对目标函数求导,我们得到 GRPO 的梯度: 公式解读:
- 是Token 的标准策略梯度,代表了模型参数应该移动的方向。
- 关键在于:每个Token的梯度方向,都被其各自的、独立的重要性权重 进行了缩放。
- 后果:由于 是基于单个Token的采样计算的,其值波动极大,充满了“偶然性”。这意味着在一个序列内部,Token 1 的梯度可能被放大 1.2 倍,Token 2 的梯度可能被缩小到 0.8 倍,Token 3 的梯度又被放大 1.5 倍。这种在序列内部不一致的、嘈杂的加权,导致了梯度的巨大方差,最终使训练过程不稳定,甚至导致模型崩溃。
GSPO:基于序列统一加权的梯度
GSPO 通过在序列层面进行加权,从根本上解决了这个问题。
- 目标函数: GSPO 的优化目标如下(为简洁省略 clipping):
- 关键项定义:
- 优势 (Advantage) :与 GRPO 相同,是序列级别的。
- 重要性权重 (Importance Weight) :这是序列级别的,一个序列共享一个权重。
- 梯度分析 (解决方案): 对 GSPO 的目标函数求导: 公式解读:
- 是整个序列中所有Token梯度的总和。
- 关键在于:这个“总梯度”被一个统一的、序列级别的权重 进行缩放。
- 后果:序列 中的所有Token的梯度更新方向是一致的。权重 作为一个整体的调节因子,判断整个序列的“偏离程度”,然后统一地放大或缩小整个序列的更新步长。这种做法消除了 GRPO 中由于Token间权重不一致而引入的内部方差,从而“消除了这个不稳定性因素”。
核心差异公式化总结
特性 | GRPO | GSPO |
梯度加权项 | Token各自的权重 | 序列共享的权重 |
梯度更新公式(单个序列) | ||
权重不一致性 | 序列内部权重不一致,引入高方差 | 序列内部权重完全一致,信号稳定 |
结果 | 训练不稳定,易崩溃 | 训练稳定,效率和性能更高 |
- 作者:SimonSun
- 链接:https://simonsun.xyz//article/llm-14
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。