一、写在前面
预训练 赋予了 LLMs 广阔的知识和强大的语言能力,但模型本身并不知道 什么是好的,什么是坏的,什么是符合人类偏好的。我们需要 引导 LLMs 学习人类的价值观,理解指令背后的意图,并生成更安全、更可靠、更符合人类期望的文本。强化学习(Reinforcement Learning,RL) 提供了一种强大的工具来实现这一目标,特别是 基于人类反馈的强化学习 (Reinforcement Learning from Human Feedback, RLHF),已经成为提升 LLMs 性能和对齐人类偏好的关键技术。
二、传统 RL 方法及其在 LLM 后训练中的应用
传统强化学习 (Traditional Reinforcement Learning) 的核心思想是让 智能体 (Agent) 在 环境 (Environment) 中不断试错学习,通过 奖励 (Reward) 信号来指导策略优化,最终学习到在特定环境中采取最优行动策略。其基本原理可以用以下流程概括:
-
智能体与环境交互 (Agent-Environment Interaction): 智能体观察环境状态 (State),并根据当前策略 (Policy) 选择一个行动 (Action);环境接收行动后,转移到新的状态,并给智能体一个奖励 (Reward)。
-
策略优化 (Policy Optimization): 智能体根据环境反馈的奖励信号,调整自身策略,使其在未来能够获得更高的累积奖励 (Cumulative Reward)。
应用于 LLM 后训练 (Post-Training) 时,传统 RL 方法的流程通常如下:
-
定义环境 (Environment): LLM 本身充当环境。输入 prompt 作为环境状态,LLM 生成的 response 作为环境的下一步状态。
-
定义智能体 (Agent): 策略模型 (Policy Model),即待优化的 LLM 模型,充当智能体。它的目标是学习一个策略,使其能够根据输入 prompt 生成高质量的 response。
-
定义行动空间 (Action Space): LLM 的行动空间是 词汇表 (Vocabulary)。每一步,LLM 从词汇表中选择一个 token 作为输出。
-
定义奖励函数 (Reward Function): 奖励函数用于评估 LLM 生成的 response 的质量。在 RLHF 中,奖励通常来自 人类反馈 (Human Feedback) 或 奖励模型 (Reward Model) 的打分。奖励值越高,表示 response 越符合人类偏好。
-
策略优化算法 (Policy Optimization Algorithm): 常用的策略优化算法包括 策略梯度 (Policy Gradient) 方法,如 REINFORCE、Actor-Critic、以及 近端策略优化 (PPO) 等。这些算法利用奖励信号来更新策略模型,使其生成更高奖励的 responses。
以 PPO 为例,其应用于 LLM 后训练的过程大致如下:
-
数据收集 (Data Collection): 使用 策略模型 (Policy Model) 对 prompt 进行采样,生成 responses,并使用 奖励模型 (Reward Model) 对 responses 进行打分,获取奖励值。
-
训练 Critic 网络 (Train Critic Network): 使用收集到的数据,训练 价值函数 (Value Function) 或 Critic 网络,用于评估当前策略的价值,预测未来累积奖励。
-
策略更新 (Policy Update): 使用 PPO 算法,结合 奖励值 和 Critic 网络的评估,更新 策略模型 (Policy Model) 的参数。PPO 通过引入 重要性采样 (Importance Sampling) 和 裁剪函数 (Clip Function) 等技术,提高了策略更新的稳定性和效率。
-
迭代训练 (Iterative Training): 重复步骤 1-3,不断迭代训练,直至策略模型性能收敛或达到预设的训练目标。
三、传统 RL 方法应用于 LLM 的挑战
尽管传统 RL 方法为 LLM 后训练提供了有效的框架,但在实际应用中,仍然面临诸多挑战:
- 计算开销巨大: LLMs 参数量庞大,训练一个 PPO 的 critic 网络以及进行多次策略更新迭代,计算成本非常高昂。
- 训练不稳定: PPO 训练过程对超参数敏感,容易出现训练崩溃或性能震荡。
- 奖励函数设计困难: 为 LLMs 设计一个能够准确反映人类偏好的奖励函数并非易事,不恰当的奖励函数反而会误导模型。
为了解决这些问题,DeepSeek-AI 团队在 DeepSeek-V2 和 DeepSeek-V3 模型中采用了 Group Relative Policy Optimization (GRPO) - 群组相对策略优化 算法。GRPO 是一种 无 critic (critic-free) 的强化学习方法,它巧妙地利用 群组排序 (group ranking) 的思想,实现了更稳定、更高效的 LLM 强化学习。
四、GRPO 理论:相对排序,无需 Critic
GRPO 的核心思想是 相对比较 (relative comparison) 和 群组优化 (group optimization)。它摒弃了传统 RL 方法中复杂的 critic 网络,转而直接比较 同一 prompt 下不同 response 之间的优劣,并以此作为优化策略的信号。
1 相对排序的思想
想象一下,你正在教一个小孩子画画。与其告诉他“这幅画值 8 分,那幅画值 9 分”这种绝对分数,不如直接告诉他“这幅画比那幅画画得更好”。对于 LLMs 来说,也是如此。人类更擅长进行相对判断,而非绝对评分。GRPO 正是借鉴了这种思想,让模型学习 response 之间的相对排序关系,而非绝对的奖励值。
例如,对于同一个问题 “请写一首关于秋天的诗歌”,模型可能会生成以下三个 response:
- Response 1: 秋风瑟瑟,落叶飘零。
- Response 2: 秋天来了,树叶黄了,天气凉了。
- Response 3: 枫叶如丹,层林尽染,雁字南归,秋意阑珊。
如果让人类来评价,我们可能会认为 Response 3 比 Response 1 和 Response 2 更好,而 Response 1 又比 Response 2 更好。GRPO 的目标就是让模型学习到这种 排序关系:Response 3 > Response 1 > Response 2。
2 无 Critic 的优势
传统 RL 方法,如 PPO,需要训练一个 Critic 网络 来评估当前策略的价值,并辅助策略更新。然而,Critic 网络的训练往往不稳定,且容易与 Policy 网络产生耦合,影响整体训练效果。
GRPO 巧妙地 避免了 Critic 网络的训练。它直接利用 response 的相对排序信息 来更新 Policy 网络,简化了训练流程,提高了训练稳定性。
3 GRPO 的目标函数
GRPO 的目标函数旨在最大化 群组内相对优势 (group relative advantage),并同时加入 KL 散度惩罚项 (KL divergence penalty),防止策略更新过大。
GRPO 的目标函数可以用以下公式表示:
J_GRPO(θ) = E[q ~ P(Q), {o_i}_i=1^G ~ π_θ_old(O|q)] [ 1/G * Σ_{i=1}^G ( min( ratio(θ, θ_old, o_i) - A_i, clip(ratio(θ, θ_old, o_i), 1-ε, 1+ε) - A_i ) - β * D_KL(π_θ || π_ref) ) ]
公式解读:
- E[ … ]: 期望值,表示对 prompt 分布 P(Q) 和 response 群组 {o_i}_i=1^G 求期望。
- q ~ P(Q): 从 prompt 分布 P(Q) 中采样一个 prompt q。
- {o_i}_i=1^G ~ π_θ_old(O|q): 使用旧策略模型 π_θ_old 对 prompt q 进行采样,生成一个包含 G 个 response 的群组 {o_i}_i=1^G。
- ratio(θ, θ_old, o_i) = π_θ(o_i|q) / π_θ_old(o_i|q): 重要性采样率,表示新策略模型 π_θ 生成 response o_i 的概率与旧策略模型 π_θ_old 生成 response o_i 的概率之比。
- A_i: 第 i 个 response o_i 的相对优势 (advantage),由群组内 responses 的