先思考后约束:大语言模型的统一解码框架 Thinking Before Constraining: A Unified Decoding Framework for Large Language Models
提出In-Writing框架,先自由推理再触发结构化解码,实现精确格式输出而不损失推理能力
前置知识
有限状态自动机(FSM)
有限状态自动机是一个5元组 (Q, Sigma, delta, q_0, F),其中 Q 是有限状态集合,Sigma 是有限字母表,delta: Q x Sigma -> Q 是转移函数,q_0 在 Q 中是初始状态,F 包含于 Q 是接受状态集合。在约束解码中,FSM用于表示正则表达式或文法约束,在每一步解码时只允许选择与当前状态一致的token,确保输出符合预定义的结构。例如,要生成JSON格式,FSM的状态转移会确保大括号、键值对等结构的正确性。
本文的约束解码核心就是基于FSM来掩码无效token,理解FSM如何编码正则表达式约束对于理解为什么传统约束解码会限制推理能力至关重要。论文中定义的state -1表示自由推理状态,state 0表示FSM约束状态,这个状态切换机制是In-Writing的关键创新。
约束解码(Constrained Decoding)
约束解码是一种在LLM生成文本时强制其符合特定格式的技术。通过在每一步采样时掩码掉不符合正则表达式或文法约束的token概率,确保输出满足预定义的结构。具体来说,给定正则表达式 rx 和已生成序列 s,构造掩码 m(s, rx) 将无效token的概率设为负无穷大,然后从掩码后的概率分布采样。这种方法能保证100%的语法正确性,但论文发现过早应用约束会降低推理性能,特别是在需要多步推理的任务如GSM8K上。
这是本文的核心技术基础。作者证明了传统约束解码将推理过程也限制在格式约束下,导致逻辑上有效的推理路径因微小结构违规被丢弃。理解这个缺陷是理解为什么需要将推理与格式化解耦的前提。
思维链(Chain-of-Thought, CoT)
思维链是一种提示策略,要求模型先显式生成推理步骤再给出最终答案。从概率角度,答案 A 被建模为通过潜在推理轨迹 R 产生:P(A|q) = sum_R P(A|R,q)P(R|q)。这种中间推理步骤显著提升了模型在复杂任务上的表现。在本文中,CoT推理被视为应该自由进行的阶段,而最终答案需要结构化提取。In-Writing框架本质上保留了CoT的表达能力,同时在最终答案提取阶段引入格式约束。
论文的核心动机就是保留CoT的推理表达能力,同时确保结构化输出。公式给出了CoT的概率表示,展示了In-Writing如何保持这个表达力。理解CoT对于理解为什么格式约束应该延迟到推理之后很关键。
研究动机
现有的LLM输出控制方法面临三难困境:自然生成虽然允许灵活推理但难以验证,约束解码确保格式标准但过早限制推理能力,两阶段NL-to-Format方法虽然灵活但增加计算成本和冗余且不保证结构。具体来说,在GSM8K数学推理任务上,传统约束解码使LLaMA3-8B准确率从66.2%降至48.9%;在Last Letter任务上,Gemma2-9B从9.3%降至39%(波动极大)。CRANE方法使用定界符(<< >>)切换但依赖复杂提示,在GSM-Symbolic上导致37%的性能下降(从约70%降至33%)。这些数据表明,在推理过程中强制格式约束会严重损害模型性能,特别是在数学和符号推理任务中。
本文的目标是本文的目标是设计一个统一的解码框架,在一个推理调用内同时实现(1)保持自然生成的推理表达能力,(2)确保输出的严格结构符合性,(3)最小化计算开销。具体来说,希望在GSM8K等推理任务上超越自然生成的66.2%准确率,同时达到100%的解析率,而不是像NL-to-Format那样依赖额外的解析模型(使用Qwen3-32B作为解析器增加大量延迟)。
与已有工作不同的是,本文的独特切入角度是将约束解码重新定义为推理后解析器和修正器而非生成方法。与NL-to-Format(两阶段流水线)不同,In-Writing在单次调用内完成;与CRANE(定界符交织)不同,In-Writing通过触发token显式解耦推理和格式化,而不是将推理限制在受限字段内。核心创新是延迟约束应用:模型先在state -1自由推理,直到触发token(如或{)出现,才切换到state 0应用FSM约束,只影响最终答案提取部分。这种设计避免了过早触发问题——即约束解码中断 ongoing推理的失败模式。
核心方法
In-Writing框架的整体思路分为两个阶段:第一阶段是自由推理,模型不受任何格式限制地生成思维链;第二阶段是结构化生成,当检测到触发token时,切换到基于FSM的约束解码。这个直觉来源于图像修复中的扩散模型类比:只在指定区域施加约束,其他区域保持自由。技术路线包括概率解耦(推理分布与格式约束独立)、状态机切换(state -1到state 0)和触发token策略选择。与现有方法相比,In-Writing不改变推理轨迹,只在最后添加格式约束,因此保持了CoT的表达力。作者进一步研究了触发token策略,发现只使用作为唯一触发(In-Writing*)可以几乎消除过早触发问题。
核心创新点是将推理过程从格式约束中解耦,通过延迟约束应用来避免推理空间的剪枝。与已有方法的本质区别在于:(1)与CRANE相比,CRANE使用定界符(<< >>)将推理限制在特定字段内,仍然在受限空间推理,而In-Writing让推理完全自由;(2)与传统约束解码相比,传统方法从第一步就应用约束(通过指示函数强制推理在格式约束内),而In-Writing使推理独立于格式约束;(3)与NL-to-Format相比,不需要额外的解析模型,计算开销更小。另一个关键发现是约束解码不仅有解析作用,还有修正作用——通过token掩码自动纠正格式错误,例如将Helga映射到选项A。
方法步骤详情
In-Writing方法的完整步骤包括:输入包括正则表达式或文法rx、触发token集合、提示p和最大token数L。步骤1:初始化空序列s并获取提示token。步骤2-6:进入自由推理循环。每次迭代从LM logits中采样token t,如果t不在触发集合中,追加到序列s;如果检测到触发token,退出推理循环。步骤9-14:进入结构化生成阶段。构造掩码m(s, rx)使只允许符合rx的token,从掩码后的概率采样,追加到s,直到rx完成。步骤15:返回最终序列。输出格式通常为JSON,包含推理(可选)和final_answer字段。触发策略包括In-Writing-Base(使用{, {, }等)和In-Writing*(仅使用)。每个步骤的输入输出明确:自由推理接收问题输出推理文本,结构化生成接收推理上下文输出格式化答案。
技术新颖性
技术新颖性体现在四个方面:(1)概念创新:首次将约束解码定位为推理后解析器而非生成约束,改变了LLM结构化输出的范式;(2)算法创新:state-based切换机制(state -1自由,state 0约束)实现无缝转换,无需改变模型架构或训练;(3)理论贡献:概率公式证明解耦可行性,并分析过早触发问题;(4)实证发现:约束解码的自动修正能力,以及单触发策略的有效性。与2024-2025年的相关工作相比,In-Writing首次实现了推理表达力和格式保证的真正平衡,而之前方法总是牺牲一方。
实验结果
实验结果展示了四个核心发现:(1)In-Writing*在大多数设置下超越SOTA。在GSM8K上,LLaMA3-8B达到77.9%(vs Baseline 66.2%,NL-to-Format 74.7%),提升17.4%;在Last Letter上,Qwen3-1.7B达到69.7%(vs Baseline 33.6%,NL-to-Format 60.7%),提升36.1%;在Shuffled Objects上,Qwen3.5-9B达到95.1%(vs Baseline 80.3%,NL-to-Format 94.9%)。(2)解析率优势明显。In-Writing*在所有推理任务上达到100%解析率,而Baseline变化剧烈(GSM8K上Qwen3-1.7B仅47%,Qwen3-8B达100%)。(3)重叠分析显示In-Writing*比NL-to-Format更可靠。在Last Letter上,SmolLM3-3B的I\N(In-Writing*正确但NL-to-Format失败)达11.8%,而N\I仅0.7%。(4)CRANE在GSM-Symbolic上表现不佳。LLaMA3.1-8B仅33%,而In-Writing*达59%,说明CRANE的定界符约束显著损害符号推理能力。这些发现表明,延迟约束应用确实有效保护了推理能力,同时约束解码作为解析器表现出强大的修正能力。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| GSM8K(数学推理) | 准确率(%) | 77.9 | 66.2 (Natural) | +11.7% |
| Last Letter Concatenation(符号推理) | 准确率(%) | 69.7 (Qwen3-1.7B) | 33.6 (Natural) | +36.1% |
| Shuffled Objects(对象排列) | 准确率(%) | 95.1 (Qwen3.5-9B) | 80.3 (Natural) | +14.8% |
| GSM-Symbolic(符号泛化) | 准确率(%) | 59 (Llama3.1-8B) | 33 (CRANE) | +26% |
| MultiFin(金融分类) | 准确率(%) | 64.5 | 57.7 (Natural) | +6.8% |
局限与改进
作者承认的局限性包括:(1)缺乏针对In-Writing的提示优化,当前使用对NL友好的提示可能不是最优的;(2)Table 7显示存在 marginal cases(如GSM8K上N\I达1.9%)说明In-Writing并非完美;(3)多字段复杂提取场景未充分评估。我观察到的额外局限包括:(1)触发token依赖模型 tokenizer,不同模型的可能不同,需要适配;(2)在DDXPlus医疗诊断任务上,In-Writing表现不稳定(Llama3-8B仅30.6% vs Baseline 23.4%),可能因为任务特性不适合延迟约束;(3)额外5-20 token开销在极端长文本场景可能累积显著;(4)论文假设推理和答案可以清晰分离,但某些任务(如对话生成)推理和输出本身交织,可能不适用此框架。
独立分析的弱点
独立分析的弱点包括:(1)推理能力损失。虽然In-Writing保护推理,但仍有案例显示性能下降,可能因为最终JSON约束强制模型转换思维模式,尤其在需要输出中间步骤的符号任务。改进方向:研究更灵活的格式模式,允许推理步骤也部分结构化。(2)触发机制脆弱性。依赖特定token可能在罕见情况下失败(如模型从不输出)。改进方向:结合启发式(如推理token数阈值)作为备用触发条件。(3)错误传播。如果自由推理阶段产生根本性错误,约束解码无法修正。改进方向:探索多轮推理-约束迭代,而非单次。(4)提示敏感性。发现few-shot示例增加反而可能降低性能,因为强化answer is:前缀对baseline有利但不利于In-Writing。改进方向:专门设计In-Writing优化的提示模板。(5)语义解析不完美。如Table A.4.2示例显示,可能错误提取52500为52,因为只保留数字部分。改进方向:增强约束解码的语义理解,而非仅语法约束。
未来方向
作者提出的未来方向包括探索提示优化策略以进一步改善性能和稳定性。基于成果可延伸的方向包括:(1)扩展到复杂结构。当前主要聚焦单字段final_answer,可研究多字段嵌套结构(如JSON数组、XML树)的效果;(2)动态触发策略。根据任务类型自适应选择触发token,而非固定使用;(3)与其他技术结合。如与tool calling结合,让模型在推理中调用工具后再触发格式化;(4)跨语言评估。当前主要在英文任务,可测试中文等其他语言的效果;(5)理论分析。更深入研究为什么单触发策略有效,以及过早触发在不同任务类型中的分布;(6)工业部署研究。在生产环境中与现有API(如OpenAI的JSON mode)对比,评估延迟和成本的trade-off;(7)错误诊断。开发工具分析In-Writing失败案例的根本原因,帮助改进触发和格式设计。
复现评估
论文提供了良好的可复现性。代码已开源在GitHub(https://github.com/Nokia-Bell-Labs/In-Writing),基于Litelines库实现,该库是对Outlines的扩展,增加了allow_preamble和trigger_token_ids功能。实验使用的所有数据集均为公开数据集(GSM8K、Last Letter、Shuffled Objects、DDXPlus、MultiFin、Sports、Task 280、GSM-Symbolic),并使用与先前工作相同的预处理和数据划分。所有实验在NVIDIA A40 GPU上运行,使用Transformers库本地加载模型。论文详细描述了实验设置(seed=1、temperature=0、do_sample=False),并提供了提示模板和few-shot示例。实现不需要模型训练或微调,只需在推理时应用约束解码,因此复现难度较低。作者还报告了9次提示变化的均值和标准差,增强结果可靠性。唯一潜在障碍是需要访问用于NL-to-Format对比的Qwen3-32B模型,但论文使用开源模型替代,确保可复现性。
论文图表
Figure 1展示了一个舞蹈伙伴问题的具体案例。左边是Natural Generation,模型生成了完整的推理步骤(逐步追踪5次伙伴交换),但最终输出Helga!,这可能不符合选项格式(A/B/C/D/E)。右边是In-Writing,推理步骤完全相同,但最终输出为JSON格式{"final_answer": "A"},自动将Helga映射到选项A,并加上对勾标记表示正确解析。这张图直观展示了In-Writing如何保持推理能力同时提供可解析的输出,还展示了约束解码的自动修正能力(将名称映射到选项)。
这张图对理解论文至关重要,因为它(1)用具体例子说明In-Writing和Natural Generation的唯一区别在于最后格式化步骤,推理完全相同;(2)展示了约束解码的解析器角色——将自然语言答案转换为结构化选项;(3)提供了论文核心概念的视觉解释,帮助读者快速 grasp decoupling reasoning from formatting这一关键思想。没有这个图,读者可能难以理解In-Writing的实际工作机制和与传统方法的具体差异。