Shortcuts

torchtune.rlhf.loss.SimPOLoss

torchtune.rlhf.loss.SimPOLoss = <function SimPOLoss>[source]

使用无参考奖励的简单偏好优化:https://arxiv.org/abs/2405.14734。 论文的直觉:

SimPO的有效性归功于一个关键设计:使用序列的平均对数概率作为隐式奖励。此外,我们在Bradley-Terry目标中引入了一个目标奖励边际,以鼓励获胜和失败响应之间的更大边际,从而进一步增强算法的性能。

基于TRL实现: https://github.com/huggingface/trl/blob/98ad01ddfd1e1b67ec018014b83cba40e0caea66/trl/trainer/cpo_trainer.py#L603

SimPO 与 DPO 非常相似,但使用平均对数概率来消除在训练期间需要参考模型来规范策略的需求。它还使用目标奖励边际来引导策略生成更好的响应。这与 IPOLoss 中的直觉类似,但我们不是针对参考策略和策略模型之间的边际进行优化,而是针对所选和拒绝响应之间的边际进行优化。

Parameters:
  • beta (float) – 相当于DPO损失的温度缩放参数,通常在2.0到2.5之间。默认值为2.0。

  • gamma (float) – 目标奖励边际超参数,通常我们有 gamma in (0, 1.5]。 默认值为0.5。

  • label_smoothing (float) – 参数编码关于标签的不确定性。默认值为0。

Type:

SimPO