小红书 算法一面 十三

发布时间:2026/8/22 16:06:53
小红书 算法一面 十三 Deepseek r1中的训练方式有什么特别之处怎么做的thinkRLHF的流程是什么## 一、DeepSeek R1 训练方式的核心特色与具体实现DeepSeek R1 是 DeepSeek 团队推出的大模型其训练方式的核心创新是**将 MoE混合专家架构与 GRPO组相对策略优化深度结合**并对传统 RLHF 流程做了轻量化、高效化改造既保留了 MoE 模型的参数效率又解决了传统 RLHF 计算成本高、训练复杂的问题。### 1. 核心特别之处| 设计亮点 | 对比传统方案的优势 ||----------|--------------------|| **GRPO 替代传统 PPO** | 无需训练 Critic价值网络仅用单 Actor 网络计算开销降低 40%且通过“组相对奖励”提升样本利用率 || **MoE GRPO 协同优化** | 针对 MoE 专家负载不均衡问题将 GRPO 的分组采样与 MoE 负载均衡策略结合兼顾效率与均衡性 || **多阶段精细化对齐** | 拆分“预训练→SFT→GRPO 偏好对齐→安全对齐”每个阶段针对性优化避免单一阶段过度拟合 || **轻量化奖励模型设计** | 奖励模型仅聚焦核心任务推理、代码、中文且与 GRPO 的“组相对奖励”配合降低奖励模型的训练成本 |### 2. DeepSeek R1 训练的具体实现步骤#### 步骤 1MoE 基础模型预训练高效扩展参数- **核心目标**构建大参数量但低激活成本的 MoE 底座- **具体做法**1. 采用 16 个专家的 MoE 架构总参数量 67B激活参数仅 13B每个 token 激活 2 个专家2. 训练时引入 **EPLBExpert Placement Load Balancing** 技术实时监控专家负载对热门专家自动复制到多设备冷门专家动态调整学习率提高冷门专家学习率3. 预训练数据覆盖通用文本、代码、数学推理、中文语料按任务类型做“专家专属数据采样”让不同专家偏向学习不同领域避免功能同质化。#### 步骤 2指令微调SFTSupervised Fine-Tuning- **核心目标**让模型适配人类指令格式具备基础的指令遵循能力- **具体做法**1. 收集高质量指令数据覆盖对话、推理、代码、创作等按“难度分级”基础指令→复杂指令分批次训练2. 对 MoE 模型做“指令感知路由”让门控网络优先将特定指令如代码指令分配给对应领域专家3. 采用低学习率1e-5~5e-5、小批量batch size 适配 MoE 并行训练避免覆盖预训练的通用能力。#### 步骤 3GRPO 偏好对齐核心创新环节替代传统 PPO这是 DeepSeek R1 最核心的改进传统 RLHF 用 PPO 需训练 ActorCritic 双网络而 GRPO 仅用单网络完成偏好对齐1. **数据准备**收集人类偏好数据如“同一问题的多个回答标注最优/次优/差”并基于 MoE 专家领域划分做“分组”2. **分组采样**将每个问题的 k 个回答通常 k5~10分为一组保证组内回答覆盖不同质量、不同专家生成的结果3. **相对奖励计算**- 先用轻量化奖励模型给组内每个回答打绝对分如 0~10 分- 计算组内奖励均值 $\mu_r$每个回答的**相对优势** $\hat{A}_i r_i - \mu_r$消除绝对分数的尺度偏差聚焦“相对好坏”4. **策略优化**- 仅更新 Actor 网络MoE 策略网络目标是最大化组内相对优势- 约束策略更新幅度类似 PPO 的裁剪但无需 KL 散度惩罚避免模型生成风格突变- 训练时同步监控 MoE 专家负载若某专家生成的回答持续是“差回答”则调整该专家的学习率强制其优化。#### 步骤 4安全对齐与迭代- 加入安全指令数据如拒绝有害请求用 GRPO 做“安全偏好对齐”- 在线收集用户反馈持续迭代分组采样的数据集让模型适配真实场景的偏好。## 二、标准 RLHF 流程传统方案RLHF 是大模型从“能生成文本”到“生成人类偏好的高质量文本”的核心流程适用于 GPT-3、Llama 2 等经典模型完整流程分为 5 个阶段### 步骤 1训练基础预训练模型Base Model- 目标构建具备通用语言能力的底座模型通过海量无标注文本训练如书籍、网页、代码- 特点模型仅能“预测下一个词”但不理解人类指令偏好如生成的回答可能冗长、偏离主题。### 步骤 2收集人类偏好数据- 目标获取“人类认为好/坏”的标注数据指导模型对齐人类偏好- 具体做法1. 给定同一指令如“解释什么是 MoE 模型”让基础模型生成多个不同回答2. 人类标注员对这些回答排序如最优、次优、差或两两对比A 回答比 B 回答好3. 最终得到偏好数据集{(指令, 优回答, 差回答), ...}。### 步骤 3训练奖励模型RMReward Model- 目标将人类偏好转化为可计算的“奖励分数”让模型能量化判断回答好坏- 具体做法1. 以基础模型为底座在输出层增加一个线性层输出单个标量奖励值2. 用偏好数据集训练对于每组指令, 优回答y_w, 差回答y_l损失函数为 $\mathcal{L}_{RM} -\log\sigma(R(y_w|x) - R(y_l|x))$让优回答的奖励分数高于差回答3. 训练完成后奖励模型可对任意指令, 回答输出一个分数如 1~10 分分数越高表示越符合人类偏好。### 步骤 4强化学习微调RLFTReinforcement Learning Fine-Tuning- 目标用强化学习让模型学会生成高奖励分数的回答核心是 PPO 算法- 具体做法Actor-Critic 双网络1. **Actor 网络**基于基础模型改造负责生成回答策略网络2. **Critic 网络**基于奖励模型改造负责预测回答的“价值”未来累积奖励3. **PPO 优化**- Actor 生成回答奖励模型给出即时奖励- Critic 预测该回答的价值计算“优势值”即时奖励 未来价值 - 预测价值- 优化 Actor 网络最大化优势值但限制策略更新幅度如裁剪策略概率比避免模型崩溃- 同步更新 Critic 网络让其价值预测更准确。### 步骤 5评估与迭代- 用人工评估、自动指标如奖励分数、流畅度评估模型效果- 若某类问题回答质量差补充对应偏好数据重新训练奖励模型或继续 PPO 微调。### 传统 RLHF vs DeepSeek R1 的 RLHF 变体| 环节 | 传统 RLHF | DeepSeek R1 ||------|-----------|-------------|| 核心算法 | PPO双网络 | GRPO单网络 || 奖励使用 | 绝对奖励 价值模型预测 | 组内相对奖励无价值模型 || MoE 适配 | 无专门设计易负载不均 | 结合 EPLB 负载均衡分组采样匹配专家领域 || 计算成本 | 高双网络训练 | 低单网络轻量化奖励模型 |## 总结### 1. DeepSeek R1 训练的核心关键点- 核心创新是**GRPO 替代 PPO**简化 RLHF 流程降低计算成本- 深度融合 MoE 架构通过负载均衡EPLB和领域专属采样解决 MoE 专家坍缩问题- 多阶段精细化对齐从预训练到安全对齐逐步优化兼顾通用能力与偏好适配。### 2. RLHF 核心流程关键点- 本质是“人类偏好→奖励模型量化→强化学习优化”的闭环- 传统 RLHF 依赖 PPO 双网络成本高但稳定性好- DeepSeek R1 用 GRPO 简化了强化学习环节是针对大模型尤其 MoE 模型的轻量化优化版本。如果在训练 DPO 的过程中正例和负例的 loss 都在下降该如何解决在 DPO直接偏好优化训练中**正例偏好回答 $y_w$和负例非偏好回答 $y_l$的损失同时下降**是一种典型的**无效对齐现象**——这说明模型虽然在拟合数据但**没有拉开正负例的概率差距**最终无法学到人类偏好的“相对优劣”。要解决这个问题我们需要先明确 DPO 的核心目标和损失本质再从**损失计算、超参数、数据质量、训练策略**四个维度定位并修复问题。## 一、先明确DPO 中“正负例 loss 都下降”的本质DPO 的核心损失函数是**对比损失**目标是让正例的生成概率**显著高于**负例公式如下$$\mathcal{L}_{\text{DPO}} -\mathbb{E}_{(x,y_w,y_l)\sim\mathcal{D}}\left[\log\sigma\left(\beta\left(\log\pi_\theta(y_w|x)-\log\pi_\theta(y_l|x)\right)\right)\right]$$其中- $\sigma(\cdot)$ 是 Sigmoid 函数仅当 $\log\pi(y_w|x) - \log\pi(y_l|x) 0$ 时损失才会显著下降- $\beta$ 是 KL 惩罚系数控制模型与参考模型的偏离程度。**现象本质**你观察到的“正负例 loss 都下降”大概率是以下两种情况之一1. **误将“正负例的似然 loss”当作 DPO 对比损失**若单独计算 $\log\pi(y_w|x)$ 和 $\log\pi(y_l|x)$ 的绝对值 loss两者同时下降意味着模型对正负例的拟合都变好但**两者的概率差没有扩大**甚至缩小2. **DPO 对比损失整体下降但正负例的概率差未提升**模型在 KL 惩罚的约束下既拟合了正例也拟合了负例没有学会“偏好正例、排斥负例”。无论哪种情况最终都会导致模型对齐失效——生成的回答无法区分优劣甚至负例的生成概率接近正例。## 二、核心解决思路强化正负例的概率差### 1. 检查损失计算确保用的是**对比损失**而非单独似然损失这是最容易踩的坑——很多人在训练时会额外监控正负例的似然 loss$\log\pi(y_w|x)$ 和 $\log\pi(y_l|x)$但这两个值的下降**不代表 DPO 训练有效**。**正确做法**- **只关注 DPO 对比损失**和**正负例概率差指标**$\Delta \log\pi(y_w|x) - \log\pi(y_l|x)$- 若 $\Delta$ 随训练步数**持续上升**说明训练有效若 $\Delta$ 停滞或下降即使对比损失下降也是无效训练。- 禁止单独优化正负例的似然 lossDPO 的核心是“相对优劣”而非“绝对拟合”。### 2. 调整核心超参数 $\beta$平衡对齐强度与 KL 约束$\beta$ 是 DPO 最敏感的超参数直接决定模型对正负例的区分能力也是导致正负例 loss 同步下降的最常见原因。| $\beta$ 取值问题 | 现象 | 解决方法 ||------------------|------|----------|| $\beta$ 过大过度 KL 惩罚 | 模型不敢偏离参考模型对正负例“一视同仁”两者概率差无法拉开loss 同步下降 | 降低 $\beta$从初始值如 0.1逐步减小到 0.01~0.05观察 $\Delta$ 是否上升br**注意**$\beta$ 太小会导致模型偏离参考模型过远出现生成不稳定 || $\beta$ 过小无 KL 约束 | 模型过度拟合正负例的表面特征两者似然 loss 都下降但正负例的语义差异被忽略 | 适度增大 $\beta$给模型加约束迫使其学习“偏好差异”而非“表面拟合” |**调参技巧**- 训练初期用较大 $\beta$0.1让模型先贴近参考模型- 训练中期逐步减小 $\beta$释放模型的对齐能力- 监控**模型与参考模型的 KL 散度**保持 KL 在 0.05~0.2 之间KL 太小说明 $\beta$ 太大KL 太大说明 $\beta$ 太小。### 3. 优化偏好数据质量增强正负例的**区分度**正负例 loss 同步下降的另一个核心原因是**数据质量差**——正负例的差异太小模型无法学到偏好。**具体问题与解决方法**| 数据问题 | 表现 | 修复方案 ||----------|------|----------|| 正负例区分度低 | 正例不够“好”负例不够“差”如正例只是比负例多一个细节 | **筛选高质量偏好对**保留“正例明显优于负例”的样本删除模糊样本br**构造强负例**将负例改为错误回答、冗余回答、偏离主题的回答放大与正例的差异 || 正负例分布同质化 | 正负例的语义、结构高度相似模型无法区分 | **数据增强**对正例做同义改写对负例做反向改写如把正确推理改成错误推理br**按任务类型分组**确保每组偏好对的正负例差异聚焦于任务核心如代码任务聚焦“正确性”对话任务聚焦“流畅性” || 偏好标注错误 | 部分样本的正负例标反模型学不到正确偏好 | **人工复检**随机抽查 10%~20% 的样本修正标注错误br**加入硬负例**在数据集中混入少量“明显错误”的负例帮助模型建立偏好边界 |### 4. 调整训练策略避免模型“偷懒”拟合所有样本如果超参数和数据都没问题那就是训练策略让模型选择了“低成本拟合所有样本”的路径需要通过以下手段引导模型区分正负例。#### 1 增大学习率提升模型的更新幅度DPO 训练的学习率通常比 SFT 小如 1e-6~5e-6若学习率太小模型更新缓慢只能做到“弱区分”导致正负例 loss 同步下降。**调优建议**- 初始学习率设为 $3e-6$用余弦退火调度器训练后期逐步衰减- 若模型收敛过快适当增大学习率如到 $5e-6$迫使模型做出更大的策略调整。#### 2 加入**偏好增强正则化**在 DPO 损失中加入额外约束强制模型拉大正负例的概率差$$\mathcal{L}_{\text{total}} \mathcal{L}_{\text{DPO}} \lambda \cdot \max(0, \alpha - (\log\pi(y_w|x)-\log\pi(y_l|x)))$$其中- $\alpha$ 是目标概率差如 1.0若实际差值小于 $\alpha$则施加惩罚- $\lambda$ 是惩罚系数如 0.1控制正则化强度。这个正则化的作用是**如果模型没有达到预设的正负例概率差就会被惩罚**从而避免模型“偷懒”。#### 3 冻结参考模型确保其稳定性DPO 的参考模型通常是 SFT 后的模型必须**全程冻结**若参考模型被意外更新会导致 KL 惩罚的基准漂移模型无法稳定学习偏好。**检查点**- 确认参考模型的参数 requires_gradFalse- 参考模型的选择优先用**与当前模型同架构的 SFT 模型**避免跨架构参考导致的 KL 计算失真。#### 4 分批训练先易后难将偏好数据按“区分度”分为**简单样本**正负例差异大和**困难样本**正负例差异小1. 先用简单样本训练 1~2 个 epoch让模型快速学到基础偏好2. 再加入困难样本训练此时模型已经具备区分能力不会出现正负例 loss 同步下降的问题。## 三、关键监控指标判断训练是否真正有效解决问题的前提是**精准诊断**建议在训练时监控以下 3 个核心指标而不是只看 loss1. **正负例概率差 $\Delta \log\pi(y_w|x) - \log\pi(y_l|x)$**这是 DPO 训练的“黄金指标”需持续上升2. **模型与参考模型的 KL 散度**保持在 0.05~0.2 之间确保模型既不偏离参考模型过远也不过度保守3. **人工评估通过率**随机抽取生成结果人工判断正例的生成比例是否高于负例这是最终的对齐效果验证。## 四、总结解决流程速查表1. **检查损失计算**确认监控的是 DPO 对比损失而非单独的正负例似然 loss2. **调整 $\beta$ 参数**降低 $\beta$ 以释放对齐能力同时监控 KL 散度3. **清洗偏好数据**增强正负例区分度删除模糊样本修正标注错误4. **优化训练策略**增大学习率、加入偏好正则化、冻结参考模型、先易后难分批训练5. **监控核心指标**聚焦 $\Delta$ 和 KL 散度而非单一 loss 值。

相关新闻