SimPO 与 DPO 对比推导
分类: 预训练与微调 · 难度: 进阶 · 关联讲座: L09
SimPO 是 DPO 的一个重要变体,通过去除对参考模型的依赖、引入长度归一化和 margin 机制,在保持偏好优化目标的同时大幅降低了训练资源需求。本文从数学角度对比两者的目标函数差异及其实际影响。
📐 SimPO 与 DPO 的对比推导
DPO 需要 reference model 计算 log prob 比值,SimPO 直接去掉这一依赖,在长度归一化的 log prob 上做偏好优化:
JSimPO=−logσ(∣yw∣βlogπθ(yw∣x)−∣yl∣βlogπθ(yl∣x)−γ)
其中 ∣y∣ 是回复的 token 长度,γ>0 是 margin 超参数,β 控制偏好信号强度。
关键区别:
- DPO 目标:πref(yw∣x)πθ(yw∣x)>πref(yl∣x)πθ(yl∣x)(相对于参考模型的比值)
- SimPO 目标:∣yw∣1logπθ(yw∣x)>∣yl∣1logπθ(yl∣x)+γ(绝对 log prob,长度归一化)
好处:无需加载 reference model,训练时显存减半;长度归一化防止模型通过生成短回答来”作弊”。