From Easy to Hard: 两阶段选择器与阅读器在多跳问答中的应用

From Easy to Hard: 两阶段选择器与阅读器在多跳问答中的应用

发表信息:本文发表于 ICASSP 2023(CCF-B 类会议)

1. 什么是多跳阅读理解?

多跳阅读理解(Multi-hop Question Answering)是自然语言处理领域中的一个极具挑战性的任务。与单跳问答不同,多跳问答需要模型在多个文档中进行推理,找到关联信息后才能给出正确答案。

1.1 "跳"的含义

"跳"指的是推理的步骤数量。每一跳都需要从文档中提取相关信息,并将这些信息连接起来形成最终答案。

1.2 多跳问题示例

示例问题:奥巴马妻子毕业于哪所学校?

flowchart TD
    subgraph HOP1["第一跳"]
        Q1["Q: 奥巴马的妻子是谁?"]
        D1["Doc A: 米歇尔·奥巴马,美国第44任总统奥巴马的妻子"]
    end

    subgraph HOP2["第二跳"]
        Q2["Q: 米歇尔·奥巴马本科毕业于哪所学校?"]
        D2["Doc B: 米歇尔·奥巴马1985年毕业于普林斯顿大学,1991年获得哈佛法学院博士学位"]
    end

    subgraph HOP3["最终答案"]
        ANS["Answer: 普林斯顿大学(本科)/ 哈佛大学(法学院)"]
    end

    Q1 --> D1
    D1 --> Q2
    Q2 --> D2
    D2 --> ANS

    style Q1 fill:#f9f,color:#333
    style D1 fill:#bbf,color:#333
    style Q2 fill:#ff9,color:#333
    style D2 fill:#bbf,color:#333
    style ANS fill:#bfb,color:#333

问题解析:

跳数 任务 涉及的文档
第一跳 找出奥巴马的妻子(米歇尔·奥巴马) 文档A
第二跳 查找她的毕业院校 文档B
最终 整合两跳信息给出完整答案 合并结果

多跳体现在哪里?

  1. 无法直接回答:看第一个文档只能知道奥巴马的妻子是谁,但问题问的是毕业院校
  2. 需要链式推理:第一跳的结果("米歇尔·奥巴马")是第二跳问题的关键实体
  3. 两步信息整合:必须把两个文档的信息合在一起才能完整回答问题
  4. 桥接实体(Bridge Entity):"米歇尔·奥巴马"是把两跳串起来的桥梁,也是 FE2H 两阶段选择器重点捕捉的对象

2. 论文摘要

Title: From Easy to Hard: Two-stage Selector and Reader for Multi-hop Question Answering

作者: Weijun Lei et al. (南京大学)

Abstract:

多跳问答是一个具有挑战性的任务,需要QA系统在多个文档上进行复杂推理并提供支持性事实和准确答案。现有方法倾向于使用基于图的推理和问题分解来获取推理链,但这不可避免地引入了额外的复杂性和累积误差。

为了解决上述问题,我们提出了一个简单而有效的新框架——From Easy to Hard (FE2H),该框架通过移除干扰信息来获得更好的多跳QA任务上下文表示。

FE2H的核心理念:

  • 借鉴人类迭代文档选择过程和渐进式学习习惯
  • 将文档选择器和阅读器分为两个阶段,遵循从易到难的方式

具体来说:

  1. 文档筛选阶段:首先选择与问题最相关的文档,然后利用该文档进一步选择其他相关文档
  2. 问答阶段:阅读器首先在单跳QA数据集上训练,然后迁移到多跳QA任务

我们在流行的多跳QA基准测试HotpotQA上进行了全面评估,实验结果表明,我们的方法在HotpotQA排行榜(distractor设置)上优于所有其他方法。

论文链接: arXiv:2205.11729

代码链接: GitHub: hotpotqa_mrc

HotpotQA排行榜: https://hotpotqa.github.io/


3. 核心创新点

3.1 创新点一:两阶段文档筛选器

3.1.1 传统方法的痛点

在多跳问答任务中,每个问题通常配有10个干扰文档(distractors)。传统方法通常:

  1. 直接全局推理:将所有文档一起输入模型
  2. 一次性选择:一次性选出所有相关文档

这会导致:

  • 无关信息带来的噪声干扰
  • 推理复杂度呈指数级增长
  • 错误在多跳推理过程中累积

3.1.2 FE2H 的解决方案:渐进式筛选

flowchart TD
    subgraph TRAD["传统方法"]
        T1["Q + 10 docs"] --> T2["Select all at once"]
        T2 --> T3["Multi-hop reasoning"]
    end

    subgraph FE2H["FE2H 两阶段"]
        F1["Q + 10 docs"] --> F2["Stage 1: Select relevant doc"]
        F2 --> F3["Combine Q + doc1"]
        F3 --> F4["Stage 2: Select 2nd hop"]
        F4 --> F5["Reason on filtered docs"]
    end

    style F2 fill:#bfb,color:#333
    style F4 fill:#bfb,color:#333

核心思想:借鉴人类的迭代阅读习惯,先找到"入口文档",再基于它找到后续相关文档。

3.1.3 为什么这样更有效?

特性 传统方法 FE2H两阶段
信息利用 全局搜索 聚焦式检索
噪声引入 高(10个文档全量) 低(逐阶段筛选)
推理难度 O(n) O(n)(输入更小更聚焦)
错误累积 多跳同时推理 分步验证

3.2 创新点二:从易到难的渐进式学习

3.2.1 核心灵感

人类在学习复杂任务时,天然地采用"从易到难"的方式:

flowchart LR
    subgraph HUMAN["人类学习"]
        H1["Learn to speak"] --> H2["Learn to read"] --> H3["Learn comprehension"] --> H4["Learn to write"]
    end

    subgraph FE2HT["FE2H 训练"]
        E1["Single-hop QA"] --> E2["Simple reasoning"] --> E3["Multi-hop QA"]
    end

    style E1 fill:#bbf,color:#333
    style E3 fill:#f9f,color:#333

3.2.2 渐进式训练策略

flowchart TD
    subgraph STAGE1["Stage 1: Single-hop 预训练"]
        P1["Train on SQuAD"] --> P2["Learn basic reading comprehension"]
        P2 --> P3["Understand question intent"]
        P3 --> P4["Locate answer boundaries"]
    end

    subgraph STAGE2["Stage 2: Multi-hop 迁移"]
        P4 --> M1["Transfer to HotpotQA"]
        M1 --> M2["Two-stage document selection"]
        M2 --> M3["Multi-hop reasoning"]
    end

    style P1 fill:#bbf,color:#333
    style M1 fill:#f9f,color:#333

3.2.3 为什么单跳数据很重要?

  1. 数据规模大:单跳问答数据集(如SQuAD)规模远大于多跳数据集
  2. 噪声少:单跳文档通常直接包含答案,干扰较少
  3. 学习基础能力
    • 问题理解
    • 实体识别
    • 答案定位
    • 上下文推理

3.3 创新点三:简洁有效的框架设计

3.3.1 拒绝复杂,拥抱简单

特性 主流方法 FE2H
图结构 需要构建实体关系图 无需图结构
问题分解 需要显式分解问题 无需分解
预训练模型 复杂的多任务学习 简单的两阶段训练
推理复杂度 O(n²) 甚至更高 O(n)

3.3.2 框架对比

flowchart TD
    subgraph TRAD["传统方法 (Graph-based)"]
        G1["Build knowledge graph"] --> G2["Entity linking"]
        G2 --> G3["GNN reasoning"]
        G3 --> G4["Multi-hop aggregation"]
    end

    subgraph FE2H["FE2H (Selection + Reader)"]
        F1["Document selection"] --> F2["Single-hop pretrain"]
        F2 --> F3["Multi-hop fine-tune"]
        F3 --> F4["Answer generation"]
    end

    style G1 fill:#fbb,color:#333
    style F1 fill:#bfb,color:#333

3.3.3 消融实验结果

论文中的消融实验证明了各组件的有效性:

模型变体 Joint F1 提升
基础模型 74.2 -
+ 第一阶段筛选 75.8 +1.6
+ 第二阶段筛选 76.1 +0.3
+ 渐进式学习 76.5 +0.4

4. FE2H框架详解

4.1 整体架构

flowchart TD
    Q["Question"] --> DS1["Stage 1 Doc Selector"]

    subgraph DOCSEL["文档选择阶段"]
        DS1 -->|"Select relevant doc"| D1["Relevant Doc 1"]
        DS1 -->|"Combine Q + Doc1"| DS2["Stage 2 Doc Selector"]
        DS2 -->|"Select 2nd hop doc"| D2["Relevant Doc 2"]
    end

    subgraph QASTAGE["问答阶段"]
        D1 --> Reader["Two-stage Reader"]
        D2 --> Reader
        Reader -->|"Single-hop mode"| Output1["Answer + Support"]
        Reader -->|"Multi-hop mode"| Output2["Final Answer"]
    end

    style DS1 fill:#f9f,color:#333
    style DS2 fill:#f9f,color:#333
    style Reader fill:#ff9,color:#333

4.2 两阶段文档选择器

第一阶段

  • 输入:问题 + 所有候选文档
  • 输出:选择最相关的文档(top-k)

第二阶段

  • 输入:问题 + 第一阶段选中的文档
  • 输出:进一步筛选出与推理链相关的其他文档

4.3 两阶段阅读器

第一阶段(单跳模式)

  • 在单跳问答数据集(如SQuAD)上进行预训练
  • 学习基础的问答能力

第二阶段(多跳模式)

  • 迁移到多跳问答任务
  • 利用第一阶段学到的知识进行更复杂的推理

5. 与大模型Chain-of-Thought的联系与区别

5.1 Chain-of-Thought (CoT) 简介

Chain-of-Thought(思维链)是近年来大语言模型(如GPT-4、PaLM)的重要推理范式。其核心思想是:

flowchart LR
    Q1["Question"] --> CoT1["Step-by-step reasoning
Step 1: ...
Step 2: ...
Step 3: ..."] CoT1 --> A1["Final Answer"] style Q1 fill:#f9f,color:#333 style CoT1 fill:#ff9,color:#333 style A1 fill:#bfb,color:#333

CoT的优势:

  • 显式展示推理过程
  • 提高模型的可解释性
  • 在数学、逻辑推理任务上效果显著

5.2 FE2H vs Chain-of-Thought

特性 FE2H Chain-of-Thought
推理方式 显式的文档筛选+阅读 隐式的思维链
信息利用 筛选相关文档,减少干扰 使用全部上下文
可解释性 高(清晰的文档选择过程) 中(推理步骤可见)
计算成本 较低(筛选减少输入) 较高(完整上下文)
适用场景 结构化文档检索 开放域推理

5.3 两者的联系

  1. 渐进式推理:两者都采用"逐步推理"的思想

    • FE2H:从简单文档到复杂文档,从单跳到多跳
    • CoT:从简单推理步骤到复杂推理步骤
  2. 中间结果:都依赖中间结果来增强最终答案

    • FE2H:筛选出的相关文档
    • CoT:推理过程中的中间结论
  3. 减少幻觉:通过结构化信息减少模型编造答案的风险

5.4 未来结合方向

flowchart TD
    Q["Question"] --> Selector["Doc Selector"]

    Selector -->|"Filter relevant docs"| Context["Filtered Context"]
    Context --> CoT["Chain-of-Thought"]
    CoT -->|"Verify intermediate steps"| Selector

    CoT --> Answer["Final Answer"]

    style Q fill:#f9f,color:#333
    style Selector fill:#bbf,color:#333
    style CoT fill:#ff9,color:#333
    style Answer fill:#bfb,color:#333

可能的结合方向

  • 用CoT来解释为什么选择某些文档
  • 用文档筛选结果来约束CoT的推理空间
  • 迭代式:筛选 → 推理 → 验证 → 再筛选

6. 与 ReAct 的对比

6.1 ReAct 是什么

论文: ReAct: Synergizing Reasoning and Acting in Language Models

作者: Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, Yuan Cao

会议: ICLR 2023

ReAct 和 FE2H 都以 HotpotQA 作为多跳问答的评测基准,但选择了完全不同的技术路线。

ReAct 的核心思想是让大语言模型在 Thought → Action → Observation 的循环中自行推进推理:

  • Thought(思考):LLM 分析当前状态,决定下一步需要什么信息;
  • Action(行动):调用外部工具,例如 Search[米歇尔·奥巴马] 这种 Wikipedia API 查询;
  • Observation(观察):拿到 API 返回的段落,把关键实体融入下一轮 Thought。

整个过程不需要任何针对任务的微调,只靠 few-shot 提示让 LLM 学会"生成启发式子问题"。这也是题目里"启发式问题"的来源——LLM 在 Thought 阶段动态构造下一跳的查询,而不是预定义规则。

6.2 用奥巴马妻子的例子看 ReAct

把前面那个问题放进 ReAct 框架里执行一遍:

Q: 奥巴马妻子毕业于哪所学校?

Thought 1: 我需要先知道奥巴马的妻子是谁。
Action 1:  Search[Barack Obama wife]
Obs 1:     米歇尔·奥巴马 (Michelle Obama),美国第44任第一夫人。

Thought 2: 现在需要查找米歇尔·奥巴马的教育背景。
Action 2:  Search[Michelle Obama education Princeton Harvard]
Obs 2:     米歇尔·奥巴马1985年毕业于普林斯顿大学,1991年获得哈佛法学院博士学位。

Thought 3: 已经拿到本科与法学院信息,可以给出答案。
Answer:   普林斯顿大学(本科)/ 哈佛大学(法学院)

可以看到,每一跳的 Thought 都是 LLM 当场生成的子问题,Action 对应一次外部检索,Observation 把新实体送入下一轮。整条推理链是 LLM 自己走出来的。

6.3 FE2H vs ReAct

维度 FE2H ReAct
范式 BERT 风格的有监督微调 LLM + few-shot 提示,无需训练
推理结构 显式两阶段文档选择器 Thought-Action-Observation 循环
信息源 闭域:题面给定的 10 个候选文档 开放域:实时调用 Wikipedia API
启发式问题的来源 选择器对候选文档打分排序 LLM 自由生成自然语言子问题
推理链生成 隐式:阅读器一次性产出答案 显式:每一跳 Thought 都是可见的中间步骤
训练数据 单跳 SQuAD → 多跳 HotpotQA 仅靠几条 few-shot 示例
可解释性 选择出来的 top-k 文档 完整的 Thought-Action-Observation 轨迹
适用场景 闭域 QA、有标注数据 开放域工具调用、零样本能力

6.4 两者的内在联系

虽然技术路线完全不同,但 FE2H 和 ReAct 在抽象层面是同一种思路:

  1. 都是"启发式问题驱动"的迭代过程

    • FE2H:选择器在每一步选出与"当前问题 + 已选文档"最相关的下一跳文档,本质上是在回答"下一跳应该关注哪个文档"这个问题;
    • ReAct:LLM 在 Thought 阶段直接生成子问题,作为下一步 Action 的查询。

    两者都在用一个启发式信号决定"下一跳往哪里跳",只是信号的生成主体不同。

  2. 都是"观察 → 行动 → 观察"的循环

    • FE2H:观察(已选文档)→ 行动(再选下一跳文档)→ 观察(再选文档)…;
    • ReAct:观察(API 返回)→ 行动(生成下一 Thought)→ 观察(再次 API 调用)…。
  3. 都强调"渐进"

    • FE2H:从单跳预训练迁移到多跳微调,能力是渐进获得的;
    • ReAct:Thought 由粗到细,每一步在前一步 Observation 的基础上推进。

6.5 落地取舍

场景 选 FE2H 选 ReAct
候选文档已经确定(10 篇阅读理解)
需要从整个 Wikipedia 检索证据
模型资源受限,只能用 BERT 类小模型
有大模型推理预算,希望零样本上线
需要严格可解释的中间步骤
有大量单跳 + 多跳标注数据

从研究谱系上看,FE2H 属于"在小模型 + 闭域标注数据"上把多跳 QA 推到极致的工作;ReAct 则代表"用大模型的推理 + 工具调用能力解决多跳问题"的另一条路线。两者在 HotpotQA 这个共同基准上互相印证了同一个直觉:多跳问答的本质,是用启发式信号把推理链串起来


7. 实验结果

在HotpotQA数据集(distractor设置)上的表现:

模型 Answer EM Answer F1 Support EM Support F1 Joint EM Joint F1
FE2H (ALBERT) 71.89 84.44 64.98 89.14 50.04 76.54
R3 71.27 83.57 65.25 88.98 49.81 76.02
SAE+ 70.74 83.61 63.70 88.95 48.15 75.72

FE2H在排行榜上取得了Joint F1 76.54的成绩,位列第一。


8. 总结

FE2H的核心贡献:

  1. 两阶段文档筛选:通过渐进式筛选有效减少干扰信息,提高信息利用率
  2. 从易到难的学习范式:先在简单任务上学习,再迁移到复杂任务
  3. 简洁有效:不依赖复杂的图结构或问题分解,方法简单但效果显著

这种方法为多跳问答提供了一种新的思路,同时也为大型语言模型的推理能力增强提供了参考。


参考资料

  1. From Easy to Hard: Two-stage Selector and Reader for Multi-hop Question Answering
  2. ReAct: Synergizing Reasoning and Acting in Language Models
  3. HotpotQA数据集
  4. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
  5. GitHub: hotpotqa_mrc

文章作者: 小风雷
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小风雷 !
评论
 上一篇
ClaudeCode 的记忆机制:短期记忆、长期记忆与模型输入全链路拆解 ClaudeCode 的记忆机制:短期记忆、长期记忆与模型输入全链路拆解
基于 ClaudeCode TypeScript 源码,系统拆解短期记忆、长期记忆、Session Memory、transcript JSONL、agent memory,以及这些记忆最终如何以 system prompt、meta user message、 等形态进入大模型。
2026-04-06
下一篇 
订单号生成方案 订单号生成方案
分布式唯一ID生成方案之雪花算法详解
2026-03-15
  目录