AdapTime: Enabling Adaptive Temporal Reasoning in Large Language Models¶
会议: ACL 2026 Findings
arXiv: 2604.24175
代码: https://github.com/Applied-Machine-Learning-Lab/ACL2026-AdapTime
领域: NLP 理解 / LLM 推理
关键词: 时间推理, 时序问答, 自适应规划, LLM Planner, 无外部工具
一句话总结¶
本文提出 AdapTime,把"时间推理"抽象为 reformulate / rewrite / review 三个可复用的原子动作,由 LLM Planner 根据问题与上下文自适应决定执行哪几步、按什么顺序执行,无需任何外部工具、手工规则或微调即可显著提升 LLM 在时序 QA 上的表现,在 DeepSeek-V3 上把 TimeQA-Easy 推到 85.4 EM。
研究背景与动机¶
领域现状:时序问答(Temporal QA)要求模型从含时间标注的文档中回答时间相关问题,如 "Terence Cooper 在 1966 年 3 月到 1969 年 10 月之间担任什么职位?"。现有方案大致两类——一类靠外部工具(QAaP 用 Python 字典做 check/match、Event-AL 用 Python 求解器、Step-back 用 retriever),另一类靠人工干预(Time-CoT 手工补 timeline、TG-LLM 手动修正难例的 temporal graph、TISER 同样依赖 TG)。
现有痛点:(1) 外部工具与人工规则使方法绑定到特定数据/场景,换 benchmark 就要重写;(2) 现有 pipeline 都是固定流程——对所有问题都按同一套"提取-推理-验证"顺序跑一遍,无视问题难度的差异。结果就是简单题被过度处理(推理冗余、引入错误),复杂题又因步骤不够而推不出来。
核心矛盾:时序问题的复杂度方差极大——"美国总统是谁"这样的简单查询和"在某个时间段内某人担任什么职位"这样的多跳推理本质上应该走不同的推理路径,但传统 fixed pipeline 强行用同一套流程处理所有问题。
本文目标:(1) 抽出一组LLM 自身就能完成的原子时序动作,去掉对外部工具/人工的依赖;(2) 让 LLM 自己根据问题特性决定调用哪些动作、按什么顺序,做到 per-instance 的自适应推理。
切入角度:作者发现现有方法虽然形式各异,本质都在做三件事之一——把复杂问题拆成子问题、把隐式时间表达改写成结构化形式、对答案做事实核验。如果这三件事都能由 LLM 自己 prompt 完成,那么外部工具就成了多余的。
核心 idea:定义 reformulate / rewrite / review 三个动作 + 一个 LLM Planner,让 Planner 根据问题与中间状态在线决定每步是否执行该动作,把"固定 pipeline"升级成"自适应规划"。
方法详解¶
整体框架¶
AdapTime 把时序推理拆成 3 个原子动作(Reformulate / Rewrite / Review)加 1 个 LLM Planner,四者用同一个 backbone、纯 prompt 实现,不调用任何外部工具。给定文档 \(C\) 和时序问题 \(Q\),Planner 在每个潜在动作点先做一次"是/否"决策:要不要先把 \(Q\) 拆成子问题、要不要把 \(C\) 重写成时间锚定的结构化表示、初始答案信心够不够要不要做事实核验。被选中的动作依次执行、子答案聚合,最终给出答案——简单题可能一步直答,难题才会走满三步。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["输入:文档 C + 时序问题 Q"] --> P1["LLM Planner 决策<br/>要不要拆问题"]
P1 -->|多跳/含时间约束| R1["Reformulate<br/>拆成可单点回答的子问题"]
P1 -->|单跳直答| P2["LLM Planner 决策<br/>要不要改写上下文"]
R1 --> P2
P2 -->|时间表达隐式分散| R2["Rewrite<br/>改写成日历日期锚定的时间线"]
P2 -->|时间已显式| ANS["在锚定事实上回答并聚合子答案"]
R2 --> ANS
ANS --> P3["LLM Planner 决策<br/>初始答案信心够不够"]
P3 -->|信心不足| R3["Review<br/>检索原文支撑句、冲突则修正"]
P3 -->|信心足够| OUT["最终答案"]
R3 --> OUT
三个动作 Reformulate / Rewrite / Review 全部由 LLM 纯 prompt 完成(关键设计 3 的 zero-tool 内化),Planner 在每个动作点门控是否执行。
关键设计¶
1. 三个原子时序推理动作:把已有方法的核心操作收敛成 LLM 能自主完成的最小动作集
现有 temporal QA 方法形式各异,但本质都在做"问题分解 / 上下文改写 / 答案核验"三件事之一,本文把它们抽象成三个纯 prompt 的正交动作。Reformulate 让 LLM 把含复杂时间约束或多跳的问题分解为 \(Q=\{q_1,\ldots,q_n\}\),每个 \(q_i\) 单点可答、最后聚合,例如 "Cooper 在某时间段担任什么职位" 拆成 "Cooper 担任过哪些职位" + "哪个职位的时间区间覆盖目标时段"。Rewrite 让 LLM 把 "during his presidency""after the war ended" 这类隐式时间表达改写成以日历日期为锚的显式时间线(code / timeline / temporal graph 任一形式),下游就能直接在锚定事实上推理。Review 让 LLM 检索能支撑当前答案的原文句子,证据缺失或冲突时修正答案。
这三个动作覆盖了 QAaP / Time-CoT / Event-AL / TG-LLM / TISER 的全部关键操作(表 1 给了逐项对照),但每个都是纯 prompt,去掉了对 Python interpreter、手工 timeline、难例标注的依赖,且三者正交解耦、可任意组合。
2. LLM Planner 自适应规划:让模型看一眼问题再决定走多深
固定 pipeline 对所有问题都按同一套顺序跑,简单题被过度推理反而引入噪声,难题又步骤不够推不出来。AdapTime 用一个同样是 LLM prompt 的 Planner(与执行共用 backbone)在每个动作点各调用一次:先看 \(Q\) 是否多跳→决定是否 Reformulate;再看 \(C\) 的时间表达是否模糊分散→决定是否 Rewrite;最后看初始答案可信度→决定是否 Review。每次决策以自然语言"是/否 + 简短理由"给出,由二元决策 \(d_i\) 门控对应动作,不强制走完所有步骤(完整伪代码见算法 1)。
这样推理预算就花在真正需要的地方。论文图 3 的统计佐证了 Planner 确实做了任务感知的差异化决策:TimeQA 上 Reformulate 频率高(问题多为可拆解的多跳),TempReason-L2/L3 上 Rewrite + Review 频率显著高于 TimeQA(时间线复杂、初始答案可信度低)。
3. 基于内置能力的 zero-tool 推理:把工具调用全部内化成 prompt
依赖外部工具是当前 temporal QA 泛化性差的根因——换 domain 或换数据源,工具和规则就得重搭。AdapTime 把过去交给外部组件的活全收回 LLM 内部:原本用 Python interpreter 做的"事实匹配"改成 prompt LLM 检索原文支撑句,原本用 retriever 做的"长文档压缩"改成 prompt LLM 把相关段落改写成时间线,原本靠人工补的难例标注改成 prompt LLM 重新分解问题。所有能力收回内部后,方法就能 zero-shot 迁移到新场景(在开放域 ArchivalQA 上仍 work 也佐证了这点)。
一个完整示例¶
以问题 "Terence Cooper 在 1966 年 3 月到 1969 年 10 月之间担任什么职位?" 为例走一遍:Planner 先判断这是带时间区间约束的多跳问题 → 触发 Reformulate,拆成 \(q_1\)="Cooper 担任过哪些职位及任期" 和 \(q_2\)="哪个任期覆盖 1966-03 到 1969-10"。接着 Planner 看到文档里职位时间多以 "during his tenure""until his resignation" 这类隐式表达出现 → 触发 Rewrite,把相关段落改写成以日历日期为锚的时间线(如 "Governor: 1966-03 ~ 1969-10")。在锚定后的时间线上回答 \(q_1, q_2\) 并聚合得到候选答案。最后 Planner 评估答案信心,若不够确定 → 触发 Review,回到原文检索能支撑该职位的句子,证据一致则定稿、冲突则修正。一道简单的 "美国现任总统是谁" 则会被 Planner 判为单跳直答,三步全部跳过。
损失函数 / 训练策略¶
完全免训练,只用 prompt 调度。decoding 用 top-k=10,temperature=0.7,batch_size=1,max_new_tokens=512。论文还尝试用 1000 条 DeepSeek-V3 生成的高质量 plan 蒸馏一个 LLaMA-3-8B 监督 Planner,反而比 prompt-based Planner 差(TimeQA-Easy 31.0 vs 41.5 EM),说明 in-context 规划能力比 fine-tuned 规划器更鲁棒、不易过拟合。
实验关键数据¶
主实验¶
两个 benchmark:TimeQA(easy/hard,显式 vs 隐式时间)+ TempReason(L2 时间-事件对齐 / L3 事件间时序),各采样 1000 题。三个 backbone:LLaMA-3-8B、Qwen-3-8B、DeepSeek-V3。指标:EM + F1。
| 模型 | 方法 | TimeQA-Easy EM | TimeQA-Hard EM | TempReason-L2 EM | TempReason-L3 EM | Avg EM |
|---|---|---|---|---|---|---|
| GPT-4 (闭源参考) | – | 71.6 | 54.6 | 45.4 | 43.1 | 54.3 |
| TG-LLM (SOTA 参考) | – | 66.4 | 63.1 | 42.4 | 35.6 | 51.9 |
| LLaMA-3-8B | ICL | 1.1 | 1.7 | 3.8 | 1.8 | 2.1 |
| LLaMA-3-8B | CoT | 29.7 | 31.6 | 18.5 | 16.5 | 24.1 |
| LLaMA-3-8B | AdapTime | 41.5 | 33.3 | 18.7 | 14.5 | 27.0 (+24.9) |
| Qwen-3-8B | CoT | 69.4 | 62.9 | 22.6 | 28.8 | 45.9 |
| Qwen-3-8B | AdapTime | 72.7 | 66.5 | 29.1 | 28.8 | 49.3 (+6.4) |
| DeepSeek-V3 | CoT | 85.3 | 75.6 | 44.8 | 47.0 | 63.2 |
| DeepSeek-V3 | Step-back | 84.4 | 76.4 | 45.8 | 48.8 | 63.9 |
| DeepSeek-V3 | Self-refinement | 77.6 | 76.4 | 44.3 | 41.1 | 60.1 |
| DeepSeek-V3 | AdapTime | 85.4 | 77.7 | 48.0 | 49.8 | 65.1 (+5.5) |
消融实验(DeepSeek-V3)¶
| 配置 | TimeQA-Easy EM | TempReason-L3 EM |
|---|---|---|
| Full AdapTime | 85.4 | 49.8 |
| w/o Reformulate | 85.0 | 48.9 |
| w/o Rewrite | 84.8 | 47.6 |
| w/o Review | 84.8 | 49.0 |
| w/o LLM Planner(固定执行三步) | 85.3 | 48.9 |
关键发现¶
- Rewrite 贡献最大:单独加 Rewrite 把 ICL baseline 从 80.8 拉到 86.4 EM,去掉 Rewrite 也是掉点最多的——说明"显式时间锚定的上下文表示"对 LLM 的时序推理最关键。
- Planner 价值在难数据上凸显:在 TimeQA-Easy 上 w/o Planner 几乎不掉点(强行三步也 work),但在 TempReason-L2/L3 这种需要灵活选择步骤的复杂任务上 Planner 提供稳定的 0.5–1 EM 提升。
- token 预算几乎不增:AdapTime 平均 4873 tokens/instance,仅比 ICL(4345)多 12%,远低于 self-refinement 的 >10000 tokens——说明 Planner 的"按需触发"确实节省了开销。
- 跨规模一致提升:在 1B → 8B → V3 三个量级上都显著超过对应 baseline,且 8B+AdapTime 在 TimeQA 上甚至超过闭源 GPT-4,证明方法 model-agnostic。
- 不同问题分布的步骤分布显著不同(图 3):TimeQA 偏向 Reformulate(多跳分解),TempReason-L2/L3 偏向 Rewrite+Review(隐式时间+答案不确定),验证 Planner 确实做出了任务感知的差异化决策。
亮点与洞察¶
- 把"工具调用"转化为"prompt 调度":以往 temporal QA 把推理拆给外部 Python/retriever/symbolic solver,AdapTime 证明纯 LLM 也能完成这些子任务,并通过显式 Planner 取代隐式的"thought chain"实现可控自适应。这种"工具内化"思路可直接迁移到其它领域(数学、代码、agentic search)。
- Prompt-based Planner > Fine-tuned Planner:实验对比显示蒸馏微调反而损失泛化能力,说明在数据稀缺的规划任务上 in-context 比 SFT 更鲁棒——这是一个对 agentic LLM 设计很有启发的反直觉发现。
- "3 个正交动作"的抽象力:作者把 5 篇前作的核心操作压缩成 3 个动作(表 1 对照),同时覆盖既有工作的能力上界。这种"先做 ontology 抽象再做工程"的研究范式非常值得借鉴。
- 可与 retriever 叠加:4.7 节展示了 BM25+AdapTime 在开放域 ArchivalQA 上仍能提升 2 EM,说明 AdapTime 是个 orthogonal 增强,可叠加到 RAG pipeline 上。
局限与展望¶
- LLM Planner 的决策稳定性依赖底层模型——同一个问题在不同 run 之间可能给出不同的执行路径,作者承认在小模型上 Planner 的可靠性会下降。
- 动作集仅 3 个,对于更复杂的时间推理(如时区转换、相对时间表达计算、跨语言时间)可能需要扩展(如增加 "Calculate" 或 "Convert" 动作)。
- 方法对长文档的 token 开销仍然主要来自原始上下文,对超长输入(>32k)的性能尚未充分验证;可结合 retriever 但论文只做了 BM25 的初步实验。
- 未对 Planner 的决策给出可解释性分析或 calibration——Planner 何时会做错决策、错误模式是什么,尚未深究。
相关工作与启发¶
- vs QAaP (Zhu et al. 2023):QAaP 把问题转成 Python dict 并用代码执行匹配,AdapTime 不需要 Python 解释器,所有逻辑由 prompt 完成,泛化性更强。
- vs TG-LLM / TISER (Xiong et al. 2024 / Bazaga et al. 2025):他们把文本预先构造成 temporal graph 并人工修正难例,AdapTime 的 Rewrite 动作实现等价能力但 fully automatic。
- vs Step-back / Self-refine:Step-back 让模型抽象一步再答,Self-refine 让模型反思迭代,但都是固定流程;AdapTime 引入 Planner 做 per-instance 路由,更精细,且 token 预算只略增。
评分¶
- 新颖性: ⭐⭐⭐⭐ 把多个时序方法的核心抽象成 3 个原子动作 + Planner 调度,是一个干净的 redesign。
- 实验充分度: ⭐⭐⭐⭐ 2 个 benchmark × 3 个 backbone + 充分消融 + 开放域延伸 + 案例对比,覆盖面广。
- 写作质量: ⭐⭐⭐⭐ 表 1 的对照清晰,算法 1 的伪代码直观,case study 附录有完整示例。
- 价值: ⭐⭐⭐⭐ 完全免训练、纯 prompt、可直接套到任意 LLM,复现门槛低,对 agentic 推理研究有方法论启示。