KTO(Kahneman-Tversky Optimization)
一句话:不需要成对偏好数据,每条样本只要一个「好/坏」二元标签;损失函数借鉴前景理论的「损失厌恶」设计,让模型在好样本上抬高隐式 reward、在坏样本上压低,对正负样本不均衡天然鲁棒。论文 KTO: Model Alignment as Prospect Theoretic Optimization(Ethayarajh et al., 2024)。
提出年份:2024 · 机构/团队:Stanford / Contextual AI · 会议/来源:ICML 2024 / arXiv:2402.01306
前置阅读:DPO、Reward Model
直觉与动机
DPO 要求成对偏好数据:同一 prompt 下两个回答
第二个动机来自行为经济学。Kahneman & Tversky 的前景理论指出:人对收益和损失的感受是不对称的——同样幅度的损失带来的痛苦,大于等量收益带来的快乐(损失厌恶)。KTO 论文进一步论证:包括 DPO 在内的一类成功对齐损失,之所以比朴素的交叉熵好,部分原因正是它们隐式地编码了这类人类感知偏置,作者把这类损失统称为 HALO(Human-Aware Loss)。KTO 则把损失厌恶显式写进损失函数,并用两个权重
方法与公式
沿用 DPO 的隐式 reward 定义:
前景理论的价值函数是相对于一个参考点来度量收益/损失的。KTO 把参考点
实现上
KTO 损失就是最大化价值(即最小化负价值):
读法:好样本要让

图源:Ethayarajh et al., KTO: Model Alignment as Prospect Theoretic Optimization, arXiv:2402.01306(用于学习注解,版权归原作者)
与 baseline 对比
| 维度 | DPO | KTO |
|---|---|---|
| 数据形式 | 成对 | 单条 |
| 数据获取成本 | 高(需排序) | 低(点赞/点踩、单测通过即可) |
| 是否需要 reference | 需要 | 需要(隐式 reward 与参考点都用到) |
| 损失结构 | 成对 sigmoid 排序 | 单样本前景理论价值函数 |
| 正负不均衡 | 需配对,天然平衡 | 用 |
| batch 内耦合 | 无(每对独立) | 有(参考点 |
| 同数据量效果 | 强基线 | 论文中在 1B~30B 规模可匹配或超过 DPO |
核心权衡:KTO 用「batch 内共享参考点」这点耦合,换来了「不需要成对数据」的巨大数据优势。当你手上本来就是成对数据时,DPO 通常是更直接的选择;当数据天生是二元、或正负严重不均衡时,KTO 才显出价值。
实现要点
# KTO loss:注意参考点 z0 在 batch 内共享、且 detach
def kto_loss(policy, ref, x, y, label, beta, lam_D, lam_U):
# label: 1=desirable, 0=undesirable
pi = policy.seq_logprob(x, y)
with torch.no_grad():
rf = ref.seq_logprob(x, y)
r_hat = beta * (pi - rf) # 隐式 reward
# 参考点 z0: 用错位配对样本估计 KL, 不回传梯度
z0 = compute_kl_reference(policy, ref, x).detach()
v_D = lam_D * torch.sigmoid(r_hat - z0) # 好样本: 越超过 z0 越好
v_U = lam_U * torch.sigmoid(z0 - r_hat) # 坏样本: 越低于 z0 越好
v = torch.where(label == 1, v_D, v_U)
loss = (torch.where(label == 1, lam_D, lam_U) - v).mean()
return loss- 参考点
必须 detach,它是「当前策略平均偏移多少」的基准估计,不是优化对象;若让它带梯度会破坏前景理论的语义并使训练不稳。 - batch 内样本不独立。因为
跨样本估计,KTO 的有效性对 batch 内好/坏样本的混合比例敏感——尽量保证每个 batch 同时含好样本和坏样本,否则参考点估计偏。 - 与 DPO 一样:logprob 对 response token 求和、mask 掉 prompt 与 padding;reference 可冻结或预计算缓存。
- 现成实现:HF TRL 的
KTOTrainer,数据集每行给prompt / completion / label(布尔),并暴露desirable_weight、undesirable_weight对应。
调参与实践经验
含义同 DPO(KL 偏移强度),常用量级 附近;可先沿用 DPO 的经验值再微调。 - 不均衡时调
是第一旋钮。正负样本比例失衡(典型如线上日志里点踩远少于点赞,或反之)时,按数量反向设置 ,目标是让两类对梯度的总贡献大致相当。论文给出的实用区间: 左右,可据实际类别比扫一扫。 - batch 要足够大且混合,以保证参考点
估计稳定;过小的 batch 会让 噪声大。 - 同样需要先 SFT 再 KTO:reference 必须是个能用的指令模型。
- 数据来源优势要用好:KTO 最大的价值在于能直接消费成本极低的二元反馈(线上点赞点踩、自动可验证信号如单测通过/失败)。当反馈天然二元时,与其硬凑成对数据做 DPO,不如直接 KTO。
- 监控指标:分别看好样本与坏样本上的隐式 reward 均值是否朝预期方向分离;若坏样本 reward 不降,多半是
太小或 batch 内坏样本太少。
参考文献
- Ethayarajh et al., 2024. KTO: Model Alignment as Prospect Theoretic Optimization. arXiv:2402.01306
- Rafailov et al., 2023. Direct Preference Optimization: Your Language Model is Secretly a Reward Model. arXiv:2305.18290
- Kahneman & Tversky, 1979 / 1992. Prospect Theory 及 Advances in Prospect Theory: Cumulative Representation of Uncertainty.(损失厌恶与价值函数)