了解DeepSeek R1
R1探索纯强化学习是否可以在没有监督微调的情况下学会推理的能力。
‘Aha’ Moment
这种现象有点类似于人类在解决问题时突然意识到的方式,以下是它的工作原理:
- 初始尝试:模型对解决问题进行初始尝试
- 识别:识别潜在的错误或不一致
- 自我纠正:它根据这种识别调整其方法
- 解释:它可以解释为什么新方法更好
这种能力从 RL 训练中自然而然地出现,没有明确编程,展示了学习,而不仅仅是从训练数据中记住一个过程。
训练过程
- DeepSeek-R1-Zero: 纯粹使用强化学习训练的模型。
- DeepSeek-R1: 基于 DeepSeek-R1-Zero 构建并添加监督微调的模型。
Feature | DeepSeek-R1-Zero | DeepSeek-R1 |
---|---|---|
Training Approach | Pure RL | Multi-phase (SFT + RL) |
Fine-tuning | None | Supervised fine-tuning |
Reasoning Capability | Emergent | Enhanced |
AIME Performance | 71.0% | 79.8% |
Key Characteristics | Strong reasoning but readability issues | Better language consistency and readability |
1. Cold Start Phase(Quality Foundation)
2. Reasoning RL Phase(Capability Building)
此阶段采用基于规则的强化学习,奖励与解决方案的正确性直接相关,无需单独的奖励模型,从而简化了训练过程。
- language consistency reward
- human preferences reward
- answer reward
- format reward
3. Rejection Sampling Phase(Quality Control)
侧重于推理,此阶段整合来自其他领域的数据,以增强模型在编写、角色扮演和其他通用任务方面的能力
4. Diverse RL Phase(Broad Alignment)
最后的 Diverse RL 阶段使用复杂的混合方法处理多种任务类型。对于确定性任务,它采用基于规则的奖励,而主观任务则通过 LLM 反馈进行评估。此阶段旨在通过其创新的混合奖励方法实现人类偏好对齐,将基于规则的系统的精确性与语言模型评估的灵活性相结合。
- rule-base reward : math、code、logical reasoning
- model-reward : upon the DeepSeek-V3
Group Relative Policy Optimization(GRPO)
GRPO 的新颖之处在于它能够 “直接优化以纠正偏好”。这意味着将模型与所需输出对齐的途径更直接、更高效,这与 PPO 等传统强化学习算法形成鲜明对比。下面通过其三个主要组件来分解 GRPO 的工作原理。
1. Group Formation: Creating Multiple Solutions
GRPO 的第一步非常直观 - 它类似于学生通过尝试多种方法解决难题的方式。当给出提示时,它会创建多次尝试来解决同一问题(通常为 4、8 或 16 次不同的尝试)。
2. Preference Learning: Understanding What Makes a Good Solution
这就是 GRPO 最具特色的地方,与其他需要单独奖励模型来预测解决方案可能有多好的 RLHF 方法不同,GRPO 可以使用任何函数或模型来评估解决方案的质量。例如,我们可以使用 length 函数来奖励较短的响应,或使用数学求解器来奖励准确的数学解决方案。
GRPO 不仅给出绝对分数,还对每组内的奖励进行标准化。它使用一个简单但有效的公式来估计群体相对优势:
Advantage = (reward - mean(group_rewards)) / std(group_rewards)
3. Optimization: Learning from Experience
最后一步是 GRPO 教模型根据它从评估一组解决方案中学到的知识进行改进。这种方法被证明比传统方法更稳定,因为:
- 它着眼于多个解决方案,而不是一次只比较两个
- 基于组的规范化有助于防止奖励扩展出现问题
- KL 处罚就像一个安全网,确保模型在学习新事物时不会忘记它已经知道的东西
4. GRPO Algorithm in Pseudocode
Input:
- initial_policy: Starting model to be trained
- reward_function: Function that evaluates outputs
- training_prompts: Set of training examples
- group_size: Number of outputs per prompt (typically 4-16)
Algorithm GRPO:
1. For each training iteration:
a. Set reference_policy = initial_policy (snapshot current policy)
b. For each prompt in batch:
i. Generate group_size different outputs using initial_policy
ii. Compute rewards for each output using reward_function
iii. Normalize rewards within group:
normalized_advantage = (reward - mean(rewards)) / std(rewards)
iv. Update policy by maximizing the clipped ratio:
min(prob_ratio * normalized_advantage,
clip(prob_ratio, 1-epsilon, 1+epsilon) * normalized_advantage)
- kl_weight * KL(initial_policy || reference_policy)
where prob_ratio is current_prob / reference_prob
Output: Optimized policy model
Limitations and Challenges of GRPO
- 生成成本:与仅生成一个或两个完成的方法相比,为每个提示生成多个完成 (4-16) 会增加计算要求。
- 批量大小约束:需要一起处理完成组可能会限制有效的批量大小,从而增加训练过程的复杂性,并可能减慢训练速度。
- 奖励函数设计:训练的质量在很大程度上取决于精心设计的奖励函数。设计不佳的奖励可能会导致意外行为或针对错误目标的优化。
- 组大小权衡:选择最佳组大小涉及平衡解决方案的多样性与计算成本。样本太少可能无法提供足够的多样性,而样本太多会增加训练时间和资源需求。
- KL 背离调整:为 KL 背离惩罚找到合适的平衡需要仔细调整 - 太高会导致模型无法有效学习,太低并且可能会偏离其初始能力太远。