[ PROMPT_NODE_22882 ]
dpo-variants
[ SKILL_DOCUMENTATION ]
# DPO 变体
TRL 中直接偏好优化 (DPO) 损失变体的完整指南。
## 概览
DPO 使用偏好数据(选中/拒绝配对)优化模型。TRL 支持 10 多种针对不同场景的损失变体。
## 损失类型
### 1. Sigmoid (标准 DPO)
**公式**:`-log(sigmoid(β * logits))`
**适用场景**:默认选择,通用偏好对齐
**配置**:
python
DPOConfig(
loss_type="sigmoid",
beta=0.1, # KL 惩罚
per_device_train_batch_size=64,
learning_rate=1e-6
)
### 2. IPO (身份策略优化)
**公式**:`(logits - 1/(2β))²`
**适用场景**:更好的理论基础,减少过拟合
**配置**:
python
DPOConfig(
loss_type="ipo",
beta=0.1,
per_device_train_batch_size=90,
learning_rate=1e-2
)
### 3. Hinge (SLiC)
**公式**:`ReLU(1 - β * logits)`
**适用场景**:基于边界的目标函数
**配置**:
python
DPOConfig(
loss_type="hinge",
beta=0.1,
per_device_train_batch_size=512,
learning_rate=1e-4
)
### 4. Robust DPO
**公式**:带有标签平滑的 Sigmoid,用于噪声鲁棒性
**适用场景**:存在噪声的偏好标签
**配置**:
python
DPOConfig(
loss_type="robust",
beta=0.01,
label_smoothing=0.1, # 噪声概率
per_device_train_batch_size=16,
learning_rate=1e-3,
max_prompt_length=128,
max_length=512
)
### 5. BCO Pair (二分类)
**公式**:训练二分类器 (选中=1, 拒绝=0)
**适用场景**:成对偏好数据
**配置**:
python
DPOConfig(
loss_type="bco_pair",
beta=0.01,
per_device_train_batch_size=128,
learning_rate=5e-7,
max_prompt_length=1536,
max_completion_length=512
)
### 6. SPPO Hard
**公式**:将选中项推向 0.5,拒绝项推向 -0.5
**适用场景**:纳什均衡,稀疏数据
**配置**:
python
DPOConfig(
loss_type="sppo_hard",
beta=0.1
)
### 7. DiscoPOP
**公式**:对数比率调制损失
**适用场景**:自动化损失发现
**配置**:
python
DPOConfig(
loss_type="discopop",
beta=0.05,
discopop_tau=0.05,
per_device_train_batch_size=64,
learning_rate=5e-7
)
### 8. APO Zero
**公式**:增加选中项概率,降低拒绝项概率
**适用场景**:模型表现差于获胜输出时
**配置**:
python
DPOConfig(
loss_type="apo_zero",
beta=0.1,
per_device_train_batch_size=64,
learning_rate=2e-7,
max_prompt_length=512,
max_compl