RLAIF(0)—— DPO(Direct Preference Optimization) 原理与代码解读

之前的系列文章:介绍了 RLHF 里用到 Reward Model、PPO 算法。
但是这种传统的 RLHF 算法存在以下问题:流程复杂,需要多个中间模型对超参数很敏感,导致模型训练的结果不稳定。
斯坦福大学提出了 DPO 算法,尝试解决上面的问题,DPO 算法的思想也被后面 RLAIF(AI反馈强化学习)的算法借鉴,这个系列会从 DPO 开始,介绍 SPIN、self-reward model 算法。
而 DPO 本身是一种不需要强化学习的算法,简化了整个 RLHF 流程,训练起来会更简单。

原理


传统的 RLHF 步骤一般是:训练一个 reward model 对 prompt 的 response 进行打分,训练完之后借助 PPO 算法,使得 SFT 的模型和人类偏好对齐,这个过程我们需要初始化四个基本结构一致的 transformer 模型。DPO 算法,提供了一种更为简单的 loss function,而这个就是 DPO 的核心思想:针对奖励函数的 loss 函数被转换成针对策略的 loss 函数,而针对策略的 loss 函数又暗含对奖励的表示,即人类偏好的回答会暗含一个更高的奖励。

L D P O ( π θ ; π r e f ) = − E ( x , y w , y l ) ∼ D [ log ⁡ σ ( β log ⁡ π θ ( y w ∣ x ) π r e f ( y w ∣ x ) − β log ⁡ π θ ( y l ∣ x ) π r e f ( y l ∣ x ) ) ] \mathcal{L}_{\mathrm{DPO}}\left(\pi_\theta ; \pi_{\mathrm{ref}}\right)=-\mathbb{E}_{\left(x, y_w, y_l\right) \sim \mathcal{D}}\left[\log \sigma\left(\beta \log \frac{\pi_\theta\left(y_w \mid x\right)}{\pi_{\mathrm{ref}}\left(y_w \mid x\right)}-\beta \log \frac{\pi_\theta\left(y_l \mid x\right)}{\pi_{\mathrm{ref}}\left(y_l \mid x\right)}\right)\right] LDPO(πθ;πref)=E(x,yw,yl)D[logσ(βlogπref(ywx)πθ(yw

### DPO指南教程 #### 什么是DPO? 直接偏好优化(Direct Preference Optimization, DPO)是一种旨在克服传统基于近端策略优化(Proximal Policy Optimization, PPO)方法局限性的新框架。相比传统的RLHFDPO减少了对复杂超参数调整的需求,并降低了计算成本,使得大型语言模型能够更高效地人类偏好保持一致[^1]。 #### 如何实现DPO? 为了实施DPO,在实践中可以遵循以下几个方面: - **数据准备**:收集并整理一系列由人工标注者评分过的对话片段作为训练集的一部分。这些片段应当覆盖尽可能广泛的场景以便让模型学会处理各种类型的输入。 - **构建对比样本**:对于每一个给定的上下文环境,利用预训练的语言模型生成多个不同的回复选项;随后依据先前获得的人类评价分数选出一对正负实例用于后续的学习过程[^3]。 - **定义损失函数**:设计专门针对偏好排序的任务目标——即最小化预测结果同实际标签之间的差异程度。具体来说就是当模型倾向于给出高分给那些被认为更好的回答时,则认为其表现良好。 ```python import torch.nn.functional as F def dpo_loss(logits_pos, logits_neg): """Compute the loss for direct preference optimization.""" diff = logits_pos - logits_neg return F.softplus(-diff).mean() ``` - **迭代更新权重**:采用梯度下降法不断修正神经网络内部各层连接强度直至收敛至局部最优解附近为止。在此过程中需注意监控验证集上的性能指标变化趋势以防过拟合现象发生。 #### 应用案例分析 以Anthropic提出的RS-DPO为例,这种方法不仅继承了原有DPO的优势特性,还进一步引入了拒绝抽样的机制来增强最终产出的质量控制水平。通过对候选答案池执行筛选操作去除掉明显不符合预期标准的选择项之后再进行两两比较式的优劣评判活动,有效提升了整体系统的稳定性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿姆姆姆姆姆姆姆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值