Learning to Generate Structured Output with Schema Reinforcement Learning¶
会议: ACL 2025
arXiv: 2502.18878
代码: https://github.com/thunlp/SchemaReinforcementLearning
领域: 强化学习
关键词: structured generation, JSON schema, reinforcement-learning, LLM, benchmark
一句话总结¶
提出 SchemaBench 基准(约4万条 JSON schema)和 Schema Reinforcement Learning (SRL) 训练框架,通过细粒度 schema 验证器提供密集奖励信号,结合 Thoughts of Structure (ToS) 推理机制,将 LLM 的复杂 JSON 生成准确率提升高达16%,同时不损害通用推理能力。
研究背景与动机¶
大语言模型在实际应用中越来越多地需要生成结构化输出(尤其是 JSON 格式),以便与自动化系统和 API 对接。当前有几种主流方法:
Prompting:直接提示生成,对简单 schema 有效,但在复杂逻辑下容易出错
Tool Calls:把模型输出转换为 JSON,但常遗漏 schema 特定语法
Constrained Decoding(如 Outlines、SGLang):通过限制解码空间保证有效 JSON,但可能降低输出质量
核心痛点:
- 缺乏全面的基准来评估模型在复杂 JSON schema 下的生成能力
- 现有模型(包括 GPT-4o)在复杂 schema 下的整体正确率仅约 61%
- SFT 方法面临高质量训练数据匮乏的问题——自动生成器和模型 prompting 均难以为复杂 schema 规模化生成合规 JSON
- 即使经过 SFT,模型在某些场景下仍无法学会基本的 JSON 语法
方法详解¶
1. SchemaBench 基准构建¶
从 JSON Schema Store 和 GitHub 爬取 108,528 个 schema 文件,经过外部 URI 过滤(保留 46,280 个)和语法合规验证(移除 5,574 个),最终得到约 40,706 个有效 schema(训练集 36,960 / 测试集 3,746)。平均字符长度约 35,754,平均嵌套深度 16.7 层。
任务一:Schema-only Generation(三个子任务):
- Complex Schema:测试模型在复杂引用(\)和逻辑组合(anyOf/oneOf)下生成有效 JSON 的能力
- Custom Formats:测试模型理解自然语言描述的自定义格式约束(电话号码、文件路径、RGB 颜色、base64 编码等),通过 const/pattern 字段验证
- Escape Translation:测试模型正确处理转义字符(\"、\、\n 等)的能力,任何转义错误会导致整个 JSON 无效
任务二:Schema-constrained Reasoning:在 GSM8K、MATH-500、MMLU、ARC-Challenge 上要求模型在 schema 约束下生成答案,同时评估推理能力和 JSON 合规性。
2. Schema Reinforcement Learning (SRL)¶
基于 PRIME 框架的在线强化学习方法,分三个阶段迭代进行:
采样阶段:使用当前策略模型为每个 schema 任务生成 K 个候选响应。引入 Thoughts of Structure (ToS) 机制——受 CoT 启发,模型在生成 JSON 之前先以 JSON5 注释形式进行结构推理,阐述每个键值对的生成理由。验证时忽略注释,仅验证最终 JSON。
奖励阶段:
- 细粒度 schema 验证器:不使用简单的二值奖励(通过/不通过),而是计算 correctness ratio(正确 token 数 / 总 token 数)。对于仅部分有效的 JSON,计算有效部分的正确比例;对于解析失败的 JSON,在错误位置截断并填充控制字符继续验证剩余部分。这大幅缓解了奖励稀疏问题。
- 优势估计采用 leave-one-out 方式:将当前响应的奖励与其余 K-1 个响应的平均奖励做差。
更新阶段:使用 Cross Entropy loss 更新奖励模型,PPO 算法(带 clipping)更新策略模型。
3. 关键设计选择¶
- 训练使用 SchemaBench 训练集的 37K schema,batch size 32,学习率 5e-7
- 补充训练数据(Collected JSON)包括 UltraChat 6K、UltraInteract 6K、xLAM 20K、Glaive 20K、ToolACE 10K
- Tool-calling 数据集中的工具定义被转换为 JSON schema 格式
实验关键数据¶
表1:SchemaBench 主实验结果(%)¶
| 模型 | Complex | Custom | Escape | Overall | GSM8K | MATH-500 |
|---|---|---|---|---|---|---|
| GPT-4o | 84.47 | 61.56 | 37.14 | 61.06 | 97.80 | 41.40 |
| Qwen-2.5 7B | 72.42 | 43.60 | 11.11 | 42.38 | 94.54 | 38.60 |
| LLaMA-3.1 8B | 64.26 | 33.07 | 12.02 | 36.45 | 95.91 | 85.60 |
| LLaMA-3.1 8B SFT | 74.56 | 46.64 | 60.58 | 60.59 | 89.46 | 63.80 |
| LLaMA-3.1 8B SRL | 90.48 | 78.67 | 69.86 | 79.67 | 90.90 | 88.00 |
| LLaMA-3.2 3B | 49.84 | 27.31 | 8.37 | 28.51 | 80.97 | 35.40 |
| LLaMA-3.2 3B SFT | 71.71 | 45.52 | 52.21 | 56.48 | 82.94 | 44.40 |
| LLaMA-3.2 3B SRL | 82.25 | 66.13 | 69.10 | 72.50 | 84.23 | 43.20 |
关键发现:SRL 在所有 schema-only 子任务上大幅超越 SFT。LLaMA-3.1 8B SRL 达到 79.67%,显著超过 GPT-4o 的 61.06%。
表2:BFCL-Live 下游任务结果(%)¶
| 模型 | Simple | Multiple | Parallel | Multi-Para. | Overall |
|---|---|---|---|---|---|
| GPT-4o Tool | 36.43 | 37.22 | 18.75 | 41.67 | 59.13 |
| LLaMA-3.1 8B | 0.39 | 0.00 | 0.00 | 0.00 | 24.08 |
| LLaMA-3.1 8B SFT | 72.09 | 68.76 | 50.00 | 66.67 | 52.69 |
| LLaMA-3.1 8B SRL | 72.09 | 73.10 | 75.00 | 50.00 | 70.10 |
| LLaMA-3.2 3B | 4.26 | 13.11 | 0.00 | 0.00 | 35.72 |
| LLaMA-3.2 3B SFT | 74.03 | 74.64 | 68.75 | 58.33 | 64.10 |
| LLaMA-3.2 3B SRL | 65.50 | 64.22 | 50.00 | 29.17 | 57.00 |
LLaMA-3.1 8B SRL 在 BFCL 下游 function calling 任务中达到 70.10%,超过所有对比方法。
消融实验¶
| 设置 | Schema (%) | MATH-500 | ARC-C |
|---|---|---|---|
| LLaMA-3.2 3B baseline | 28.51 | 35.40 | 79.27 |
| + ORM | 31.15 | 39.40 | 78.92 |
| + ToS | 44.89 | 36.60 | 80.38 |
| + Fine-grained Validator | 35.59 | 35.60 | 79.10 |
ToS 贡献最大(+13.74%),细粒度验证器也有显著提升(+4.44%),两者互补。
亮点¶
- SchemaBench 是首个大规模、高复杂度的 JSON schema 生成评测基准,涵盖3类挑战任务,schema 平均嵌套深度 16.7,贴近真实应用场景
- 细粒度 schema 验证器解决了结构化生成中的稀疏奖励问题,对部分正确的 JSON 也能给出有效梯度信号,显著优于简单的二值奖励
- Thoughts of Structure (ToS) 机制新颖,让模型在生成 JSON 前先推理结构,利用 JSON5 注释保持格式兼容性,消融实验中贡献最大
- SRL 不仅大幅提升结构化生成能力,还较好地保留了通用推理能力(MATH-500、ARC-C 未明显下降),与 SFT 掉分形成对比
- RL 训练效率高,约训练到一半时即可超过 SFT 基线
局限与展望¶
- 格式局限:目前仅面向 JSON schema,未扩展到 YAML、XML、TOML 等其他结构化格式
- 效率瓶颈:SRL 的在线采样阶段计算开销大,需要反复生成和验证
- 小模型泛化受限:LLaMA-3.2 3B SRL 在 BFCL 下游任务上反而不如 SFT(57.00% vs 64.10%),说明 SRL 在极小模型上的迁移能力有待提升
- 缺少更多对比:未评测 Claude/Gemini 等更强模型,也未与 GRPO、DPO 等其他 alignment 方法对比
- ToS 注释质量:未分析 ToS 注释的实际内容质量,也未探讨推理长度与性能的关系
与相关工作的对比¶
| 方法类别 | 代表工作 | 与本文关系 |
|---|---|---|
| Prompting 方法 | OpenAI Structured Outputs | 本文基准证明 prompting 在复杂 schema 下不足 |
| Constrained Decoding | Outlines, SGLang, XGrammar | 可与 SRL 互补,但可能降低输出质量 |
| Tool Call 方法 | ToolLLM, Toolformer | 依赖后处理,难以对齐标准 schema |
| 结构化生成基准 | BFCL, StructuredBench | SchemaBench 更大更复杂(40K schemas) |
| RL for LLM | PRIME, PPO, RLHF | SRL 在 PRIME 基础上引入 schema 验证器和 ToS |
评分¶
- 新颖性: ⭐⭐⭐⭐ — SchemaBench 填补了复杂 JSON 生成评测空白,ToS 和细粒度验证器是有意义的创新
- 实验充分度: ⭐⭐⭐⭐ — 多模型、多任务对比全面,消融实验清晰,但缺少更强闭源模型和更多 RL 方法对比
- 写作质量: ⭐⭐⭐⭐ — 结构清晰,图表丰富,问题动机阐述充分
- 价值: ⭐⭐⭐⭐⭐ — JSON 结构化生成是 LLM 应用中的核心问题,基准和方法具有很高的实用价值