跳转至

IOPO: Empowering LLMs with Complex Instruction Following via Input-Output Preference Optimization

会议: ACL 2025 / arXiv: 2411.06208 / 代码: GitHub / 领域: LLM对齐 / 指令遵循 / 关键词: instruction following, preference optimization, input preference, multi-constraint, DPO, Bradley-Terry

一句话总结

提出 IOPO(Input-Output Preference Optimization),在传统 DPO 仅优化输出偏好的基础上,引入输入偏好建模——让模型学习"给定回复 y,哪个指令 x 更匹配",从而增强对复杂多约束指令的细粒度感知能力;同时构建了包含 120K 训练数据、1K 评测数据、覆盖 5 大类 26 个约束维度的 Trace 基准。

研究背景与动机

领域现状:LLM 的指令遵循(Instruction Following)能力至关重要,尤其随着 Agent 和复杂应用的普及,用户给出的指令越来越复杂——一条指令可能同时包含长度限制、格式要求、语言约束、内容约束等多个细粒度约束条件(multi-constraint)。

现有痛点: 1. 评测不足:已有基准如 IFEval 仅有约 500 条评测数据,约束维度有限、覆盖不全面,缺乏大规模训练数据支持 2. 算法缺失:没有专门为提升复杂指令遵循能力设计的对齐算法——现有 DPO/RLHF 都是"给定同一指令 x,比较不同回复 y 的好坏"

核心矛盾:DPO 系列方法只建模输出偏好,相当于只告诉模型"这个回复好/不好",但不教模型"为什么好/不好"——面对包含多个细粒度约束的复杂指令,仅靠比较回复难以让模型精确感知每个约束是否被满足。

要解决的问题:如何让模型在对齐阶段更深入地理解指令中的每个约束?

切入角度:反转偏好学习的方向——除了正向的"给定指令,哪个回复更好",还增加反向的"给定回复,哪个指令更匹配"。这种输入偏好学习迫使模型关注指令中的细粒度约束差异。

核心 idea:构建输入-输出偏好组(preference group),用四元组 \((x_1, y_1, x_2, y_2)\) 同时学习输出偏好和输入偏好,通过 Group-based Bradley-Terry 模型统一建模。

方法详解

整体框架

IOPO 包含两大贡献:

  1. Trace 基准:自动化构建覆盖 5 大类 26 个约束维度的复杂指令数据集(119K 训练 + 1K 评测)
  2. IOPO 对齐算法:基于 group-based Bradley-Terry 模型,同时优化输入偏好和输出偏好

Trace 基准构建流程

Trace 的构建包含五个阶段:

  1. 约束分类体系(Taxonomy):通过 LLM 从大量开源简单指令中归纳,再经人工精修,形成 5 类约束类型(Content / Situation / Style / Format / Example)和 26 个约束维度
  2. 约束扩展(Constraint Expansion):利用 LLM 将简单指令扩展为包含多约束的复杂指令
  3. 指令结构化(Instruction Structuring):将扁平文本结构化为 Task Description + Constraints + Input 三段式
  4. 质量控制(Quality Control):用 LLM 检查冗余性、完整性等无效情况并修正
  5. 回复生成与评估(Response Generation):用 LLM 生成回复,再用 LLM 评分(0-10),仅保留满分(全部约束均满足)的数据用于 SFT

数据统计:训练集 119,345 条指令,评测集 1,042 条;每条指令约束数量 1-15 个,平均训练 4.36 个、评测 4.89 个。评测集经过专业标注团队人工验证,三人标注一致率 95%。

评测协议

使用 GPT-4o 对每条指令的每个约束评分(0-10),整体指令遵循分数 IF 的计算方式:对每条指令取所有约束评分的平均值,只有平均分恰好等于满分 10(即所有约束全部满足)时,该条指令才计为"正确遵循"。这是一个非常严格的全约束满足标准。

IOPO 算法:核心设计

偏好数据构建:构造一对指令 \((x_1, x_2)\),其中 \(x_2\)\(x_1\) 的基础上修改/删除了部分约束,对应回复分别为 \(y_1, y_2\)。这样可以得到四个输入-输出对:

  • 匹配组 \(\mathcal{G}_1\)\(\{(x_1, y_1), (x_2, y_2)\}\)(指令和回复配对正确)
  • 不匹配组 \(\mathcal{G}_2\)\(\{(x_1, y_2), (x_2, y_1)\}\)(指令和回复交叉错配)

理论推导:基于 DPO 的奖励函数重参数化,将 group-level 的 Bradley-Terry 偏好概率展开为:

\[p(\mathcal{G}_1 \succ \mathcal{G}_2) = \sigma\left(\frac{\Pi_1 + \Pi_2}{2}\right)\]

其中 \(\Pi_1, \Pi_2\) 各自包含输出偏好项(Output)和输入偏好项(Input)。以 \(\Pi_1\) 为例:

  • Output 项:固定 \(x_1\),比较在 \(x_1\)\(y_1\)\(y_2\) 的 log-ratio 差异 → 标准 DPO 逻辑
  • Input 项:固定 \(y_1\),比较在 \(y_1\)\(x_1\)\(x_2\) 的 log-ratio 差异 → 新增的输入偏好学习

\(\Pi_2\) 对称地对 \((x_2, y_2)\) 做同样的双向偏好建模。

损失函数

最终 IOPO 损失为最大化匹配组优于不匹配组的对数似然:

\[\mathcal{L}_{\text{IOPO}}(\pi_\theta) = -\mathbb{E}_{i \sim D}\left\{\log\left[\sigma\left(\frac{\Pi_1(\pi_\theta) + \Pi_2(\pi_\theta)}{2}\right)\right]\right\}\]

其中 \(i = (x_1, y_1, x_2, y_2)\)。关键洞察:这个损失自然分解为 Output 偏好(比较回复好坏)和 Input 偏好(比较指令匹配度)两部分,且它们通过 sigmoid 内部的加法联合优化——两种偏好信号互相增强。

训练细节

  • 基座模型:Qwen2-7B-Instruct, LLaMA3.1-8B-Instruct
  • Trace 基准构建使用 Qwen2-72B-Instruct
  • SFT 学习率 1e-4,DPO/IOPO 学习率 5e-6
  • 最大长度 6000,训练 3 个 epoch,\(\beta = 0.1\)
  • 基于 LLaMA-Factory 实现,4x8 GPU 并行训练,micro batch size 为 1/GPU

实验关键数据

主实验(Table 3:域内 Trace + 域外 IFEval/CFBench/ComplexBench)

Qwen2-7B 基座:

方法 Trace IF-S Trace IF-M IFEval S-Acc IFEval L-Acc CFBench CSR CFBench ISR CFBench PSR ComplexBench
Instruct 72.5 54.5 51.6 56.4 75.8 39.1 50.2 68.1
SFT 76.0 56.1 52.3 54.2 77.8 40.4 52.9 68.2
PPO 77.0 57.7 51.4 53.8 76.2 38.8 50.6 68.6
ORPO 77.9 61.7 53.1 56.9 79.7 45.9 57.0 69.1
SimPO 78.3 63.6 52.2 57.6 78.4 45.0 57.6 67.8
DPO 79.0 67.2 52.7 58.2 80.0 45.1 57.9 70.9
IOPO 82.0 (+3.0) 68.9 (+1.7) 59.9 (+7.2) 63.6 (+5.4) 80.7 (+0.7) 47.0 (+1.9) 58.7 (+0.8) 72.6 (+1.7)

LLaMA3.1-8B 基座:

方法 Trace IF-S Trace IF-M IFEval S-Acc IFEval L-Acc CFBench CSR CFBench ISR CFBench PSR ComplexBench
DPO 79.0 69.2 71.5 76.5 80.8 48.1 59.8 70.8
IOPO 81.5 (+2.5) 70.7 (+1.5) 78.2 (+6.7) 81.0 (+4.5) 81.8 (+1.0) 49.9 (+1.8) 61.1 (+1.3) 71.8 (+1.0)

消融实验(Table 4)

模型 配置 Trace IF-S IFEval S-Acc CFBench CSR ComplexBench
Qwen2-7B IOPO (完整) 82.0 59.9 80.7 72.6
w/o Output Pref (仅输入偏好) 81.0 (-1.0) 55.1 (-4.8) 79.4 (-1.3) 71.0 (-1.6)
w/o Input Pref (仅输出偏好) 80.9 (-1.1) 56.7 (-3.2) 79.7 (-1.0) 71.3 (-1.3)
LLaMA3.1-8B IOPO (完整) 81.5 78.2 81.8 71.8
w/o Output Pref 81.5 (0.0) 77.3 (-0.9) 80.6 (-1.2) 69.2 (-2.6)
w/o Input Pref 79.0 (-2.5) 77.9 (-0.3) 80.9 (-0.9) 70.1 (-1.7)

计算开销分析(Table 5)

指标 SFT DPO IOPO
GPU 显存 1x 2x 4x
训练时间 14.54h 26.30h 34.27h
推理速度 1x 1x 1x

关键发现

  1. 域内外均一致提升:IOPO 在域内 Trace 上比 DPO 平均提升 2.75%,域外三个基准上平均提升 2.84%(Qwen2-7B),证明泛化能力强
  2. 输入输出偏好互补:移除输出偏好平均降约 2%,移除输入偏好平均降约 1.5%,两者均不可缺少
  3. IFEval 上优势最大:IOPO 比 DPO 在 IFEval 上提升 7.2%(S-Acc),远超其他数据集——说明输入偏好对可验证型约束帮助最大
  4. 非数据量驱动:控制 token 数量相同的对比实验(DPO* vs IOPO)证明性能提升来自算法设计而非更多训练数据
  5. 推理无额外开销:训练时 4x 显存,但推理速度完全相同——部署成本为零

亮点与洞察

  1. "输入偏好"是范式级创新:之前所有对齐方法都只做输出偏好。IOPO 首次系统性引入输入偏好——"给定回复反推哪个指令更匹配",打开了偏好学习的新维度
  2. Group-based Bradley-Terry 建模优雅:将四元组建模为匹配组 vs 不匹配组的偏好,数学上干净地统一了输入偏好和输出偏好
  3. 约束感知是关键:消融实验表明输入偏好的贡献与输出偏好相当,说明"教模型区分约束差异"和"教模型生成更好回复"同等重要
  4. Trace 基准填补空白:26 个约束维度、5 类约束类型、120K 训练数据,是目前最全面的复杂指令遵循基准
  5. 数据构建方法可扩展:通过约束修改自动生成输入偏好对,无需额外人工标注

局限性 / 可改进方向

  1. 训练代价较高:4x 显存 + 2.4x 训练时间(vs SFT),限制了在更大模型上的应用
  2. 训练集未经人工验证:120K 训练集仅靠自动流程,可能存在噪声
  3. 输入偏好对构建依赖约束可分离性:对隐含约束或高度耦合约束,修改单个约束生成负例可能不准确
  4. 模型规模有限:仅在 7B/8B 上验证,更大规模效果待确认
  5. 未与 constraint-aware prompting 方法对比:如 constraint decomposition、self-verification 等轻量替代方案
  6. 未来方向:引入推理过程(reasoning)增强约束感知——在 o1/DeepSeek-R1 时代尤为值得探索

相关工作与启发

  • vs DPO/SimPO/ORPO:都只做输出偏好,IOPO 增加输入偏好是本质区别;SimPO 去参考模型、ORPO 合并 SFT——与 IOPO 正交,可结合
  • vs Conifer:Conifer 提出渐进式约束学习,Trace 在数据规模和约束体系上更全面
  • vs IFEval/CFBench/ComplexBench:纯评测集,Trace 同时提供训练集和评测集
  • 启发:输入偏好思想可推广——安全对齐中"给定安全回复,哪个 prompt 更匹配"、代码生成中"给定代码,哪个需求描述更匹配"

评分

维度 分数 说明
新颖性 ⭐⭐⭐⭐ 输入偏好是对偏好学习范式的重要拓展,Group-based BT 建模简洁优雅
实验充分度 ⭐⭐⭐⭐⭐ 2 基座、4 评测集、消融、开销分析、token 控制实验,非常全面
写作质量 ⭐⭐⭐⭐ 结构清晰,数学推导严谨,演进逻辑自然
综合价值 ⭐⭐⭐⭐ 基准+算法双贡献,推动复杂指令遵循领域;4x 显存是实际障碍