SimPO 无需ref_model的LLM对齐

One-line summary

通过修改奖励函数,去除掉DPO训练中需要的ref_model

1 Introduction

1.1 Problem Statement

DPO是一种离线的偏好学习优化算法,通过重参数化强化学习中的奖励函数来学习人类偏好,同时加强训练的稳定性和简单性。 SimPO是一种更加简单有效的方法:用一个序列的平均对数概率作为隐式的奖励。

1.2 Stated Contribution

Image

DPO的公式

LDPO(πθ;πref)=E[logσ(βlogπθ(ywx)πref(ywx)βlogπθ(ylx)πref (ylx))]

SIMPO公式

LSimPO(πθ)=E[logσ(β|yw|logπθ(ywx)β|yl|logπθ(ylx)γ)]

注意,SimPO不需要一个reference model,这意味着这个训练的时候需要的显存的数量可以大大减少了。

2 DPO preliminaries

r是一个奖励函数,一个带有闭式解的表达式作为优化策略:

r(x,y)=βlogpθ(yx)pref (yx)+βlogZ(x)

然后用Bradly-Terry排序目标

p(yw>yl|x)=σ(r(x,yw),r(x,yl))

得到DPO的优化目标:最小化负对数的BT:

LDPO(θ)=Ec,x0w,x0l[logσ(βlogpθ(x0wc)pref(x0wc)βlogpθ(x0lc)pref(x0lc))]

3 SimPO: Simple Preference Optimization

3.1 DPO奖励和LM生成目标之间的差异

语言模型生成一个序列的时候是通过最大化平均对数似然(maximizes the average log likelihood):

pθ(yx)=1|y|logπθ(yx)=1|y|i=1|y|logπθ(yix,y<i).

这个目标和奖励函数r有不一致的地方,也就是说r(x,yw)>r(x,yl)推导不出pθ(x,yw)>pθ(x,yl)

如下图所示,直观的可以看书r大的不一定概率大
Image

3.2 长度归一化的奖励函数

为了解决这个问题,SimPO改了奖励函数
从:

r(x,y)=βlogpθ(yx)pref (yx)+βlogZ(x)

rSimPO(x,y)=β|y|logπθ(yx)=β|y|i=1|y|logπθ(yix,y<i),

这个平均最小的奖励函数和LM生成的时候的式子类似,然后就可以解决3.1里提到的问题

Image

3.3 最小奖励差距γ

p(yw>yl|x)=σ(r(x,yw),r(x,yl)γ)

方法部分结束

4 Experiment

4.1 Implementation Details

picture/DPO-variants.png

5 Summary

从语言模型的生成过程的目标推导出了减小generation和reward之间差异的新的reward function
去掉了对ref_model的依赖
加入了一个最小的奖励差距
得到一个简单的preference optimization loss

6 Comments

有几个问题:

  1. alignment对于llm的重要性要高于其对于其他模态的大模型吗?
  2. 3.1的分析很有insight.