ACL 2024 | 多目标直接偏好优化MODPO:大语言模型的多目标对齐
ACL 2024 | 多目标直接偏好优化MODPO:大语言模型的多目标对齐
香港中文大学MMLab团队在ACL 2024会议上发表了一篇关于多目标直接偏好优化(MODPO)的研究论文。MODPO在保持DPO(直接偏好优化)优点的基础上,通过简单的代码修改实现了多目标对齐,不仅在理论上与MORLHF(多目标强化学习)等价,还在实验中展现出更好的性能和效率。
MODPO简介
尽管单一语言模型可以通过RLHF(基于人类反馈的强化学习)实现与群体平均偏好的对齐,但这样的语言模型无法满足多样化的个人偏好:每个人对于不同对齐维度(有用性,无害性,诚实性,等等)有着不同的偏重。
为了实现多目标对齐,一些同期工作依赖MORLHF(多目标强化学习),通过对多个奖励函数的加权来表示不同人的偏好,但是MORLHF也继承了RLHF的所有缺点,例如训练不稳定以及流程的复杂性。
在这次的工作中,我们提出MODPO,致力于以最小的代价改进DPO(直接偏好优化)以实现多目标对齐。这种方法将目标的加权组合以及语言模型的训练,折叠进奖励函数的训练过程中,用最简单的监督学习来实现语言模型的多目标对齐。
在实现上,MODPO仅仅只是在DPO的基础上修改了~2行代码,即在DPO的损失函数的基础上额外增加一个margin;在理论上,MODPO可以被证明和MORLHF等价;在实验上,MODPO在安全对齐和长篇回答中显示出远超MORLHF的性能和效率。
MODPO(多目标直接偏好优化)以最小的代价改进DPO(直接偏好优化),以完成多目标对齐
背景:从单目标对齐到多目标对齐
传统的单目标对齐通过最大化偏好奖励函数来得到一个符合大众价值观的语言模型。具体而言,偏好奖励函数通常蕴含在给定的偏好数据集中:
其中代表人类的提问,代表被偏好的回答,代表不被偏好的回答。在这个偏好奖励函数下的最优的语言模型通常满足以下目标函数:
其中代表对齐前的模型,通常是个监督微调后的基础模型。
虽然这个最优的语言模型,完美符合大众价值观,但未必能符合多样的个人偏好;为了满足定制化需求,一个常见的做法是在训练的时候引入多个目标,例如在偏好奖励之外,再额外引入一个奖励函数去鼓励一些定制化的需求(例如惩罚回复中的冗余信息);在多个奖励函数的线性组合之下,语言模型的优化目标变成了如下的形式:
其中代表一个偏好向量;不同的偏好向量会训练出不同的语言模型,从而实现对齐目标的定制化。
为了优化公式(3),最常见的做法使用多目标强化学习(MORLH),但是它继承了强化学习的不稳定性以及流程的复杂性;与此同时DPO虽然解决了强化学习的缺点,但是DPO通常只能完成单目标的偏好奖励的最大化,如何将DPO拓展到多目标优化中并不显然;而MODPO的目的则是在DPO的基础上,做最小的改动来实现多目标的优化。
MODPO(多目标直接偏好优化)
我们提出的MODPO的想法其实非常简单,根据DPO中语言模型和奖励函数的二象性,公式(3)下的最优语言模型其实有个closed-form表达式:
经过一些基本的变换,我们可以把上述公式改写成:
只要我们将公式(5)代入公式(1)所代表的损失函数,并用参数化的形式来表示语言模型()和提前训练好的定制化奖励函数(),那么就可以得到一个针对语言模型的损失函数:
与常见的DPO损失函数相比,MODPO损失函数相当于在DPO的基础上增加了一个margin;通过这个margin,MODPO将目标的加权组合和语言模型的训练同时折叠进偏好奖励函数的训练管线中,使得语言模型被人类偏好驱动的同时,也能被其他定制化目标所驱动。
MODPO管线总览:
- 提前训练得到定制化奖励函函数,其包括的范围很广,包括但不限于,
- hugginface上已有的奖励函数模型;
- 人类标的回答的得分(likert score);
- 类似DPO中使用两个语言模型得到的奖励函数。
- 遍历所需要的所有偏好向量,对于每一个,优化此下的损失函数(公式(6))来得到一系列满足不同偏好的语言模型。
MODPO的更通用形式:
尽管我们在目前的叙述中,将多目标对齐问题简化成两个目标,但在多个(>2)个目标的情况下,MODPO的损失函数有个更通用的表达方式:
其中s.t.。公式(7)将公式(6)拓展到更多目标的对齐场景中,具体细节欢迎查阅论文。
只需要改动两行代码便可以实现从DPO到MODPO拓展
从代码上来看dpo和modpo的区别可能更加清晰。
dpo loss:
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:
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:不同方法在安全对齐(左)和长篇回答(右)任务上的帕累托曲线
表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.