ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从零实现DPO:ai-engineering-from-scratch直接偏好优化的数学与代码

从零实现DPO:ai-engineering-from-scratch直接偏好优化的数学与代码 从零实现DPOai-engineering-from-scratch直接偏好优化的数学与代码【免费下载链接】ai-engineering-from-scratchLearn it. Build it. Ship it for others.项目地址: https://gitcode.com/GitHub_Trending/ai/ai-engineering-from-scratch**DPO直接偏好优化**是让大语言模型对齐人类偏好的主流方法之一。在开源课程 ai-engineering-from-scratch 中你可以用约 90 分钟从 3 步数学推导出发亲手写出 DPO 的损失函数与完整训练循环——不需要奖励模型不需要 PPO只要一个标准的监督学习循环。为什么 DPO 值得你花时间学传统 RLHF 流程需要训练 3 个模型SFT 模型、奖励模型、策略模型还要调 KL 系数、裁剪比例等一大堆超参数PPO 训练本身也以不稳定著称。而 2023 年斯坦福团队提出的 DPO 给出了一个关键洞察你的语言模型本身就是一个隐藏的奖励模型。DPO 把这个复杂流程压缩成一步监督学习维度RLHF (PPO)DPO需要训练的模型3 个1 个训练循环3 个1 个SFT 之后显存占用3-4 个模型同时驻留2 个模型当前 参考稳定性对超参数敏感接近 SFT 级别的稳定这也是 Zephyr-7B 等模型能在多个基准上追平完整 RLHF 的原因Meta 的 Llama 3 对齐管线同样使用了 DPO。DPO 损失函数的 3 步推导数学核心整篇 DPO 论文的核心其实只有三行推导这也是课程 08-dpo/docs/en.md 中最值得反复读的部分。第 1 步RLHF 目标的最优策略有闭式解RLHF 优化的是最大化奖励 − β·KL 散度。数学上可以证明对于任意奖励函数 R最优策略为π*(y|x) π_ref(y|x) · exp(R(x,y)/β) / Z(x)第 2 步反解出奖励函数把上式变形奖励可以完全用模型自身的概率表示R(x,y) β · log( π*(y|x) / π_ref(y|x) ) β · log Z(x)奖励不需要单独训练——它隐含在当前模型与参考模型的概率比值里。第 3 步代入 Bradley-Terry 偏好模型人类偏好满足P(y_w y_l|x) sigmoid(R(x,y_w) − R(x,y_l))。由于两个回答基于同一 promptlog Z(x)项相消得到 DPO 损失L_DPO −log sigmoid( β · [ log π(y_w|x)/π_ref(y_w|x) − log π(y_l|x)/π_ref(y_l|x) ] )课程中的实现4 次前向传播搞定一个样本课程的完整实现只有约 500 行纯 Pythonnumpy核心是一个dpo_loss函数preferred_ratio policy_logprob_preferred - ref_logprob_preferred rejected_ratio policy_logprob_rejected - ref_logprob_rejected logit beta * (preferred_ratio - rejected_ratio) loss -log(sigmoid(logit) 1e-8)训练循环对每个偏好样本做4 次前向传播当前模型算偏好回答和拒绝回答的序列对数概率冻结的参考模型再算一遍四个数代入损失函数反向传播更新。没有生成、没有价值估计、没有裁剪——这就是 DPO 比 RLHF 稳定的根本原因。课程文档与推导phases/10-llms-from-scratch/08-dpo/docs/en.md完整训练代码phases/10-llms-from-scratch/08-dpo/code/main.py随堂测验含答案解析phases/10-llms-from-scratch/08-dpo/quiz.json前置课程 RLHFphases/10-llms-from-scratch/07-rlhf/Beta 参数DPO 唯一的性格开关beta对应 RLHF 里的 KL 系数控制模型能偏离参考模型多远小 beta0.01允许大幅偏离学得快但可能学崩大 beta1.0紧紧贴着参考模型稳定但学得慢实用区间0.1 ~ 0.3绝大多数场景直接从这里起步课程还内置了一个 beta 敏感度实验beta_sensitivity_analysis用 0.01 / 0.1 / 0.3 / 1.0 四组值对比损失、奖励间隔reward margin与偏好准确率直观展示这条权衡曲线。进阶实战Capstone 40 的 PyTorch 版本除了 numpy 教学版项目还在毕业项目里提供了一个更接近生产的 PyTorch 实现包含字节级 tokenizer、TinyGPT、参考模型不变性测试梯度符号、损失数学均有单测锁定Capstone 文档含梯度符号分析phases/19-capstone-projects/40-dpo-from-scratch/docs/en.mdPyTorch 实现phases/19-capstone-projects/40-dpo-from-scratch/code/main.py测试用例phases/19-capstone-projects/40-dpo-from-scratch/code/tests/test_main.pyDPO 之后KTO / ORPO / SimPO 简史DPO 还催生了一族更简化的对齐方法趋势是每一步都在消除一块复杂度方法年份显存中模型数需要配对数据需要参考模型RLHF20223-4是是DPO20232是是KTO20242否单条好坏标签是ORPO20241是否SimPO20241是否KTO不需要成对比较只标注这条回答好不好数据收集成本大降ORPO把 SFT 和对齐合并成一个训练循环SimPO彻底去掉参考模型用长度归一化的平均对数概率作为隐式奖励如何开始你的 DPO 学习路径先修 RLHFPhase 10 第 07 课理解奖励模型 PPO 的经典流程精读 DPO 课第 08 课推导损失函数 跑通 numpy 实现约 90 分钟动手 Capstone 40用 PyTorch 重写并写测试验证数学正确性做练习课程留了 5 道进阶练习包括 KTO 实现、长度归一化 DPO、ORPO 组合损失等整门课程 416 节课、20 个阶段全部代码开放遵循 MIT 协议。从数学推导到可运行代码一气呵成这正是Learn it. Build it. Ship it. 的教学理念。小结DPO 用 1 个损失函数替代了奖励模型 PPO 整套流程核心公式只依赖 4 个序列对数概率本质是监督学习参考模型是安全网beta 是控制偏离程度的温度旋钮小数据、有限算力、快速迭代场景DPO 通常是首选多目标对齐、在线迭代场景RLHF 仍有优势【免费下载链接】ai-engineering-from-scratchLearn it. Build it. Ship it for others.项目地址: https://gitcode.com/GitHub_Trending/ai/ai-engineering-from-scratch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表