我们提出MODPO (多目标直接偏好优化),它以最小的代价改进DPO (直接偏好优化),以完成多目标对齐。
在实现上,MODPO只需要在DPO的基础上修改~2行代码,即在DPO损失函数的基础上额外增加一个margin;
在理论上,MODPO可以被证明和MORLHF(多目标强化学习)等价;
在实验上,MODPO在安全对齐和长篇回答任务中显示出远超MORLHF的性能和效率。
论文题目: Beyond One-Preference-Fits-All Alignment: Multi-Objective Direct Preference Optimization 论文链接: https://arxiv.org/abs/2310.03708 代码链接: https://github.com/ZHZisZZ/modpo 该论文发表于ACL-2024 Findings。
一、介绍
尽管单一语言模型可以通过RLHF (基于人类反馈的强化学习) [1] 实现与群体平均偏好的对齐,但这样的语言模型无法满足多样化的个人偏好:每个人对于不同对齐维度(有用性,无害性,诚实性,等等)有着不同的偏重。为了实现多目标对齐,一些同期工作依赖MORLHF (多目标强化学习),通过对多个奖励函数的加权来表示不同人的偏好,但是MORLHF也继承了RLHF的所有缺点,例如训练不稳定以及流程的复杂性。
在这次的工作中,我们提出MODPO,致力于以最小的代价改进DPO (直接偏好优化) [2] 以实现多目标对齐。这种方法将目标的加权组合以及语言模型的训练,折叠进奖励函数的训练过程中,用最简单的监督学习来实现语言模型的多目标对齐。在实现上,MODPO仅仅只是在DPO的基础上修改了~2行代码,即在DPO的损失函数的基础上额外增加一个margin;在理论上,MODPO可以被证明和MORLHF等价;在实验上,MODPO在安全对齐和长篇回答中显示出远超MORLHF的性能和效率。
二、背景:从单目标对齐到多目标对齐
传统的单目标对齐通过最大化偏好奖励函数 来得到一个符合大众价值观的语言模型 。具体而言,偏好奖励函数 通常蕴含在给定的偏好数据集中 :
其中 代表人类的提问, 代表被偏好的回答, 代表不被偏好的回答。
在这个偏好奖励函数下的最优的语言模型通常满足以下目标函数:
其中 代表对齐前的模型,通常是个监督微调后的基础模型。
虽然这个最优的语言模型,完美符合大众价值观,但未必能符合多样的个人偏好;为了满足定制化需求,一个常见的做法是在训练的时候引入多个目标,例如在偏好奖励 之外,再额外引入一个奖励函数 去鼓励一些定制化的需求(例如惩罚回复中的冗余信息);在多个奖励函数的线性组合之下,语言模型的优化目标变成了如下的形式:
其中 代表一个偏好向量;不同的偏好向量会训练出不同的语言模型 ,从而实现对齐目标的定制化。
为了优化公式 (3),最常见的做法使用多目标强化学习(MORLHF) [3,4],但是它继承了强化学习的不稳定性以及流程的复杂性;与此同时DPO虽然解决了强化学习的缺点,但是DPO通常只能完成单目标的偏好奖励的最大化,如何将DPO拓展到多目标优化中并不显然;而MODPO的目的则是在DPO的基础上,做最小的改动来实现多目标的优化。
三、MODPO(多目标直接偏好优化)
我们提出的MODPO的想法其实非常简单,根据DPO中语言模型和奖励函数的二象性,公式(3)下的最优语言模型 其实有个closed-form表达式:
经过一些基本的变换,我们可以把上述公式改写成:
只要我们将公式(5)代入公式(1)所代表的损失函数,并用参数化的形式来表示语言模型 ( )和提前训练好的定制化奖励函数( ),那么就可以得到一个针对语言模型的损失函数 :
与常见的DPO损失函数相比,MODPO损失函数相当于在DPO的基础上增加了一个margin;通过这个margin,MODPO将目标的加权组合和语言模型的训练同时折叠进偏好奖励函数的训练管线中,使得语言模型被人类偏好驱动的同时,也能被其他定制化目标所驱动。
MODPO管线总览:
1. 提前训练得到定制化奖励函数 ,其包括的范围很广,包括但不限于,
hugginface上已有的奖励函数模型;
人类标的回答的得分(likert score);
类似DPO中使用两个语言模型得到的奖励函数 。
2. 遍历所需要的所有偏好向量 ,对于每一个 ,优化此 下的损失函数 (公式(6)) 来得到一系列满足不同偏好的语言模型。
MODPO的更通用形式:
尽管我们在目前的叙述中,将多目标对齐问题简化成两个目标,但在多个(>2)个目标的情况下,MODPO的损失函数有个更通用的表达方式 :
其中 s.t. 。公式(7)将公式(6)拓展到更多目标的对齐场景中,具体细节欢迎查阅论文。
四、只需要改动两行代码便可以实现从DPO到MODPO拓展
从代码上来看 dpo 和 modpo 的区别可能更加清晰。
dpo loss https://github.com/ZHZisZZ/modpo/blob/main/src/trainer/dpo_trainer.py#L415
def dpo_loss( self, policy_chosen_logps, policy_rejected_logps, reference_chosen_logps, reference_rejected_logps, ):
chosen_rewards = self.beta * (policy_chosen_logps - reference_chosen_logps)
rejected_rewards = self.beta * (policy_rejected_logps - reference_rejected_logps)
logits = chosen_rewards - rejected_rewards
losses = -F.logsigmoid(logits)
return losses, chosen_rewards.detach(), rejected_rewards.detach()modpo loss https://github.com/ZHZisZZ/modpo/blob/main/src/trainer/modpo_trainer.py#L132
def modpo_loss( self, policy_chosen_logps, policy_rejected_logps, reference_chosen_logps, reference_rejected_logps, chosen_margin_reward, rejected_margin_reward, ):
chosen_rewards = (1/self.w[0])*(self.beta * (policy_chosen_logps - reference_chosen_logps) - chosen_margin_reward @ self.w[1:])
rejected_rewards = (1/self.w[0])*(self.beta * (policy_rejected_logps - reference_rejected_logps) - rejected_margin_reward @ self.w[1:])
logits = chosen_rewards - rejected_rewards
losses = -F.logsigmoid(logits)
return losses, chosen_rewards.detach(), rejected_rewards.detach()相比 dpo,modpo 只引入了一个 margin_reward,所以如果你对 dpo 熟悉,那么 modpo 将很容易上手。
上面代码中变量解释如下:
policy_chosen_logps: Log probabilities of the policy model for the chosen responses. Shape: (batch_size,)
policy_rejected_logps: Log probabilities of the policy model for the rejected responses. Shape: (batch_size,)
reference_chosen_logps: Log probabilities of the reference model for the chosen responses. Shape: (batch_size,)
reference_rejected_logps: Log probabilities of the reference model for the rejected responses. Shape: (batch_size,)
beta: Temperature parameter for the DPO loss, typically something in the range of 0.1 to 0.5. We ignore the reference model as beta -> 0.五、实验
我们采用了安全对齐和长篇回答任务来检验MODPO的有效性。在安全对齐任务中,模型的目标是在模型的有用性和无害性之间取得平衡;在长篇回答任务中,给定一篇长文章和针对该文章的问题,语言模型需要阅读文章后给出答案。在这个任务中,语言模型需要在尽可能符合特定要求的同时,给出更被人类偏好的回答。对于3个目标的对齐实验,欢迎查阅论文附录。
对于安全对齐任务,如图1所示,MODPO和MORLHF性能相当(但MODPO更高效);对于长篇回答任务,如图2所示,MODPO远好于MORLHF且更高效。如表1所示,相比MORLHF, MODPO节省了~3倍的GPU时间。
表1:MODPO和MORLHF的GPU hours对比
参考文献
[1] Ouyang L, Wu J, Jiang X, et al. Training language models to follow instructions with human feedback[J]. Advances in neural information processing systems, 2022, 35: 27730-27744.
[2] Rafailov R, Sharma A, Mitchell E, et al. Direct preference optimization: Your language model is secretly a reward model[J]. Advances in Neural Information Processing Systems, 2024, 36.
[3] Wu Z, Hu Y, Shi W, et al. Fine-grained human feedback gives better rewards for language model training[J]. Advances in Neural Information Processing Systems, 2024, 36.
[4] Rame A, Couairon G, Dancette C, et al. Rewarded soups: towards pareto-optimal alignment by interpolating weights fine-tuned on diverse rewards[J]. Advances in Neural Information Processing Systems, 2024, 36.
作者:刘杰 来源:【知乎】https://zhuanlan.zhihu.com/p/684965730
llustration From IconScout By IconScout Store
-The End-
扫码观看!
本周上新!
“AI技术流”原创投稿计划
TechBeat是由将门创投建立的AI学习社区(
www.techbeat.net) 。 社区上线500+期talk视频,3000+篇技术干货文章,方向覆盖CV/NLP/ML/Robotis等;每月定期举办顶会及其他线上交流活动,不定期举办技术人线下聚会交流活动。我们正在努力成为AI人才喜爱的高质量、知识型交流平台,希望为AI人才打造更专业的服务和体验,加速并陪伴其成长。
投稿内容
// 最新技术解读/系统性知识分享 //
// 前沿资讯解说/心得经历讲述 //
投稿须知
稿件需要为原创文章,并标明作者信息。
我们会选择部分在深度技术解析及科研心得方向,对用户启发更大的文章,做原创性内容奖励
投稿方式
发送邮件到
chenhongyuan@thejiangmen.com
或添加工作人员微信(chemn493)投稿,沟通投稿详情;还可以关注“将门创投”公众号,后台回复“投稿”二字,获得投稿说明。
关于我“门”
将门是一家以专注于数智核心科技领域的新型创投机构,也是北京市标杆型孵化器。 公司致力于通过连接技术与商业,发掘和培育具有全球影响力的科技创新企业,推动企业创新发展与产业升级。
将门成立于2015年底,创始团队由微软创投在中国的创始团队原班人马构建而成,曾为微软优选和深度孵化了126家创新的技术型创业公司。
如果您是技术领域的初创企业,不仅想获得投资,还希望获得一系列持续性、有价值的投后服务,欢迎发送或者推荐项目给我“门”:
bp@thejiangmen.com
点击右上角,把文章分享到朋友圈
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.