07-强化学习对齐RLHF 阶段 7强化学习对齐RLHF / RLAIF教学目标理解强化学习在 LLM 对齐中的作用和必要性掌握 RL 统一框架理解 DPO、PPO、GRPO、CISPO 的本质区别深入理解每个算法的损失函数和训练流程了解 Agentic RL多轮 Tool-Use 强化学习的设计能够运行至少一种 RL 对齐训练并分析效果课时安排理论讲解2.5 课时RL 框架 各算法原理 Agentic RL训练实验1.5 课时运行 DPO/GRPO 效果对比7.1 为什么需要强化学习对齐7.1.1 SFT 的局限性SFT 后的模型虽然学会了回答问题但存在以下问题问题示例回答可能不准确虚假信息、事实错误可能产生有害内容偏见、歧视、危险建议可能过于冗长不必要的重复和啰嗦可能不一致同一问题不同次回答差异大可能不符合人类偏好虽然语法正确但不是用户想要的7.1.2 RLHF/RLAIF 的目标SFT 后: 模型能回答问题但质量参差不齐 RLHF/RLAIF 后: 模型学会区分好坏倾向于生成高质量回答 核心变化 从模仿训练数据中的回答 → 到优化人类偏好的奖励信号7.1.3 RLHF vs RLAIF方式奖励来源代表模型MiniMind 使用RLHF人类标注者打分InstructGPT, ChatGPT❌RLAIFAI 模型自动打分MiniMind✅MiniMind 使用RLAIFAI 反馈的强化学习因为无需人类标注成本更低可重复、可扩展适合教学场景7.2 RL 统一框架7.2.1 核心公式MiniMind 将所有偏好优化PO算法统一为一个框架J_PO E[ f(r_t) · g(A_t) - h(KL_t) ]其中三个组件策略项f(r_t)基于奖励的函数控制策略更新方向优势项g(A_t)基于优势的函数控制更新幅度和方向正则项h(KL_t)KL 散度惩罚防止策略偏离太远7.2.2 四种算法的对比算法策略项 f®优势项 g(A)正则项 h(KL)训练模型数训练复杂度DPOlog π_w / π_l无显式优势项隐含在 β 中1最低PPOmin(r, clip®)R - V(s)β·E[KL]2Actor Critic最高GRPOmin(r, clip®)(R-μ)/σ 组内归一化β·KL_t1中等CISPOclip(r,0,ε)·A·log π(R-μ)/σβ·KL_t1中等7.2.3 算法选择指南资源充足 追求效果 → PPO 资源有限 追求效率 → DPO 最新主流 效果平衡 → GRPO / CISPO 简单快速 原型验证 → DPO7.3 DPODirect Preference Optimization7.3.1 核心思想DPO 绕过了传统的训练奖励模型 → 强化学习优化两阶段流程直接用偏好对数据进行优化。传统 RLHF: 偏好数据 → 训练奖励模型 → PPO 优化 DPO: 偏好数据 → 直接优化策略7.3.2 DPO 数据格式{chosen:[{role:user,content:请解释什么是机器学习},{role:assistant,content:机器学习是人工智能的一个分支它使计算机能够从数据中学习模式和规律而不需要被明确编程。常见的方法包括监督学习、无监督学习和强化学习。}],rejected:[{role:user,content:请解释什么是机器学习},{role:assistant,content:机器学习就是一种学习的方法。它让机器自己学习。具体我也不知道怎么说。}]}7.3.3 DPO 损失函数L_DPO -E[ log σ(β · (log π_θ(y_w|x) - log π_ref(y_w|x) - log π_θ(y_l|x) log π_ref(y_l|x))) ] 简化理解: L_DPO -E[ log σ(β · (logit(好回答) - logit(坏回答)) ) ] 目标: 最大化好回答的对数概率最小化坏回答的对数概率 β 控制对参考策略的偏离程度7.3.4 DPO 训练cdminimind/trainer python train_dpo.py输出out/dpo_768.pth7.4 PPOProximal Policy Optimization7.4.1 核心思想PPO 是经典的强化学习算法通过奖励模型在 MiniMind 中由 AI 扮演给模型输出打分然后优化策略最大化奖励。7.4.2 PPO 训练流程┌──────────────────────────────────────────────────┐ │ PPO 训练循环 │ │ │ │ 1. 从当前策略生成回答 y │ │ π_θ(y|x) → y │ │ │ │ 2. 使用奖励模型/AI 评分 │ │ R(y, x) → r │ │ │ │ 3. 使用 Critic 网络估计价值 │ │ V(x) → v │ │ │ │ 4. 计算优势函数 │ │ A r - v │ │ │ │ 5. 计算 PPO Clip 损失 │ │ r_t π_new(y|x) / π_old(y|x) │ │ L -min(r_t·A, clip(r_t, 1-ε, 1ε)·A) β·KL│ │ │ │ 6. 更新 Actor 和 Critic 网络 │ └──────────────────────────────────────────────────┘7.4.3 PPO 代码核心# 简化的 PPO 损失计算defppo_loss(new_log_probs,old_log_probs,advantages,beta0.1,epsilon0.2):# 重要性采样比率ratiotorch.exp(new_log_probs-old_log_probs)# PPO Clip 损失surr1ratio*advantages surr2torch.clamp(ratio,1-epsilon,1epsilon)*advantages policy_loss-torch.min(surr1,surr2).mean()# KL 散度惩罚kl_div(new_log_probs-old_log_probs).mean()total_losspolicy_lossbeta*kl_divreturntotal_loss7.4.4 PPO 训练cdminimind/trainer python train_ppo.py输出out/ppo_actor_768.pthActor 模型out/ppo_critic_768.pthCritic 模型7.5 GRPO / CISPO7.5.1 GRPOGroup Relative Policy OptimizationGRPO 是 DeepSeek 提出的优化算法核心创新是组内归一化替代 Critic 网络PPO: 需要 Critic 网络 V(x) 来估计基线 GRPO: 用同组采样的平均奖励作为基线 组内归一化优势: A_i (R_i - mean(R_group)) / std(R_group) 其中: R_group 同一个 prompt 采样 G 个回答的奖励集合 R_i 第 i 个回答的奖励优势不需要训练 Critic 网络节省一半模型组内归一化自动适应不同难度的 prompt7.5.2 CISPOConervative ISPOCISPO 是 GRPO 的保守变体通过额外的裁剪操作进一步稳定训练CISPO 的策略项: clip(ratio, 0, ε) · A · log π_θ(y|x) 与 GRPO 的区别: GRPO: min(ratio, clip(ratio, 1-ε, 1ε)) · A CISPO: clip(ratio, 0, ε) · A · log π_θ(y|x)7.5.3 GRPO / CISPO 训练cdminimind/trainer# GRPO 训练python train_grpo.py--loss_typegrpo# CISPO 训练修改 loss_type 即可python train_grpo.py--loss_typecispo输出out/grpo_768.pth7.5.4 GRPO 与 DPO/PPO 的对比维度DPOPPOGRPO/CISPO训练模型数121需要 Critic否是否组内归一化需要偏好对是否需要奖励模型否需要奖励函数训练稳定性高中中-高效果好好数据充足时好DeepSeek 验证MiniMind 推荐✅ 快速验证✅ 效果上限高✅ 最新主流7.6 Agentic RL多轮 Tool-Use 强化学习7.6.1 什么是 Agentic RLAgentic RL 将强化学习扩展到多轮工具调用场景训练模型学会何时使用工具选择哪个工具如何组织工具调用序列如何整合工具结果给出最终回答7.6.2 训练流程┌──────────────────────────────────────────────┐ │ Agentic RL 训练 │ │ │ │ 1. 给定一个需要工具的问题 │ │ 计算 (123 456) × 789 / 3 │ │ │ │ 2. 模型生成多轮动作 │ │ Round 1: 调用计算器 → 123456579 │ │ Round 2: 调用计算器 → 579×789456,831 │ │ Round 3: 调用计算器 → 456831/3152,277 │ │ Round 4: 给出最终回答 → 结果是 152,277 │ │ │ │ 3. 计算综合奖励 │ │ R R_answer R_tool R_format - R_unfin │ │ │ │ 4. 使用 CISPO 优化策略 │ └──────────────────────────────────────────────┘7.6.3 奖励函数设计R(τ) R_answer R_tool R_format R_rm - R_unfinished 其中: R_answer : 最终答案是否正确0 或 1 R_tool : 工具调用是否正确0 或 1 R_format : 输出格式是否符合要求0 或 1 R_rm : 推理过程中的推理步骤质量 R_unfinished: 未完成时惩罚0 或 -17.6.4 Agentic RL 训练cdminimind/trainer# 基本训练python train_agent.py# 使用 SGLang 作为 rollout 引擎更快python train_agent.py--rollout_enginesglang--sglang_base_urlhttp://localhost:8998输出out/agent_768.pth7.6.5 效果对比MiniMind 官方评测数学 Tool Use 任务20 题模型正确率minimind-3 full_sft12/20 60%minimind-3 agent (CISPO)17/20 85%Agentic RL 将数学工具调用的正确率从 60% 提升到 85%提升了25 个百分点。7.7 数据集7.7.1 RLAIF 数据集文件大小用途rlaif.jsonl24MBPPO/GRPO/CISPO 训练dpo.jsonl53MBDPO 偏好对齐训练agent_rl.jsonl86MBAgentic RL 训练agent_rl_math.jsonl18MB数学推理 Agent 训练7.7.2 下载modelscope download--modelgongjy/minimind_dataset\--includedpo.jsonl\--includerlaif.jsonl\--includeagent_rl.jsonl\--local_dir./dataset实践任务任务 7.1DPO 训练必做下载 DPO 数据集运行 DPO 训练对比 DPO 前SFT和 DPO 后的回答质量cdtrainerpython train_dpo.pycd..python eval_llm.py--load_from./out/dpo_768.pth测试问题建议“用三步解释什么是深度学习”“Python 的列表和元组有什么区别”“写一个判断质数的函数”任务 7.2RL 算法对比选做运行多种 RL 算法对比效果# DPOpython train_dpo.py# GRPOpython train_grpo.py--loss_typegrpo# CISPOpython train_grpo.py--loss_typecispo算法训练 Loss训练时间回答质量主观评分 1-5DPOGRPOCISPO任务 7.3DPO 数据分析选做# 分析 DPO 偏好对数据importjson chosen_lengths[]rejected_lengths[]withopen(dataset/dpo.jsonl,r,encodingutf-8)asf:forlineinf:datajson.loads(line)chosen_text .join(msg[content]formsgindata[chosen])rejected_text .join(msg[content]formsgindata[rejected])chosen_lengths.append(len(chosen_text))rejected_lengths.append(len(rejected_text))print(fChosen 平均长度:{sum(chosen_lengths)/len(chosen_lengths):.0f}字符)print(fRejected 平均长度:{sum(rejected_lengths)/len(rejected_lengths):.0f}字符)print(f数据总量:{len(chosen_lengths)}对)# 分析好回答和坏回答的长度差异# 通常好回答更长、更完整任务 7.4Agentic RL 测试选做# 运行 Agentic RL 训练需要 SGLang 后端python train_agent.py--rollout_enginesglang--sglang_base_urlhttp://localhost:8998# 测试工具调用能力python eval_toolcall.py--weightagent挑战任务选做设计自己的奖励函数修改 Agentic RL 的奖励计算逻辑对比不同 RL 算法在特定任务如数学推理、代码生成上的表现差异下一阶段预告在阶段 8 中我们将学习模型部署与应用。将训练好的 MiniMind 模型部署为 OpenAI 兼容的 API 服务集成到 vLLM、ollama 等推理框架并接入 FastGPT、Dify 等 RAG 应用。