当前位置: 首页 > news >正文

机器阅读理解:抽取式问答、多选问答与自由生成问答

点击AladdinEdu,你的AI学习实践工作坊”,注册即送-H卡级别算力沉浸式云原生集成开发环境80G大显存多卡并行按量弹性计费教育用户更享超低价


一、引言

让机器阅读并理解人类语言,是人工智能皇冠上的明珠之一。早在1950年,图灵在其划时代论文《Computing Machinery and Intelligence》中就将“问答”作为检验机器智能的重要标准。七十余年后的今天,随着深度学习和大规模预训练模型的突破性进展,机器阅读理解已从实验室走向现实应用,在搜索引擎、智能客服、教育辅导、法律文书分析等领域大放异彩。

机器阅读理解任务的形式非常直观:给定一段文本和一个与文本内容相关的问题,系统需要自动找出或生成答案。例如:

文本:阿尔伯特·爱因斯坦1879年3月14日出生于德国乌尔姆。他于1921年获得诺贝尔物理学奖,以解释光电效应闻名。
问题:爱因斯坦在哪一年获得诺贝尔奖?
答案:1921年

这一看似简单的任务,实则蕴含了语言理解的多重挑战:词义消歧、指代消解、逻辑推理、多跳关联、常识融合等。根据答案的产出形式,机器阅读理解通常分为三种主流范式:

本文将对这三种范式逐一深入剖析。第二节介绍机器阅读理解的任务基础与主流数据集;第三节详述抽取式问答的技术演进;第四节探讨多选问答的核心方法;第五节深入自由生成问答的前沿进展;第六节进行三种范式的对比分析;第七节讨论挑战与未来方向。

二、机器阅读理解基础

2.1 任务形式化定义

给定一篇文档(Passage)P = ( p 1 , p 2 , … , p m ) P = (p_1, p_2, \dots, p_m)P=(p1,p2,,pm)和一个问题(Question)Q = ( q 1 , q 2 , … , q n ) Q = (q_1, q_2, \dots, q_n)Q=(q1,q2,,qn),机器阅读理解系统的目标是输出答案A AA

在某些设置中,问题可能不附带文档,系统需要依靠内部知识(闭卷问答);但多数MRC研究仍以给定文档为前提(开卷问答)。

2.2 主流评测数据集

数据集范式规模特点
SQuAD 1.1抽取式10万+问题维基百科文章,答案必在原文
SQuAD 2.0抽取式15万+问题新增“不可回答”问题
NewsQA抽取式10万+问题CNN新闻,答案更长更复杂
RACE多选9.7万问题中国中学生英语阅读理解题
MCTest多选2640问题童话故事,需常识推理
NarrativeQA自由生成4.6万问题基于长篇小说摘要,自由生成答案
MS MARCO抽取/生成100万+问题真实Bing搜索查询,答案自由形式
HotpotQA多跳抽取11.3万问题需整合多篇文档的信息
DROP数值推理9.6万问题需进行加减、计数、排序等离散推理

2.3 评价指标

三、抽取式问答

抽取式问答是机器阅读理解中研究最深入、方法最成熟的范式。其核心是训练一个模型,给定P PPQ QQ,预测答案在P PP中的起始位置和结束位置。

3.1 早期方法:基于特征与浅层匹配

在深度学习普及之前,抽取式问答主要依赖特征工程。系统会提取词汇重叠特征(如问题词在文档中的TF-IDF)、句法特征、依存关系特征等,然后用分类器判断每个候选句或候选片段是否为答案。这类方法在早期TREC QA评测中占据主流,但性能受限于特征覆盖率和稀疏性。

3.2 神经阅读理解的开端:Attention Reader

深度学习引入MRC的标志性工作是Attention Sum ReaderStanford Attentive Reader。其基本架构如下:

  1. 编码层:用双向LSTM分别对文档P PP和问题Q QQ进行编码。
  2. 注意力层:计算问题表示与文档每个词表示之间的注意力权重。常用的双线性注意力为:
    α i = softmax ( p i ⊤ W q ) \alpha_i = \text{softmax}(\mathbf{p}_i^\top \mathbf{W} \mathbf{q})αi=softmax(piWq)
    其中q \mathbf{q}q是问题LSTM的最终隐藏状态或池化向量。
  3. 答案预测:注意力权重最高的文档词位置被视为答案起始,然后结合上下文预测结束位置。

这些早期模型证明了神经网络端到端学习在MRC中的潜力,但由于LSTM对长文本的建模能力有限,准确率很快遇到瓶颈。

3.3 BiDAF与DrQA:交互式注意力与开放域探索

BiDAF(Seo et al., 2017)是预训练模型时代前最具影响力的抽取式MRC模型之一。它引入了双向注意力流

这种双向交互使得文档和问题的表示深度融合。BiDAF在SQuAD 1.1上取得了77.3%的F1值,成为经典基线。

DrQA(Chen et al., 2017)则首次系统探索了开放域问答:给定一个问题,先从大规模语料库(如维基百科)中检索相关文档,再应用MRC模型抽取答案。这种“检索-阅读”两阶段框架至今仍是开放域问答的主流范式。

3.4 BERT时代:预训练模型颠覆式提升

2018年,BERT的问世彻底改变了抽取式问答的格局。BERT通过在超大规模语料上进行掩码语言模型和下一句预测预训练,习得了强大的语言理解和上下文表示能力。将BERT应用于抽取式问答极其简单:

  1. 输入构造[CLS] 问题 [SEP] 文档 [SEP]
  2. 编码:经过多层Transformer编码,得到每个token的上下文表示。
  3. 答案预测:在BERT顶层添加两个全连接层(一个预测起始位置概率,一个预测结束位置概率),对文档部分的每个token输出两个logits,分别经过softmax得到起始和结束位置分布。
  4. 训练目标:最大化正确起始和结束位置的对数似然。

BERT在SQuAD 1.1上首次超越了人类基准(F1值91.2% vs 人类91.2%),SQuAD 2.0上也达到89.3% F1。此后,RoBERTa、ALBERT、ELECTRA等改进版预训练模型不断刷新榜单。

代码示例:基于BERT的抽取式问答(HuggingFace)

fromtransformersimportBertTokenizer,BertForQuestionAnsweringimporttorch tokenizer=BertTokenizer.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')model=BertForQuestionAnswering.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')defanswer_question(question,passage):inputs=tokenizer(question,passage,return_tensors='pt',max_length=512,truncation=True)withtorch.no_grad():outputs=model(**inputs)start_logits=outputs.start_logits end_logits=outputs.end_logits start_idx=torch.argmax(start_logits)end_idx=torch.argmax(end_logits)# 将token id转回文本答案input_ids=inputs['input_ids'][0]answer_tokens=input_ids[start_idx:end_idx+1]answer=tokenizer.decode(answer_tokens,skip_special_tokens=True)returnanswer passage="Albert Einstein was born in Ulm, Germany on March 14, 1879. He won the Nobel Prize in Physics in 1921."question="In which year did Einstein win the Nobel Prize?"print(answer_question(question,passage))# 输出: 1921

3.5 不可回答问题处理

SQuAD 2.0引入了“不可回答”问题(即文档中不包含答案)。处理策略主要有:

这些方法使模型能够有效识别知识的边界,避免“强行作答”。

3.6 多跳推理与离散推理

标准抽取式问答通常要求答案在单一段落中连续出现。但多跳问答(如HotpotQA)要求模型综合多篇文档中的信息才能推导出答案。解决方案包括:

离散推理(如DROP数据集)涉及数值计算,如“A队得分65,B队得分72,A队落后几分?”抽取式模型需集成数值推理模块(如为BERT添加数值运算层)。

四、多选问答

多选问答给定一个问题、一篇文档和多个候选选项,模型需选出唯一正确选项。与抽取式相比,多选问答更强调比较与推理能力,正确答案往往不是原文的直接复述。

4.1 任务形式与挑战

多选问答的输入通常为( P , Q , C 1 , C 2 , … , C k ) (P, Q, C_1, C_2, \dots, C_k)(P,Q,C1,C2,,Ck),输出为正确选项索引。主要挑战包括:

4.2 经典神经方法

在BERT出现之前,主流方法采用比较聚合架构

  1. 分别对文档、问题和每个选项进行编码。
  2. 通过注意力机制,计算每个选项与文档的匹配表示。
  3. 将匹配表示聚合,输入分类器输出各选项得分。

例如,Convolutional Spatial Attention Model使用CNN提取文档-选项匹配矩阵中的模式。Co-Matching Network则让文档和选项进行多层次交互匹配。

4.3 基于BERT的多选问答

BERT在多选问答上的标准做法是:将P PPQ QQ和每个C i C_iCi拼接输入BERT,取[CLS]输出接线性层得到一个得分s i s_isi,最后通过softmax对所有选项得分归一化得到选择概率。

由于每个选项需独立输入BERT,当选项数较多时计算开销大。优化方法包括:

DUMA(Zhu et al., 2020)提出了一种多维注意力架构,在多个MRC多选数据集上取得SOTA。它将文档和选项的交互扩展为多头、多维度,显著提升了推理细粒度。

4.4 融入常识知识

多选问答常需要常识支撑。研究者尝试从外部知识库(如ConceptNet)或预训练语言模型中获取常识。

4.5 多选问答的代码示例(简化版)

fromtransformersimportBertTokenizer,BertForMultipleChoiceimporttorch tokenizer=BertTokenizer.from_pretrained('bert-base-uncased')model=BertForMultipleChoice.from_pretrained('bert-base-uncased')defanswer_mcq(question,passage,choices):# 构建输入:[CLS] passage + question [SEP] choice_i [SEP]input_ids=[]attention_masks=[]forchoiceinchoices:text=passage+" "+question encoded=tokenizer(text,choice,truncation=True,max_length=512,padding='max_length',return_tensors='pt')input_ids.append(encoded['input_ids'])attention_masks.append(encoded['attention_mask'])input_ids=torch.cat(input_ids,dim=0).unsqueeze(0)# [1, num_choices, seq_len]attention_masks=torch.cat(attention_masks,dim=0).unsqueeze(0)withtorch.no_grad():outputs=model(input_ids=input_ids,attention_mask=attention_masks)pred=torch.argmax(outputs.logits,dim=-1).item()returnchoices[pred]passage="Photosynthesis is the process by which plants use sunlight to synthesize foods."question="What do plants need for photosynthesis?"choices=["Water only","Sunlight","Soil nutrients","Oxygen"]print(answer_mcq(question,passage,choices))# 输出: Sunlight

五、自由生成问答

抽取式问答要求答案严格来自原文,但现实世界中,理想的答案往往需要综合多处信息、进行概括或推理,并以自然流畅的语言表达。自由生成问答正是为此而生。

5.1 任务定义与挑战

给定文档P PP和问题Q QQ,生成答案序列A = ( a 1 , a 2 , … , a l ) A = (a_1, a_2, \dots, a_l)A=(a1,a2,,al)。答案可以是原文中不存在的词汇,可以是多个原文片段的拼接或改写。主要挑战:

5.2 基于Seq2Seq的生成模型

在预训练生成模型出现前,自由生成问答主要采用带有注意力机制的序列到序列模型。编码器读入文档和问题,解码器逐词生成答案。为提高对原文的保真度,研究者引入了拷贝机制,允许解码器直接从原文复制词汇。

指针生成网络(See et al., 2017)是这一思路的代表:它在每个生成步计算一个拷贝概率,决定是从词表生成还是从原文复制。训练时使用负对数似然损失。

5.3 预训练生成模型的统治

BART、T5、GPT系列等预训练Seq2Seq模型将自由生成问答推向了新高度。以T5为例,它将所有NLP任务统一为“文本到文本”格式。对于生成式问答,输入为question: {Q} context: {P},输出为答案文本。T5在大规模语料上进行Span Corruption预训练,具备了强大的文本理解和生成能力。

BART则采用去噪自编码器预训练,在生成任务上同样表现出色。在MS MARCO生成任务和NarrativeQA上,微调后的T5/BART大幅超越传统Seq2Seq模型。

5.4 检索增强生成

对于知识密集型问答,单靠模型参数存储的知识可能不够准确或已过时。检索增强生成框架结合了检索器和生成器:

5.5 大型语言模型的零样本生成

GPT-4、Claude、文心一言等超大规模语言模型在零样本或少样本提示下,可直接进行自由生成问答,无需微调。用户只需提供包含文档和问题的提示模板,模型即可输出高质量答案。这极大地降低了定制化问答系统的开发门槛,但幻觉问题仍待解决。

5.6 代码示例:基于T5的生成式问答

fromtransformersimportT5Tokenizer,T5ForConditionalGeneration tokenizer=T5Tokenizer.from_pretrained('t5-base')model=T5ForConditionalGeneration.from_pretrained('t5-base')defgenerate_answer(question,context):input_text=f"question:{question}context:{context}"inputs=tokenizer(input_text,return_tensors='pt',truncation=True,max_length=512)outputs=model.generate(**inputs,max_length=50,num_beams=4,early_stopping=True)answer=tokenizer.decode(outputs[0],skip_special_tokens=True)returnanswer context="The Great Wall of China was built over centuries to protect against invasions."question="Why was the Great Wall built?"print(generate_answer(question,context))# 输出可能: to protect against invasions

六、三种范式的对比分析

维度抽取式问答多选问答自由生成问答
答案形式原文连续片段预设选项之一自由文本
典型数据集SQuAD, NewsQARACE, MCTestNarrativeQA, MS MARCO
核心技术跨度预测(起始/结束)选项比较与排序Seq2Seq生成
输出可控性高(答案必在原文)高(限定选项)低(可能产生幻觉)
推理复杂度较低较高(需比较推理)高(需整合与生成)
评估难度容易(精确匹配/F1)容易(准确率)困难(语义相似度)
应用场景搜索引擎片段、客服知识库标准化考试、教育评测对话助手、长文总结问答
人类表现91.2% F1 (SQuAD 1.1)94.5% Acc (RACE)评估主观性较强

七、挑战与未来展望

7.1 鲁棒性与泛化能力

当前MRC模型在分布内数据上表现出色,但对对抗性扰动、领域迁移、低资源语言泛化能力不足。研究因果推理不变风险最小化等方法提升鲁棒性是重要方向。

7.2 可解释性与可信问答

尤其在医疗、法律等领域,用户不仅需要答案,更需要模型给出证据依据推理过程。可解释MRC要求模型高亮支持答案的文本片段,或输出自然语言推理链。

7.3 多模态阅读理解

现实世界中的文档往往图文并茂。多模态MRC要求模型同时理解文本和图像信息来回答问题,如从产品说明书图文、学术论文图表中抽取答案。这需要跨模态对齐与推理能力。

7.4 长文本与多文档阅读理解

真实应用场景(如合同分析、文献综述)常涉及数百页的文档。如何高效处理超长上下文、在多文档间进行复杂跳转和冲突消解,是工程落地必须解决的难题。Longformer、BigBird等长序列模型已迈出第一步。

7.5 持续学习与知识更新

世界知识不断演进,MRC模型应具备持续学习能力,在不遗忘旧知识的前提下吸收新信息。同时,模型需能够识别“知识过期”问题,并主动检索最新信息。

7.6 大模型时代的范式重构

以GPT-4为代表的大语言模型正在重新定义MRC:用户不再需要精心设计模型架构,只需通过提示工程即可完成复杂的阅读理解和推理任务。未来MRC研究的重心可能从“如何设计更好的模型”转向“如何更好地利用和约束大模型”,以及“如何构建高质量的检索增强系统以弥补大模型的知识盲区”。

八、结语

机器阅读理解是检验自然语言理解能力的试金石。从早期基于规则的问答系统,到神经网络驱动的抽取式、多选式模型,再到今日大语言模型赋能的自由生成问答,MRC技术经历了从“匹配”到“理解”,从“复述”到“生成”的深刻跃迁。每一种范式都有其独特的应用场景和技术魅力,共同推动着智能问答系统向人类水平迈进。

尽管取得了令人瞩目的成就,但当前的MRC系统在鲁棒性、可解释性、跨模态理解等方面仍与人类存在显著差距。随着预训练模型规模的持续增长和多模态技术的融合发展,未来的机器阅读理解系统将更加通用、可靠和智能,成为人类获取知识、辅助决策的得力伙伴。


参考文献(主要工作列举)

  1. Seo, M., Kembhavi, A., Farhadi, A., & Hajishirzi, H. (2017). Bidirectional attention flow for machine comprehension.ICLR.
  2. Chen, D., Fisch, A., Weston, J., & Bordes, A. (2017). Reading Wikipedia to answer open-domain questions.ACL.
  3. Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2019). BERT: Pre-training of deep bidirectional transformers for language understanding.NAACL.
  4. Rajpurkar, P., Zhang, J., Lopyrev, K., & Liang, P. (2016). SQuAD: 100,000+ questions for machine comprehension of text.EMNLP.
  5. Lai, G., Xie, Q., Liu, H., Yang, Y., & Hovy, E. (2017). RACE: Large-scale reading comprehension dataset from examinations.EMNLP.
  6. Kočiský, T., Schwarz, J., Blunsom, P., Dyer, C., Hermann, K. M., Melis, G., & Grefenstette, E. (2018). The NarrativeQA reading comprehension challenge.TACL.
  7. See, A., Liu, P. J., & Manning, C. D. (2017). Get to the point: Summarization with pointer-generator networks.ACL.
  8. Lewis, M., Liu, Y., Goyal, N., Ghazvininejad, M., Mohamed, A., Levy, O., … & Zettlemoyer, L. (2020). BART: Denoising sequence-to-sequence pre-training for natural language generation, translation, and comprehension.ACL.
  9. Raffel, C., Shazeer, N., Roberts, A., Lee, K., Narang, S., Matena, M., … & Liu, P. J. (2020). Exploring the limits of transfer learning with a unified text-to-text transformer.JMLR.
  10. Lewis, P., Perez, E., Piktus, A., Petroni, F., Karpukhin, V., Goyal, N., … & Kiela, D. (2020). Retrieval-augmented generation for knowledge-intensive NLP tasks.NeurIPS.

点击AladdinEdu,你的AI学习实践工作坊”,注册即送-H卡级别算力沉浸式云原生集成开发环境80G大显存多卡并行按量弹性计费教育用户更享超低价

http://www.jsqmd.com/news/647025/

相关文章:

  • 5个UML组件图常见误区及避坑指南(附真实项目案例)
  • 3 《3D Gaussian Splatting: From Theory to Real-Time Implementation》第三级:压缩、轻量化与存储优化 (二)
  • 基于FPGA与等精度测量法的数字频率计实现
  • 如何用 credentials 参数决定 Fetch 是否携带本地的 Cookie
  • python计算两点间的距离
  • autoclaw配置自定义模型:Kimi K2.5
  • SAP物料主数据里的‘税收类别’选错了?详解MWST销项税配置与VK11/VK13事务码的完整操作流程
  • 二、Redis在Win11中的高效配置与优化实践
  • 爱毕业aibiye等品牌依托互联网技术,打造了便捷高效的论文辅导解决方案
  • HTMX 4.0 发布:革新 Web 开发,性能与体验双提升!
  • SpringBoot项目用GraalVM打包成原生镜像,启动速度提升20倍的实战教程(附Windows/Linux配置)
  • Gitee CodePecker SCA:构筑企业数字化安全防线的智能卫士
  • 保姆级教程:在QGC地面站地图上为盘旋航点动态绘制半径圈(附源码)
  • 高效开发必备:Tabby终端工具的全方位使用指南
  • 大语言模型技术指南:长上下文是怎么做出来的?RoPE、位置插值、滑窗注意力与 KV Cache 详解
  • 7步精通Video DownloadHelper配套应用:从零开始的终极安装与配置实战指南
  • 暗黑3终极自动化指南:D3KeyHelper完整配置教程
  • 为什么你的多模态模型一增量就崩?——从视觉-语言对齐断裂到跨模态梯度冲突的底层归因分析
  • 树莓派Pico实战:用无源蜂鸣器做个简易电子琴(附完整代码)
  • CSS如何利用Sass简化CSS书写_通过嵌套与简写优化编码效率
  • 告别标准库!用STM32CubeMX HAL库驱动ILI9341 SPI屏,保姆级教程+完整代码
  • 前端包管理工具与Monorepo全面解析
  • Alibaba DASD-4B Thinking 实战:基于网络爬虫数据的市场舆情分析与报告生成系统
  • 训练数据+对齐映射+推理引擎三重隔离备份(行业首份LLM+VLM+ASR混合负载容灾SLA协议)
  • 爱毕业aibiye等七家专业团队凭借在线论文辅导服务,在行业内树立了标杆地位
  • 深耕广东高企申报15年,沐霖信息科技助力超3300家企业 - 沐霖信息科技
  • 别再只调库了!拆解无线充电项目,看STM32的ADC采样与OLED驱动到底怎么写
  • 基于STC89C52单片机的智能火灾监测系统(附源码与电路设计)
  • 解决Python卸载报错:No Python 3.9 installation was detected的实用指南
  • 兰亭妙微儿童语言学习App设计白皮书:IP化视觉、全流程闭环与趣味化交互的实战应用 - ui设计公司兰亭妙微