DPO、KTO、DiffusionDPO

发布于:2025-02-10 ⋅ 阅读:(43) ⋅ 点赞:(0)

DPO(Direct Preference Optimization)

原文来自于 https://arxiv.org/pdf/2305.18290,

Bradley-Terry (BT)模型,假设人的喜欢遵循下面的公式,给定x,得到 y 1 y_1 y1 y 2 y_2 y2分别遵循以下关系,其中 r ∗ r^* r是对奖励的估计:
p ∗ ( y 1 ≻ y 2 ∣ x ) = exp ⁡ ( r ∗ ( x , y 1 ) ) exp ⁡ ( r ∗ ( x , y 1 ) ) + exp ⁡ ( r ∗ ( x , y 2 ) ) p^*(y_1 \succ y_2 \mid x) = \frac{\exp(r^*(x, y_1))}{\exp(r^*(x, y_1)) + \exp(r^*(x, y_2))} p(y1y2x)=exp(r(x,y1))+exp(r(x,y2))exp(r(x,y1))
除一下得到下面的形式,刚好是可以sigmoid形式

p ∗ ( y 1 ≻ y 2 ∣ x ) = 1 1 + exp ⁡ ( r ∗ ( x , y 2 ) − r ∗ ( x , y 1 ) ) = σ ( r ∗ ( x , y 2 ) − r ∗ ( x , y 1 ) ) p^*(y_1 \succ y_2 \mid x) = \frac{1}{1 + \exp(r^*(x, y_2)-r^*(x, y_1))} = \sigma(r^*(x, y_2)-r^*(x, y_1)) p(y1y2x)=1+exp(r(x,y2)r(x,y1))1=σ(r(x,y2)r(x,y1))
所以重点1来了:有了BT Model的假设,这个preference是一个sigmoid的形式,否则二分类应该是一个CE的形式,这种sigmoid的形式在后面推导最终表达式的时候有一些便利
最终DPO的loss函数形式是
p ∗ ( y 1 ≻ y 2 ∣ x ) = 1 1 + exp ⁡ ( β log ⁡ π ∗ ( y 2 ∣ x ) π ref ( y 2 ∣ x ) − β log ⁡ π ∗ ( y 1 ∣ x ) π ref ( y 1 ∣ x ) ) \begin{equation} p^*(y_1 \succ y_2 \mid x) = \frac{1}{1 + \exp \left( \beta \log \frac{\pi^*(y_2 \mid x)}{\pi_{\text{ref}}(y_2 \mid x)} - \beta \log \frac{\pi^*(y_1 \mid x)}{\pi_{\text{ref}}(y_1 \mid x)} \right)} \end{equation} p(y1y2x)=1+exp(βlogπref(y2x)π(y2x)βlogπref(y1x)π(y1x))1
这里的 r ∗ ( x , y ) r^*(x,y) r(x,y)实际上是借鉴PPO里面的思路应该表示成以下形式(由于拉格朗日乘数法所以多了一个Z,细节参考原文推导),刚好这个Z(x)由于Bradley-Terry假设就被消掉了,这也是BT Model的重点2,所以得到了上面公式(1)作为DPO的loss函数
r ∗ ( x , y ) = β log ⁡ π ∗ ( y ∣ x ) π ref ( y ∣ x ) + β log ⁡ Z ( x ) r^*(x, y) = \beta \log \frac{\pi^*(y \mid x)}{\pi_{\text{ref}}(y \mid x)} + \beta \log Z(x) r(x,y)=βlogπref(yx)π(yx)+βlogZ(x)

KTO(Kahneman-Tversky Optimization)

KTO简单来说就是average来做reference point,上面DPO每次都是win和loss这样一对pair来比,KTO改成了从average里面取。这样就不再需要pair wise数据了,只需要point wise数据。但上面那个Z(x)姑且假设还能消掉。

作者调研了RL几个loss function,符合KT理论特征,发现人就是收益边际效用递减+损失厌恶,几种RL的loss都是下面图里的趋势。下面图只是画出了log的大概形状,和x轴和y轴的交点并不完全准确
在这里插入图片描述

DiffusionDPO

来自于 https://arxiv.org/pdf/2311.12908,问题是DPO是怎么加的呢?有下面几个点比较关键

Expectation to remove redundant predictions

因为stable diffusion有很多中间状态,解决方案是求个均值,下面公式里c是用户输入的prompt
r ( c , x 0 ) = E p θ ( x 1 : T ∣ x 0 , c ) [ R ( c , x 0 : T ) ] r(c, x_0) = \mathbb{E}_{p_\theta(x_{1:T} \mid x_0, c)} \left[ R(c, x_{0:T}) \right] r(c,x0)=Epθ(x1:Tx0,c)[R(c,x0:T)]

Jensen’s inequality

实际上就是通过Jensen不等式,把expectation取出来
在这里插入图片描述

Estimate p with q,加噪声时候是q,去噪声时候是p

最终得到的loss函数形式如下,含义也比较直观,尽可能接近winning cases,原理losing cases
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到