当前位置:首页|资讯

DPO:人类偏好对齐技术——大模型训练的最后一公里

作者:视频转录总结发布时间:2024-10-05

视频总结工具:readlecture.cn

视频来源

https://www.bilibili.com/video/BV1fR4SeYEqq

大纲

  • DPO概述

    • DPO是一种直接偏好优化方法,主要用于后训练阶段。

    • 大模型训练流程包括预训练、监督微调、偏好优化三个步骤。

    • 偏好优化方法包括RLHF和DPO,DPO分为在线和离线操作。

  • DPO的背景与原理

    • DPO与RLHF的优化问题相似,目标函数在初始形式上相同。

    • 目标是通过最大化奖励函数并最小化KL散度,确保奖励最大化且不改变原始分布。

    • 使用Bradley-Terry偏好模型,假设在给定X条件下,Y1大于Y2的概率由固定reward函数决定。

  • DPO的推导过程

    • 从LHF公式开始,引入reward函数并进行一系列数学推导。

    • 通过配分和log转换,将公式转化为新的KL散度形式。

    • 最终得到优化后的πyx最优策略,与PRAH、reward函数及β有关。

  • Bradley-Terry模型的应用

    • 使用Logistic函数进行进一步处理,假设两支队伍有固定水平,胜率由Logistic模型决定。

    • 通过推导,得到πyx和πyx后,左右同取log,将rxyβlog的左边直接写成r星xy的形式。

  • DPO的最终公式与应用

    • 将reward代入,重新分配成logistic模型,得到DPO的最终公式。

    • 数据集中的所有偏好对都要满足这个条件,通过logistic模型监督DPO过程的训练。

  • DPO的训练与评估

    • 使用预训练的情感分类器判断偏差,构建离线数据集。

    • 在优化语言模型中,最小化给定PRAH的目标函数。

    • 使用GPT-4作为人类评估,评估摘要和响应帮助性的代理。

  • DPO与RLHF的比较

    • DPO对训练资源消耗较少,只需构建数据集。

    • RLHF需要先训练reward模型,再进行精调,可能偏离人类偏好数据集。

    • DPO更傻瓜式,适合不擅长调参的用户。

  • DiffusionDPO的应用

    • 第一个将DPO应用于DEPSION的工作,发表在CVPR2024上。

    • 使用16张A100训练一天,checkpoint在Hugging Face开源。

    • 通过调整GPU,效果有所提升,展示了生成图像的对比效果。

  • DiffusionDPO的设定与推导

    • 使用固定的数据集D和提示C作为输入条件,生成一对图像。

    • 目标是学习到新的文生图模型,更好地符合人类偏好。

    • 引入两个新的假设,进行数学推导,得到DPO loss的最终公式。

  • DiffusionDPO的实验与评估

    • 在SD1.5和SDXL上进行实验,Batch Size为2048,处理80万张数据。

    • 使用Peng Meng混合AHP1SV2数据集,评价指标包括PIXBALL等。

    • 通过人为评估和机器打分,比较DPO与原始模型的效果。

  • 评估指标的问题

    • 使用PickScore和HPSv2进行评估时,效果提升明显,但存在数据集泄漏问题。

    • 其他评估指标如CLIP和美学指标提升较小,可能与数据集不相关。

总结

一句话总结

  • DPO(Direct Preference Optimization)是一种用于后训练阶段的直接偏好优化方法,主要用于图像处理中的扩散模型,通过最大化奖励函数并最小化KL散度来优化模型,使其更符合人类偏好。

结论

  1. DPO是直接偏好优化方法,主要用于后训练阶段,分为在线和离线操作。

  2. DPO的目标是通过最大化奖励函数并最小化KL散度,确保模型在不改变原始分布的情况下最大化奖励。

  3. DPO的优化过程涉及Bradley-Terry偏好模型和KL散度等于零的假设。

  4. DPO在扩散模型中的应用涉及多步推理和Jensen不等式的使用,尽管存在一些不合理的推导步骤。

  5. DPO在图像生成任务中表现出色,尤其是在人类偏好对齐方面,但其评估指标可能存在数据泄漏问题。

深度问答

  1. DPO的主要优化目标是什么?

    • 主要目标是最大化奖励函数并最小化KL散度,以确保模型在不改变原始分布的情况下最大化奖励。

  2. DPO与RLHF的主要区别是什么?

    • DPO直接优化偏好数据,而RLHF需要先训练一个奖励模型,再进行强化学习优化。

  3. DPO在扩散模型中的应用有哪些特点?

    • 扩散模型中的DPO涉及多步推理和Jensen不等式的使用,尽管存在一些不合理的推导步骤。

  4. DPO在图像生成任务中的表现如何?

    • DPO在图像生成任务中表现出色,尤其是在人类偏好对齐方面,但其评估指标可能存在数据泄漏问题。

  5. DPO的在线和离线操作有什么区别?

    • 在线操作通过实时接口获取用户反馈进行实时优化,离线操作则基于预先准备的数据集一次性完成优化。

关键词标签

  • 直接偏好优化

  • 扩散模型

  • 图像处理

  • 奖励函数

  • KL散度

目标受众

  1. 图像处理研究人员

  2. 深度学习模型优化工程师

  3. 对偏好优化感兴趣的学生和学者

  4. 人工智能和机器学习爱好者

  5. 需要优化生成模型的企业和开发者

术语解释

  1. DPO (Direct Preference Optimization): 直接偏好优化,一种用于后训练阶段的优化方法,通过最大化奖励函数并最小化KL散度来优化模型。

  2. RLHF (Reinforcement Learning from Human Feedback): 通过人类反馈进行强化学习,需要先训练一个奖励模型,再进行强化学习优化。

  3. KL散度 (Kullback-Leibler Divergence): 衡量两个概率分布差异的指标,用于确保模型在优化过程中不偏离原始分布。

  4. Bradley-Terry模型: 一种用于比较两个对象偏好的统计模型,假设在给定条件下,一个对象优于另一个对象的概率由固定公式决定。

  5. Jensen不等式: 在凸函数分析中使用的不等式,用于确保函数在期望值上的性质。

讲座回顾


  • DPO是一种直接偏好优化方法,主要用于模型训练的后阶段。

  • 大模型训练流程包括预训练、监督微调、偏好优化三个步骤。

  • 偏好优化方法包括RLHF和DPO,DPO分为在线和离线操作。

  • DPO的目标是通过最大化奖励函数和最小化KL散度来优化模型。

  • Bradley-Terry偏好模型在DPO中用于计算偏好概率。

DPO这个概念涉及两篇文章,一篇是DPO,另一篇是Diffusion DPO,主要用于图像处理。 DPO是一种direct preference optimization,主要用于后训练阶段。在常规训练流程中,我们首先进行模型预训练,然后进行监督微调(SFT),最后进行偏好优化,如RLHF或DPO。由于我并非RLHF专家,因此除了GPU之外,我对其他RLHF工作基础了解有限,所以只能讲解DPO,无法扩展。

当前的大模型训练流程包括三个步骤:预训练、监督微调、偏好优化。偏好优化部分包括preference optimization,有多种方法,但在DPO文章中将其分为两种:RLHF和DPO。DPO分为在线和离线操作。在线操作类似于OpenAI的方式,通过实时接口获取用户反馈,进行实时优化;离线操作则基于预先准备的数据集,一次性完成优化。

DPO的背景知识包括其与RLHF的优化问题相似,目标函数在初始形式上相同。 目标是通过最大化奖励函数(reward function)并最小化KL散度,以确保在不改变原始分布的情况下,奖励最大化。KL散度为零时,表示原始分布与学习到的新分布一致。左边的部分旨在获得更高的奖励,右边的部分防止模型偏离原始分布过远。

第二部分涉及Bradley-Terry偏好模型,该模型有两个假设:一是Bradley-Terry偏好模型,二是KL散度等于零的假设。在这项工作中,假设在给定X条件下,Y1大于Y2的概率由公式决定,即通过固定的reward函数计算Y1和Y2的reward,然后通过公式计算偏好概率。这部分可能不太合理,总体上,假设和KL散度等于零的部分可能不太合理,其他部分则是从公式推导出来的,与RLHF一致。


给大家简要讲解一下这个推导的过程。


  • LHF公式包含reward函数和K2散度函数。

  • 引入reward函数后,将RXY和π放入期望中。

  • 通过取负号和交换位置,得到新的公式。

  • 进行配分,将β分之1RXY放入log中,变成EXP(β分之1RXY)。

  • 加log z x,目的是凑出一个分布,使其与π无关。

  • 最终得到一个概率分布,分子和分母的加和等于1。

我们可以从上面的LHF公式开始,它包含一个reward函数和一个K2散度函数。在引入reward函数后,首先将RXY和后面的π放入期望中,这一步相当于将RXY也放入期望。之后,由于我们需要求max求幂,因此取一次负号并交换位置,得到一个新的公式。接着,进行一次配分,将后面的部分放入log中,即β分之1RXY放入log中,变成EXP(β分之1RXY)。在此基础上,左右两侧都加了一个log z x,即log z x分之一,这实际上是加了一个log z x,然后减去log z x。这个配分的目的是为了凑出一个分布,ZX分之一等于ΣY,相当于后面这部分的加和。这部分只依赖于X,与策略π无关,只依赖于PRAF和X以及预先给定的数据Y。因此,这部分凑出来是为了使其与π无关,最后消掉这部分。另外,为了凑出一个概率分布,得到一个较好的形式,上面是πYX,下面是π新YX,这是一个概率分布,因为分子和分母的加和等于1,每个值都大于0。然而,加和等于0这一点不太合理,因为在查看reward函数后,发现πRAFYX有时可以小于0,即它有时不是大于0的数字,这部分可能是一个小于0的值。但在这种情况下,它仍然可以是一个大于0的值。


因为他使用了这个函数,并在之后用这个函数处理了一下,所以所有的P值基本上都大于零。有这样一个假设,但如果你使用其他奖励模型来计算这个概率,可能就不对了。


  • 初始有奖励函数和KL散度。

  • 转化为新的KL散度形式,即奖励分布的KL散度。

  • 分母化为π新YX后,形式变为E log πYX π新YX减去log ZX。

  • ZX与πYX无关,只与RAF和X有关。

  • 假设log πYX和π新YX取得最小值时,πYX等于π新YX,KL散度为零。

  • 策略函数的最优形式为πYX等于π新YX等于Z分之一拍F5X。

在推导到这一步时,我们实际上得到了一个更进一步的形式。一开始我们有一个奖励函数和一个KL散度,现在我们相当于将其转化为一个新的KL散度的形式,即奖励分布的KL散度。可以看到,当我们将分母化为π新YX后,它变成了下面的形式。这个E log πYX π新YX其实就是KL散度,然后减去了一个log ZX。ZX实际上与πYX无关,它只与RAF和X有关。然后,这部分在下一步被消掉了。ZX不依赖于π,因此在这做了一个假设,即当log πYX和π新YX取得最小值时,πYX等于π新YX,此时KL散度为零。这就是策略函数的最优形式,得到了下面的值,即πYX等于π新YX等于Z分之一拍F5X,相当于分子等于分母。


  • 通过强化学习的目标函数推导出策略函数的最优形式。

  • 最优策略与PRAH、reward函数以及β分之一有关。

  • 需要将PRAH和Rxy代入公式进行进一步计算。

就刚刚我们推导的这个公式,分子等于分母的形式,β是一个超参数,需要你去调整。 然后这是优化后的πyx的最优策略。到这儿大家有问题吗?如果没有问题的话,我就继续讲了。

相当于我通过强化学习的目标函数推导出一个策略函数的最优形式。 这个最优策略与我的PRAH、reward函数以及β分之一有关。接下来,我们就要将PRAH和Rxy代入,通过这个公式再求一次。


  • Bradley-Terry模型是一个Logistic函数。

  • 假设两支队伍有固定水平,队伍i相对于队伍j的胜率由兰姆达i减去兰姆达j决定。

  • 胜率通过Logistic模型(sigmoid函数)表达为1加上e的负(兰姆达i减兰姆达j)次方。

  • 该公式将胜率转换为一个非负数。

在应用Bradley-Terry模型进行进一步处理时,该模型实际上是一个Logistic函数。假设两支队伍都有固定的水平,那么队伍i相对于队伍j的胜率由兰姆达i减去兰姆达j决定。这个公式通过Logistic模型,即sigmoid函数,表达为1加上e的负(兰姆达i减兰姆达j)次方。通过这个公式,胜率被转换为一个非负数。


  • 通过取对数将概率表达式简化。

  • 左侧变为r星xy,右侧变为对数形式,分子为π星,分母为PRAF。

  • π星是推导的目标。

然后方便他后续的处理和操作。我们得到πyx和πyx之后,会左右同取log,将rxyβlog的左边直接写成r星xy的形式。经过推导,左右同取log后,左侧变为r星xy,右侧则变为log形式,分子为π星,分母为PRAF。 这里的π星即为我们要求的目标。


πy/c log Trefylc 等于 πy/c,所以这就是我们最终要求的函数嗯的值。然后他将这个函数进一步带入了 Transformer 模型。


  • DPO训练需要成对的数据进行处理,每对数据中包含一个“好”数据和一个“坏”数据。

  • 通过logistic模型处理数据对,确保“好”数据的胜率高于“坏”数据。

  • 数据对必须提前标定好,不能随意组合或增加新的对。

  • 在工程上,可以通过已有的数据对进行数据增强,但必须保持原有的相对关系。

刚刚我们提到的这个东西,然后将reward代入其中,进行一次处理后,再重新分配成logistic模型,得到了一个logistic的表达式。这就是DPO的最终公式,在最下面,相当于有一个logistic模型,外面取了log,然后求所有偏好对的分布。你有的数据集里面所有偏好对都要满足这个条件。 我希望W是W,这里是W,这里是呃,就你的偏好队里数据胜率的比较偏好那个数据W,YL是比较不好的那个数据。这样做的一个偏好,我希望我的logistic模型最后得到这个logistic模型里头,我的数据比较好的概率,好的数据胜率比低的数据比坏的数据胜率要更高一些,通过这个来监督整个DPO过程的训练。 到这大家有问题吗?呃,就是必问那就一个问题啊,你在做DPO训练的时候,是不是数据必须要是成对的?是的,有一个好的有一个坏的,比如说我有这样两对数据,A和B是一对,C和D是一对,我知道A比B好,C比D好,我能不能拿A和D来做这个训练?都可以吧?不可以,因为他没有A和D的对吧?不,你们只有A和B和C和D了,就A和B和C和D,然后对对,就是说OKOK,你就是他也不能比如说有一个这种顺序关系,就是比如说我想拿A和D做训练,我就控制就是A比D好的程度要更高,这样子怎么不能这样子?呃,不能,就它就你首先要数据集才就标好了数据集才行,然后标小数据集就是成对的,你可以两个也可以三个,就但是你要标好,就比如说你有两个ABA比B好,然后他就是用这个公式,然后ABC的话A比B比C好,然后它会有另外一个公式,就跟也是跟logistic差不多的一个另外的公式,然后就就得到这个之后他会把代入到那个公式里头,然后得到下面的那个公式来求,但是你必须是成对的,就不能不能说是就你要是必须要是有有一个提前定好的东西,就是要是要是你就没有办法就是做超出他那个任务规定范围以外的。** 那那在就是工程上我们训练的时候,我们可以就是这样做数据增强,比如说A比B好,B比C好,我们就认为ABC好,就是加一个新的对,而如果你要是有如果你要是有三个对A比B好,B比BC好,就可以直接通过三个DPO来做了,他还能保持那个相对关系吧?就不需要通过这个两两个的公式了,哦不对,就就他有那个那个推导出来的有多个的公式,是对有多个,但那个推导比较复杂,也没没在这那个题了。唉,那等一下,就是我们在这个数据集里面打的标签还是说他会有一个打分?


A和B谁更好,他不需要打分,只需要判断好不好。这个一般是人工标注的吗?还是说我可以直接拿一个奖励模型,然后对他进行评估?


  • DPO(Direct Preference Optimization)和RLHF(Reinforcement Learning from Human Feedback)是两种不同的优化方法。

  • DPO只需要输入条件(X)和胜负数据集(YI和YW),而RLHF需要奖励模型。

  • DPO在某些情况下使用公开数据集,而不是生成的样本。

  • DPO在下游任务中使用微调的初始模型作为PRAF(Preference Ranking Adaptation Function)。

  • DPO通过奖励边界和KL散度来评估算法,而RLHF依赖于奖励模型。

在这时候,他使用了一个预训练的情感分类器来判断偏差。 那感觉其实就是,如果说你能用奖励模型来标注的话,其实和RLHF差不多,只不过RLHF是多个排序对吧,但他不需要你的那个不精准的奖励,就DPO,你只要知道谁好谁不好就可以,他自己可以优化。嗯,OK,懂了,谢谢。就是说,好像他比RLHF好训练,但他效果好像没有RLHF好啊,对,因为我觉得RLHF他因为奖励模型有一个精准的奖励嘛,所以说就对。但GPT-3.1用的好像是DPO吧,好像没有RLHF,因为银色好听一点。哎,那要接着讲没问题的话就讲DPO,DPO这个思路过程,那就首先你要对有一个输入的prompt,然后经过人类数据偏好标一下,构建一个离线的数据集,这是离线的方式,他只讲了离线方法,它是论文里没讲在线咋做的。

就这数据集呢,它有一个X就是我的condition输入的条件,然后有一个YI和YYW和YLYW,就是win和lost的数据集就可以了,就只需要这三个。然后在优化语言模型里面,它会一个给最小化给定PRAH,就是这个pita,就是刚刚我们讲那个RLHF的一个目标函数,但是它它只需要你给定它,不像RLHF还需要给个reward model或者其他的,它的数据需要的比较少,他只需要这个你原有的这个PRAF和一个数据集就行,它不需要reward和其他的什么东西,它就只需要两个东西。然后实际上说有些时候就是就用这个公开的数据集嘛,然后不是不是生成的样本和收集的人的偏好这个意思,他这个意思是因为他这篇论文里面用的是reward来标的,标的东西,但有些论文里不是用的reward来标,就是也是人类偏好,就直接拿人工去标,人工去标的那种好像比reward标的效果也好。

在下篇DPO里面,我可以给大家讲稍微讲一下,然后这平好税机他们有些时候不是用PRAF采样的,就相当于他有一个下游任务,你看他下面这排下要任务,你看数控情绪摘要单独对话,他每个都有一个微调的初始模型的,然后在这里他用这个微调到初始模型之后,就他把这个拍微调了之后微调的初始模型当做PRAF,就这里他做了一个假设和这篇工作里谈他做了三个任务,就是受控情绪生成摘要和单论对话,数控情绪生成是来自这个IMDb的一个数据集,然后他使用预训练的氢氧分离器来这判断偏好多少,就是就是,我通过判断票对,就是我希望这个输入的X然后生成的生成的电影评论生成生成的好的电影评论被判断为积极的概率要大于生成不好的评论判断为积极的概率,然后他通过边奖励边界和KL散度来评估评估两种算法,就相当于有两个的这个评估指标在这个里头,然后下面的摘要任务和当然对话里他是呃这个从Reddit爬这个数据然后生成摘要,然后这个是第二个工作,他就是使用RedditTLDR数偏要摘要数据集直接生成,嗯,直接生成这个,嗯,人类人类偏好了,就相当于这个他就没有那个代理了,他就直接用人标好的数据去搞了,然后呃在评估的时候他用GPT-4作为人类评估来来评估摘要和响应帮助性的代理在这个style和戴伦动画里都是这个,当然对话里就是说我的这个回答要有吸引力,然后用下面这个数据记这个也是应该是人工标好的一个数据集不是他提前做的。OK,就他后面讲了一下,就使用GPT-4和人类的效果是差不多,到时候我们可以简简单单提一下。


首先,DPO(人类偏好对齐技术)可以被视为一种强化学习的优化问题。在最初阶段,我们可以观察到...


  • 目标是在初始阶段使Reward尽可能高,同时KL散度尽可能小。

  • 比较了不同温度系数下Reward和KL散度的效果,发现效果优于PPO。

  • PPO是RHF中使用的模型,但在各个维度上表现不如新模型。

  • 新模型在某些温度系数下效果优于DPO和SFT,DPO在各个程度上都比SFT效果好。

  • DPO在相同Reward情况下,KL散度比其他模型低,能较好地保持原有模型的KL散度。

就是这个问题,即在最开始时,我希望reward尽可能高,同时KL散度尽可能小。 然后他分别比较了reward和KL散度在不同温度系数下的效果,发现其效果比PPO好。PPO应该是RHF中使用的那个。他在各个维度上表现都比PPO好。至于best of 128,我不太清楚是什么意思,文中也没有详细解释。

后面这个模型我也不太了解,似乎是其他RSF的工作,SFT是微调,可以看到SFT的效果是最差的。而DPO和PPO在某些温度系数下效果更好,DPO在各个程度上都比SFT效果要好一些。

左边是他的KL散度边界,应该横向看,在相同的reward情况下,DPO的KL散度比其他模型低,也就是说DPO能较好地保持原有模型的KL散度。PPO大概在中间,这两个表其实不是很推荐放在一起,但能说明在相同的reward情况下,DPO的KL散度要比较小。


接下来是比较两个单轮对话,这是单轮对话。


  • 模型在单人对话中的表现优于其他微调模型。

  • 训练过程中对temporal参数不敏感,调整后效果稳定。

  • 采样温度(TEMPEROR)在生成时控制输出概率。

以及那个摘要,好啊对对对,这个是摘要,这个是摘要,第二个是摘要,就是摘要,相当于他的胜率会高。第三个是单人对话,单人对话,他给了两个,左边这个就是说,呃,主要是跟PPO这两个比的,这啥啊,preferred的F1好像是另外一种情况,但是他这个又没有跟PPO比,这个不知道为啥,就是说它的效果要比另外两个微调的好。上面这个best of 128可能是怎么调出来的吧,然后后面右面这个部分是说他对话的时候就训练的时候,他可以调这个训练的temporal,就一个是呃,不是,这些训练的时候的不同的temporary,这个是1.0,这个0.7,然后他说就是训练之后他就比较稳定,就是他对这个训练的时候TEMPOR不敏感,你调了之后基本上都差不多是这个意思吧。

这个地方我有个小问题,就是他失恋的他不是人是哪个地方,我也我也不知道,就可能可能是不是现在因为采样的时候是不是有个那个temper,然后让狼狼来控制最后的输出啊,就是TEMPEROR,我问了一下,因为我不是个CPTEMPEROR,是不是就是我这个词表里头的最后的这个TEMPEROR,然后磁表里的这个温度,然后来控制它top k里头输出某些值的概率啊,对吧,是应该是这个意思吧,就是采样温度它是指在做生成的时候去控制的,在生成的时候是不会去就跟他跟训练没关系,它是对这个温度


它在生成过程中,通过对概率进行概率分布的放缩,调整温度以获得更大的概率。


你这个概率分布更加平均,这是他在训练时提到的,论文中也确实写着平底。


我没有骗你,就是这个write,你看就是胜率。在训练过程中,不同样本的胜率随着时间变化。他说的是你在训练的不同阶段,然后你使用不同的采样温度的胜率。


也有可能是在训练过程中,每训几步就进行一次测试。比如每训300步就测一次,这样可以在中间留下checkpoint,然后比较不同时间点上的效果,这样比较合理。


  • GPT-4在原始prompt下倾向于选择更长、更重复的摘要。

  • 设计了两种新的prompt:simple和concise。

  • concise prompt既判断摘要的优劣,又判断其简洁性。

  • concise prompt更接近人类偏好。

然后他做了一个GPT-4判断的有效性测试。他说,在原始的prompt下,GPT-4倾向于选择更长、更重复的摘要,这与原始摘要不同。于是,他又设计了两种prompt:一种是simple,只判断哪个摘要更好;另一种是concise,既判断更好又判断更简洁。他说,这个concise与人类的胜率更接近一些。你看,这个concise的效果可能比simple更好,更接近人类偏好。然后,给大家看一下这个prompt。


就是刚才讲的附录里提了一下这个东西。


这个是simpleSimple,即下面哪一个有更好的效果,然后做这要做的更好,有这种东西,然后他就不控制,不控制你的这个哪个的不控制你的结果里面哪一个更简洁,然后第二种是consent。


consent 是指除了控制得更好之外,它还提到了在没有控制的情况下,重要的或无关的细节。然后它说,不能控制不好的细节。


然后他最差的效果是这个,就是他还有一个更简单的PM,相当于他调整了一下promote。


然后他在正文中提到了


  • 作者提到可能缺乏足够人力完成任务,因此使用GPT生成合适的prompt。

  • 建议将GPT生成的prompt部分放入附录,正文中提供了一个表格。

  • 结论指出GPT-4C与人类的相似度判断效果最好

  • 讨论了DPO SFT与I/O i chef DPO SFT的选择问题。

他说他可能没有足够的人力来完成这件事,于是他使用GPT调了一个合适的prompt。但我觉得这部分可以放到附录里,正文里还提供了一个表格,最后说明GPT-4C与我们的human相似度判断效果最好。DPO这篇就讲到这里,大概就是这样。大家还有什么其他问题吗?比如说,我应该在什么时候选择DPO SFT还是用I/O i chef DPO SFT。


这不仅仅是DPO,还有这几种方法。


它其实都是为了让模型更接近人类的偏好。 是的,比如说,我应该如何选择这三种方法?你是先进行SFT,然后再选择DPO和RLHF吗?要先做SFT,然后再去做DPO或RLHF。


  • DPO只需构建一个数据集,资源消耗较少。

  • RHF不仅需要构建数据集,还需给出奖励(reward)。

  • 传统RLHF需先训练一个奖励模型,但该模型可能不准确反映人类偏好。

  • 使用RLHF时,奖励模型有时会偏离人类偏好数据集。

  • 训练过程类似于GAN,先训练判别器再训练生成器,判别器质量直接影响生成器效果。

在这就是我呃我看了一下网上的评论,你可以浅听一下,不一定对哦。 其实呃我不能很严谨地说,因为我没做过。但是,DPO这个东西它对训练等资源消耗的要少,因为它只需要构建一个数据集就行了。而RHF它不只是要构建一个数据集,还要给出一个reward。

你想先训一个reward,传统的RLHF你要先训一个reward模型,然后这个微软的模型会有一个嗯问题,就是这个reward模型它不一定是真实的,他并不一定能够真实的分配人的一个偏好。 如果你用强化学习的话,你这个RLHF做的reward有些时候他可能会偏离那个人类的偏好数据集,因为你相当于用那个reward又做了一次精确吗精准,你就要训两次吧。首先你要有训好这个reward函数,然后你再做筋膜的一个训练。

他其实他有点像啥吧,他有点像干王干也是先训一个判别器,能判别它再训那个生成器去做。 你这个判别器不好,生成器就不可能好。就你这判别器如果你这判别器进入到一个死胡同之后,生成器就不可能在再训弄好了。就他是有一个博弈的过程。然后你这RLHF首先你要训一个比较好的reward,他可能就对你这个领域知识或者调参数比较多。


可能DPO这个模型就没有太多参数,只有一个贝塔。


  • 贝塔函数仅涉及贝塔参数和学习率两个参数。

  • 调整这两个参数相对简单,上手快。

  • 精细调整的RLHF效果可能更好,但比粗略调整的RLHF效果好。

  • 不擅长调参的用户可使用DPO,精通的用户可继续使用此方式。

贝塔函数只有一个贝塔参数和前面的学习率,只调整这两个参数。虽然这两个参数调整起来比较简单,上手较快,但最终达到的效果可能不如精细调整的RLHF好,但比粗略调整的RLHF好。如果你不擅长调参,可以使用DPO。 如果你非常精通,可以继续使用这种方式。


就可以调用RRAFF,他应该就是这个意思,就是他更傻瓜式吧。OK,谢谢贝贝,更傻瓜式的操作。


  • DEPNGPU是首个将DPO应用于DEPSION的工作,并取得了显著效果。

  • 该工作发表于CVPR2024,由Salesforce AI完成。

  • 通过调整GPU,效果有所提升,使用了16张A100,训练一天即可。

  • 其checkpoint已在Hugging Face上开源,被其他工作直接用于模型训练。

  • 后续有MSRA的STU和另一个SU,均在DPO基础上进行。

好的,我还有20分钟,给大家简单介绍一下DEPNGPU,这是在DPO基础上进行的工作。他是第一个将DPO应用于DEPSION的,并且取得了不错的效果。我先给大家展示一下它的效果,这个工作发表在CVPR2024上,是Salesforce AI的研究成果。通过调整GPU,效果确实有所提升。

这个工作是在Diffusion模型上进行的,使用了16张A100,训练了一天即可。它的checkpoint已经在Hugging Face上开源,有些工作直接使用它来进行模型训练。后续还有一个STU是由MSRA做的,还有另一个SU,大家感兴趣的话可以查看,也是在DPO基础上进行的。

对了,我先给大家看一下它的效果展示,效果的详细内容在他的附录里。


其实DPO相当于是在学习到一个


人类偏好的数据分布其实并没有太大改变原始分布,只是让分布呈现的数据更接近于人类的结果。例如,左边是原始效果,右边是DPO效果,他说右边的效果要比左边的好,但实际上也看不太出来。


这幅图我认为能看出来的话,可能是这个比较明显。


右边的可能比左边更清晰一些,这个也更好一些。


这可能也好一些。


就是他提供了一些promote pro嗯样例


然后上面也有一些例子可以给大家看一下,展示生成这种丰富多彩的内容。


  • 原始模型具备生成高质量图像的能力。

  • 通过调整seed,可以生成不同效果的图像。

  • DPO技术提高了生成高质量图像的概率,减少了对seed的依赖。

  • DPO技术使得生成高质量图像的过程更加高效,减少了调整次数。

美感效果都要更好的一个内容,当然你首先要原始的模型有这种能力。 就相当于原始模型其实也是有这种能力,你随你调seed之后调很多个seed之后也能调出来这种图。但是DPO做了之后,就能够更好地不需要你去挑很多seed,他有更好的概率挑出来,你写就更好的概率只挑一个C或只挑两个更少的挑C的过程,就能生成一个更好的效果的图。


  • DiffusionDPO模型类似于GPU,使用固定的数据集D和提示C作为输入条件,生成一对图像。

  • 生成的图像包括参考图像pref和生成的图像,其中有赢的样本和输的样本,这些样本由人类标注,数据集包含约80万张图像,共2万多个样本。

  • 目标是通过学习生成一个能更好地符合人类偏好的文生图模型。

  • DiffusionDPO与DiffusionDPU的主要区别在于,DiffusionDPU是单步生成X0,而DiffusionDPO是多步生成,从X1到XT,遵循马尔可夫链,每一步都与之前有关。

  • 由于直接计算pcolc(C|X0)不可行,DiffusionDPO实际上求的是一个联合概率分布,最后再细分到每一步上去做。

OK,我给大家讲解一下DiffusionDPO这方面的设定。它与GPU类似,有一个固定的数据集D,一个提示C作为输入条件,然后生成一对图像。有参考图像pref和生成的图像,即文生图。生成的图像有一个赢的样本和一个输的样本,这些都是人类标注好的数据,大约有80万张,共2万多个样本。目标是学习到一个新的文生图模型,该模型能更好地符合人类偏好。

由于扩散模型,DiffusionDPO与DiffusionDPU的主要区别在于,DiffusionDPU是单步的,直接通过C生成X0,而扩散模型是多步的,从X1到XT,它是一个马尔可夫链,每一步都与之前有关。直接计算pcolc(C|X0)是不可行的,因此它实际上求的是一个联合概率分布,最后再细分到每一步上去做。


  • DPO损失公式的最终形式引入了两个假设。

  • 第一个假设是DPO的KL散度等于零。

  • 第二个假设是使用了Bradley-Terry模型的概率假设。

  • 推理过程中对reward函数进行了修改,从X0变为X0到T的全概率分布。

  • 公式中将X0D替换为X0到T,但存在一处笔误。

  • 最终公式与之前的DPO损失推导相同,唯一的不同是条件C1被去掉。

然后你可以看到,DPO loss的最终公式如下:它有推理过程,但这个推理引入了两个假设。 我们回顾一下,在使用DPO时,我们用了两个假设:第一个是DPO的KL散度等于零,即π和π星的KL散度等于零;第二个是使用了Bradley-Terry模型的概率假设。在这个基础上,DPO又引入了两个新的假设。

由于时间有限,我们可能无法详细讲解推理过程,但首先,他将reward函数进行了修改,之前是X0,现在是X0到T的全概率分布,因为我们知道去噪过程是从零步到T步,共近1000步。然后,他将所有的X0D都替换为X0到T。

你可以看到,他将之前的reward替换为下面的部分,但这里有一点问题,我认为应该是X0到T,但他这里写成了CRRRCX0,不过后面似乎又改回去了。从这一步到下一步,其实与之前DPO损失的推导相同,得到了这个公式,仍然使用了KL散度等于零的假设,以及Bradley-Terry模型,唯一的不同是上面是X0,下面是X0到T,他将条件C1去掉了,这是唯一的不同之处。


唯一的不同就是将X0变为X0到T的变化,然后进行了另外一步推导。


  • DPO方法的缺点:梯度步数大,每次计算耗时长。

  • DPO方法的步骤:每一步都与前一步相关,形成马尔可夫链。

  • 改进建议:希望每一步都有DPO约束,而不是从零到T之后再做总的泛约束。

  • Jensen不等式的应用:在深度学习中,函数通常不是凸函数,应用Jensen不等式可能不合理。

  • 公式变换:将Jensen不等式应用后,公式变为KL散度形式,但原始公式中没有log q。

尤其我觉得不合适的是用了一次Jensen不等式。 首先,DPO的缺点是它的梯度步数很大,有1000步,每次全站强都需要花费很长时间。其次,它每一个步骤都与前面的处理相关,是一个马尔可夫链。在求loss时,当我得到X0到T时,我不希望它每次都算到底再去做DPO的监督,而是希望它在每一步T到T-1时都做一次DPO的约束,我希望每一步都有DPO约束,而不是从零到T之后再做一个总的泛约束。我希望用来做一个更细致的约束,每一步都要与人类偏好相符合。

你可以看到,他把PC和pr f都替换成了下面这个马尔可夫链的公式,替换之后去期望,这就相当于里面乘了个T分之一,外面又乘了个大T,然后挪到前面,把这个大T挪到前面,然后又把这个E分到里面了。这两步和这两步应该没有什么太大的区别。然后在这儿用了一次Jensen不等式,这个公式我们知道Jensen不等式其实你必须要保证你的函数是一个凸函数,在你保证了你的函数是凸函数之后,你的F(EX)就小于等于EF(X)。但是我们知道,在深度学习的时候,这东西其实并不是凸函数。在这儿用了一下,就相当于他把flog theta提到里面了,提到里面之后,这一步我感觉不是很合理。

Jensen不等式提到里面之后,他会把里面的公式变成一个KL散度的公式,他怎么做呢?就是他外面的东西没有动,只动了里面的这两个分布。我们直接看下面这形式和上面形式什么相似之处,我们这KL散度是分子分母都有一个log的,但实际上log q是没有的。log q x T减一和其实其实就是首先log q是没有的,然后呢他其实是怎么搞的,就是它左边有一个DKL,这个不是KL散度的一个PQ的Q的一个作为参考的分布,然后后面这个你们看这个还有一个,就相当于他左边加了一个log q,右边又加了一个q log q,然后最后抵消掉了,相当于他在原始的基础上就左右又平添了一个log q,这个q是前项分布的过程,他把P获奖分母给改成Q了。你可以看到这是P,后面这是Q,然后这是底数上的东西,然后大家这部分就可以不看了,就把P就把相当于把这个就这个漏,就他每一个log p都会添一个log q,然后最后给你弄成就有四个,然后变成四个KL散度,然后把KL散度之后之前我们diffusion的这个渠道过程的这个KL散度的求theta的求噪声的一个过程给代入到上市,最终得到了有正面结果。

下面这步用的是DPO的过程,然后上面这个用了一下,上面这部是在这部以前基本上没有用太多DPO去造一个公式,他只用了那个马尔可夫链的一个公式,然后有一个Jensen不等式的假设,这个Jensen不等式假设可能不是很合理。


  • 在某个步骤中,将PC塔分布近似为PQ分布,这一步并不合理。

  • 最终得到的公式中,diffusion模型的普通损失函数为西格玛减去西格玛W和西格玛L,但实际上西格玛没有W和L之分。

然后前面还有我记得还有一部不是很好啊往里来着啊对对对,他直接把这个PC他他直接把这个前面的呃这个P就在某一步的时候把这个PQ的CPQ的分布PC塔分布改成PQ的分布,这步其实也不是很合理,又又又做了次近似,大概这样,然后最终得到了就是下面这个公式,我们知道每每一个就其中的一个就是就是我们的这个呃diffusion模型的普通的loss就是CC呃西格玛减去西格玛W西格玛减去西格玛L呃L,但实际上这西格玛是没有那个W和L之分的。

然后前面还有我记得还有一部不是很好啊往里来着啊对对对,他直接把这个PC他他直接把这个前面的呃这个P就在某一步的时候把这个PQ的CPQ的分布PC塔分布改成PQ的分布,这步其实也不是很合理,又又又做了次近似,大概这样,然后最终得到了就是下面这个公式,我们知道每每一个就其中的一个就是就是我们的这个呃diffusion模型的普通的loss就是CC呃西格玛减去西格玛W西格玛减去西格玛L呃L,但实际上这西格玛是没有那个W和L之分的。


  • 代码中添加了DPO损失的代码,其他部分与原始微调代码完全一致。

  • 使用了CCTW和CAL,target为model_pred,即model_w和model。

  • 代码中存在一个可能的公式问题,theta_w和CAL应为两个不同的theta,但实际上使用了同一个theta。

  • 代码中未实现W和L,仅添加了DPO损失,其他部分未改动。

  • 代码量较少,但因数学推导使其显得复杂。

你可以看一下他的代码,除了添加了这一段DPO损失的代码外,其他部分与原始微调的代码完全一致。其实,这个DPO实验相对简单,它上面的代码都与原始微调的相同。 你可以看到,他使用了CCTW和CAL,其实就是这个target。这个target就是最终的model_pred,也就是我前面提到的model_w和model。

这里有一个粉色的部分,后面是theta_w和CAL,前面都是用的target,后面的RF也是用的target。所以,这一步可能他写的公式有点问题,theta_w和CAL按理说应该是两个theta,但实际上他用的是同一个theta,相当于给空了一下,就相当于同一个theta减去后面,然后用后面这四个公式。

在代码里,他没有实现这个W和L,总共就这一小段,就是把DPO的损失加进来了,其他都没改。这点有问题吗?其他代码量很少,但因为他做了一些数学推导,主要可能是数学推导让它比较复杂,最后也调出来了吧。还有没有问题?没有问题我就继续讲,基本上就是一样的,只是做了一套diffusion,每一步的一个适配,然后引用一些define一个相应的知识,做了一个推理,还有这个不合理的第on不等式。


  • 实验在SD1.5和SDXL上进行,Batch Size为2048。

  • 使用16张A100显卡,处理了80万张数据。

  • 5万多个promote生成了85万个数据段。

  • 数据段数量与promote数量不匹配,可能一个promote生成多个数据段。

  • 实验采用一对一比较,未处理同一promote生成多个数据段的情况。

然后他在SD1.5和SDXL上进行实验,Batch Size为2048,使用了16张A100,总共处理了80万张数据,5万多个promote生成了85万个数据段。我不理解为什么数据对不上,可能是一个promote生成了多个数据段,每次生成两个进行对比。这就是刚刚猫猫和老王提到的问题,如果有同一个promote生成了A比B好,C比D好,那怎么处理?他没有处理这个问题,只是纯粹的一对一比较,只有A比B好,C比D好,只能这么用。如果他有A比B好,


  • B比C好,但B在工作中未能推导出三个偏后的公式,只使用了两个前一篇TPU推导出的公式。

  • B的benchmark使用了Peng Meng混合AHP1SV2数据集,主要评价指标是PIXBALL,还包括CLIP处理和人为评估。

  • B依赖人为评估来判断一般偏好、吸引力和提示对齐。

  • 昨晚的图像与提示更对齐,图文匹配度更好。

如果B比C好,但由于他在工作中未能推导出三个偏后的公式,因此他只使用了两个前一篇TPU推导出的公式。他的benchmark使用了Peng Meng混合AHP1SV2数据集,评价指标主要是PIXBALL,还有一些其他处理如CLIP,以及一些人为评估的问题。他纯粹依赖人为评估来判断一般偏好,哪个更吸引人,提示对齐哪个更好。这个似乎写错了,你昨晚刚弄的那个图像,就是与提示更对齐,图文匹配度更好的那个。


  • 定性分析结果显示DPO效果优于SDX。

  • 人工评价胜率为76%对64.9%。

  • 使用pik score评分,但指出该方法不合理。

  • 人工评估显示DPO-SDX Refiner总体效果优于SDX。

  • 已在哈林配对上开源。

他比较了定性分析的结果,直接将DPO与原始模型进行对比。他提到这是DPO和Refiner,另一个是Refiner。他说DPO的效果比SDX好,但这些都是由人来评价的,胜率是76%对64.9%。不过,他似乎也使用了pik score来进行评分,但后面我会解释为什么这种方法不合理,因为它有其不合理之处。这部分应该是由人来打分,后面他用机器来打分了。然后,他说用人来评估的话,DPO-SDX Refiner的总体效果要比SDX效果好。他已经在哈林配对上开源了。


  • 使用四种模型进行打分:AHPSV2、CLIP、美学评估指标、PickScore。

  • 使用PickScore对数据集进行AI奖励时,四个指标均提高。

  • 使用CLIP和美学指标时,提升效果不明显。

  • 使用特定指标时,该指标提升最大。

  • PickScore和HPS指标效果较好,原因待探讨。

大家可以看我,然后另外一个比较有意思的点就是他的结果里头,他说了用人类偏好reward打分的这个东西,有一个很大的问题。 他用了四种模型来进行打分:第一种是AHPSV2,第二种是CLIP,第三种是美学评估指标,第四种是PickScore。

当你把这些数据集用PickScore去reward模型去做AI reward的时候,去对这个数据做打分的时候,他四个指标都提高了,HPS也是四个都提高了。但是你用CLIP和美学指标,就是没有那么好。CLIP用CLIP的指标来做图那些话提升微乎其微,然后美学指标也是无规无缺。

这俩你可以明显发现,他用哪个指标哪个指标会提升。我就用CLIP指标,CLIP提升指标提升最大,然后用美学指标,SC指标提升最大。然后你可以看到,用PickScore指标的话,HPS提升是最大的,PS也是HPS也是hp指标提升最大。

这有一个问题来了,就是他为什么会评估的指标,为什么PickScore和HPS的效果会好呢?


因为他的测试集使用的是Pick-a-PiCV2数据集和HPSv2。


  • PickScore在PK数据集上训练和测试,存在数据泄漏问题。

  • HPSv2在HPS数据集上训练和测试,存在伪标签问题。

  • 其他两个数据集没有伪标签,提升效果较小。

  • 这两个数据集都是人类偏好数据集,测试效果较好。

就是那个PickScore,它是在PK和PK的数据集上进行训练的,在这个数据集上训练后,再在这个数据上进行测试,感觉本身有点泄漏。 HPSv2也是,它是在HPS数据集上训练,然后在HPS上进行测试,所以感觉相当于是提供了一个与测试数据相关的伪标签。另外两个没有伪标签,就不相关,可能提升比较小。这两个刚好是对应的数据集,在这两个数据集上进行测试,感觉效果会好一点。这两个都是人类做的偏好数据集。

南哥,能听到我吗?我问个前面的问题,就是为什么我们不能在培训之后直接做DPO,而是要先做个SFT呢?你看这个,就是直接在DEP之后做DPO了。


就是我可能更想问这个语言模型那边吧


为什么也不想问就不在乎其实可恶


对于LM,我们为什么要先进行SST,然后再进行DPO或RLHF,可能是因为偏好数据集都是离线的,而基础模型可能对这些数据不够敏感。


就是做消遥任务在这里,他整篇论文是这么提的。


但他后面也没有使用SFT,而是采用了DiffusionDPO模型。


就是你就是我的感觉,因为我不是做NLP的,我不能给你一个很正确的答案。你可以看到这个,它是比SFT好的,它没有用SFT,但是这个指标是有问题的。


因为他本身运用了摘要模型,摘要模型本身就做了一次SFT,已经被做了两次SFT,这就是我的感觉。


  • 下游任务需要进行领域特定的SFT(Supervised Fine-Tuning)。

  • 基础模型的训练需要人类偏好数据集,可以直接进行DPO(Direct Preference Optimization)。

  • SST(Supervised Fine-Tuning)可能类似于instruction tuning,但主要针对特定下游任务。

  • GPT系列模型一直声称使用RLHF(Reinforcement Learning from Human Feedback)。

可能是因为他的任务是做下游任务,所以他需要首先进行领域特定的SFT。如果你要做基础模型,你首先需要有所有基础模型的人类偏好数据集,才能跳过SFT这一步,直接进行DPO。 SST是否类似于instruction tuning,即训练都在指令上进行?我感觉他应该是针对某个下游任务的SFT。因为你看,他的人类偏好数据也都是针对某个任务的,然后他的模型也都是针对某个任务的。另外,之前GPT一直声称使用的是RLHF,我感觉。




Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1