news 2026/6/9 5:34:49

DPO微调

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DPO微调

🍋🍋AI学习🍋🍋

🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞


一、DPO 的核心思想

“语言模型本身就可以作为隐式的奖励模型,无需显式训练 RM。”

更具体地说:

  • 给定一个参考策略(通常是 SFT 模型),最优策略与参考策略的概率比直接反映了人类偏好的“隐式奖励”。
  • 因此,我们可以直接用偏好数据优化策略模型,而不需要中间的奖励模型或强化学习。

这使得 DPO 成为一种端到端、稳定、高效、易于实现的偏好对齐方法。


二、数学原理

1. RLHF 的目标回顾

在 RLHF 中,我们希望找到策略 π∗,使其最大化期望奖励:

其中 r(x,y) 是奖励模型给出的标量分数。

但直接优化这个目标会导致语言崩坏,因此引入 KL 正则项,得到正则化目标

其中 π ref​ 是参考策略(如 SFT 模型),β>0 是温度系数。

2. 关键洞察:最优策略的解析形式

对上述目标求导并令梯度为零,可得最优策略的闭式解

其中 Z(x) 是归一化常数。

移项后得到:

注意:logZ(x) 对同一个 prompt x 是常数,因此在比较两个回答 yw​ 和 yl​ 时会被抵消!

于是有:

3. 构造 DPO 损失函数

人类偏好告诉我们:yw​ 比 yl​ 更好 ⇒ 希望 r(x,yw​)>r(x,yl​)

因此,我们可以直接最大化上述差值。采用 Bradley-Terry 偏好模型,定义损失为:

其中:

  • πθ​:待优化的策略模型(可与 πref​ 初始化相同)
  • π ref​:参考模型(冻结,不更新参数
  • σ:sigmoid 函数
  • β:控制优化强度的超参数

这就是 DPO 的全部!没有 RM,没有 PPO,只有一次标准的监督训练。


三、DPO 训练流程(Step-by-Step)

输入准备

你需要一个偏好数据集D={(x,yw​,yl)}​,其中:

  • x:用户指令(prompt)
  • yw​:被人类选中的“更好”回答
  • yl​:被拒绝的“较差”回答

数据来源:

  • 人工标注(如 Anthropic HH、OpenAI Summarize)
  • 合成数据(用 GPT-4 生成对比对)
  • 在线收集(A/B 测试日志)

模型准备

  • 参考模型 πref​:通常是一个经过 SFT 的模型(如 Alpaca、Qwen-Chat)。训练过程中冻结
  • 策略模型 πθ​:可初始化为 πref​,然后微调。

训练过程

对每个 batch:

  1. 将 (x,yw​) 和 (x,yl​) 分别输入 πθ​ 和 πref​
  2. 计算 log-prob:
    • logπθ​(y∣x)=∑t=1T​logπθ​(yt​∣x,y<t​)
    • 同理计算 logπref​(y∣x)
  3. 计算 logits 差值:

    Δ=β([logπθ​(yw​)−logπref​(yw​)]−[logπθ​(yl​)−logπref​(yl​)])

  4. 损失:L=−logσ(Δ)
  5. 反向传播,只更新 πθ​

注意:log-prob 需要对整个序列计算(通常忽略 prompt 部分,只算 response 的 token)


四、关键实现细节

1. 如何计算 logπ(y∣x)?

  • 使用模型的token-level logits
  • 对 response 部分(不含 prompt)求和:

2. 是否需要 mask prompt?

必须 mask!否则模型会优化 prompt 的 likelihood,导致过拟合。

3. 参考模型是否必须不同?

  • 通常 πθ​ 和 πref​共享初始权重,但训练中 πref​ 冻结。
  • 也可以用更强的模型作 πref​(如用 GPT-4 生成参考 log-prob),但需离线计算。

4. 支持 PEFT 吗?

完全支持!DPO + LoRA 是 2025 年最主流的轻量对齐方案。


五、超参数调优指南

超参推荐值说明
β0.1 ~ 0.5核心参数!太小学不到偏好,太大破坏语言质量。常用 0.3
Learning Rate1e-6 ~ 5e-6比 SFT 更小,因 DPO 更敏感
Batch Size越大越好偏好损失对 batch noise 敏感,建议 ≥ 32(可通过梯度累积)
Max Length与 SFT 一致通常 1024~2048 tokens
Weight Decay0.01防止过拟合
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 19:42:27

告别命令行:Applite让Mac软件管理变得简单直观

告别命令行&#xff1a;Applite让Mac软件管理变得简单直观 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 还在为复杂的Homebrew命令而头疼吗&#xff1f;Applite这款免费开源…

作者头像 李华
网站建设 2026/6/9 2:09:06

阿里云渠道商:轻量服务器远程协作性能优化指南

一、引言 随着远程办公常态化&#xff0c;轻量应用服务器成为中小团队首选。但许多用户反馈阿里云轻量服务器&#xff08;如 2 核 2G 配置&#xff09;在远程协作时出现卡顿、延迟问题。文章提供 3 步优化方案&#xff0c;助您提升远程协作流畅度。二、优化方案第一步&#xff…

作者头像 李华
网站建设 2026/6/9 1:48:58

采集到的数据计算出的幅度最大值分析

简 介&#xff1a; 本文分析了12bit ADC采集的256个正弦信号数据&#xff0c;通过相关运算计算信号幅值。结果显示&#xff1a;无加窗处理时最大幅值为1024&#xff1b;施加三角窗或汉宁窗后幅值降至511左右。当信号饱和失真成方波时&#xff0c;基波分量幅值可达652.3。实验表…

作者头像 李华
网站建设 2026/6/9 1:39:44

.mk .bp 文件到底有什么区别?为什么?

Android.bp 也可以用来编译的模块的吧,但是device.mk就是专门把产物打包到img? 1. Android.bp = 商品的生产配方 (Recipe) 作用:它告诉编译系统**“如何制造”**这个模块。 内容:源码在哪里?依赖哪些库?编译成可执行文件还是动态库?叫什么名字? 结果:只要有 Android.b…

作者头像 李华
网站建设 2026/6/9 16:08:45

今天我们继续学习kubernetes内容组件:优预选策略

组件&#xff1a;优预选策略1. 预选策略 (Predicate)预选策略是一组硬性条件&#xff0c;用于初步筛选节点。如果任何一个预选策略检查失败&#xff0c;该节点就会被立即排除&#xff0c;没有资格运行当前 Pod。这个过程是并行的。核心算法/策略包括&#xff08;但不限于&#…

作者头像 李华