
朱晨光
全书分为三个部分,共计10章内容。第壹部分为基础篇,介绍机器阅读理解的基础知识。其中包括机器阅读理解任务的定义,阅读理解模型中常用的自然语言处理技术和深度学习网络模块等。 第二部分为架构篇,对机器阅读理解任务进行分类,然后介绍解决各类任务的基本模型架构和前沿算法,并剖析对机器阅读理解研究有着革命性影响的预训练模型(如BERT和GPT)。 第三部分为实战篇,包括笔者在2018年获得CoQA阅读理解竞赛第一名的模型SDNet的代码解读,机器阅读理解在各种工业界应用中的具体落地过程和挑战,以及笔者对于机器阅读理解未来发展方向的思考。
《机器阅读理解:算法与实践》核心拆解 一句话概括 机器阅读理解的核心,是把文章与问题编码成向量,通过注意力建立二者的语义联系,再以抽取、分类或生成的方式输出答案;但评测成绩接近人类,不等于模型真正理解了文章。 核心逻辑 全书沿着“从原理到模型,再到工程落地”的路径展开:文本数字化→上下文编码→文章与问题交互→预测或生成答案→使用数据集训练和评测→引入预训练模型迁移知识→通过SDNet展示工程实现→进入客服、搜索、医疗、法律、金融和教育。 全书分为三篇:基础篇讲机器阅读理解任务、NLP基础和深度学习模块;架构篇讲通用架构、经典模型和预训练模型;实战篇讲CoQA冠军模型SDNet源码及产业应用。 核心内容 1. 什么是机器阅读理解 机器阅读理解的典型输入包括一篇文章、一个与文章有关的问题,以及可选的历史对话或候选答案。模型需要分析文章语义,判断问题关注的信息,再输出答案。 按输出形式,可分为抽取式、选择式、判断式、生成式和多轮对话式。典型模型由编码层、交互层和输出层组成。编码层理解文章和问题各自的上下文;交互层寻找文章与问题之间的联系;输出层根据任务形式生成答案。 2. 机器阅读理解的应用价值 机器阅读理解可以从产品文档中回答客户问题,从网页和知识库中寻找精准答案,分析病历和医学文献,阅读合同、法规和案件材料,提取金融新闻和公司报告中的信息,自动批改作文并支持翻译、摘要和多轮对话。 如果模型尚未达到完全替代人的质量,可以先处理简单、高频、标准化问题,再把复杂问题交给人工。 3. 机器阅读并不等于真正理解 现有模型在部分数据集上的成绩已经接近甚至超过人类平均水平,但这不代表模型具备人类式理解。 模型经常依赖关键词重合、相邻句匹配、问题与答案之间的统计模式、数据集固定模板、答案位置偏差和训练数据中的捷径特征。一旦加入干扰语句、改写问题或改变答案分布,性能就可能明显下降。 真正的阅读还需要常识、逻辑、因果关系、指代消解、跨段推理和篇章结构理解,而这些正是模型的薄弱环节。 4. 分词是文本数字化的第一步 英文通常以空格划分单词,但仍需处理缩写、标点、词形变化和复合词;中文没有天然空格,分词本身就是预测任务。 中文分词方法包括基于词典的最大匹配、隐马尔可夫模型、条件随机场、神经网络序列标注和子词切分。随着BERT等模型普及,WordPiece、BPE等子词方法能够缓解未登录词问题。 5. 词向量是语言处理的基础表示 独热编码不能表达词语之间的语义关系,维度也非常高。词向量把每个单词表示成低维连续向量,语义相近或使用环境相似的词,在向量空间中的位置也更接近。 常见方法包括Word2Vec、GloVe、FastText和上下文化词向量。静态词向量的问题是,一个词无论出现在什么语境中都使用同一个表示,难以处理一词多义。ELMo、BERT等上下文模型会根据句子生成不同的词向量。 6. 命名实体和词性提供额外语言信息 命名实体识别用于发现人名、地点、机构、时间和数字等信息。词性标注则区分名词、动词、形容词等语法角色。 机器阅读模型可以把词向量、词性、实体类型、字符编码、词频及精确匹配特征拼接起来,让模型获得更丰富的语言线索。不过,这些人工特征可能引入上游模型错误,预训练模型则能在一定程度上自行学习这些知识。 7. 语言模型学习文本的概率规律 语言模型的目标,是根据上下文预测单词或计算一个句子的概率。传统语言模型使用N元语法、平滑技术和马尔可夫假设,神经语言模型则使用词向量和神经网络处理更长的上下文。 语言模型可以利用海量无标注文本训练,因此成为预训练模型的基础:在进入具体阅读理解任务之前,先让模型从通用文本中学习词义、语法和部分世界知识。 8. 深度学习负责生成上下文表示 阅读理解需要把单词编码成包含上下文的信息,常用模块包括循环神经网络、双向RNN、LSTM、GRU、卷积神经网络和Transformer。 双向网络同时利用一个单词之前和之后的信息;LSTM和GRU通过门控机制缓解长距离依赖问题;CNN适合提取局部模式;Transformer则通过自注意力让任意位置的单词直接交互,并支持并行计算。 9. 自然语言理解与自然语言生成 选择题、分类和答案类型判断属于判定式任务,模型为每个候选类别计算分数。 生成答案、摘要和对话回复属于生成式任务,通常采用编码器—解码器结构:编码器处理文章或问题,解码器逐词生成目标文本,训练时可以使用Teacher Forcing,推理时可用集束搜索寻找候选答案。 生成式模型表达更灵活,但也可能生成原文中没有的信息。 10. 注意力机制连接文章和问题 注意力机制针对问题中的每个词,动态计算文章各位置的重要程度;也可以反过来根据文章关注问题。 常见形式包括文章到问题的注意力、问题到文章的注意力、双向注意力、自注意力、多头注意力和互注意力。 注意力权重可以提供部分分析线索,但不能简单地把它当作模型完整的推理解释。 11. 模型评测必须匹配任务形式 不同阅读理解任务需要不同指标:准确率适用于选择题和判断题;精确匹配率要求答案与标准答案完全一致;F1衡量预测答案与标准答案的词语重合程度;ROUGE和BLEU常用于摘要及生成式答案;人工评价则判断正确性、相关性、完整性和语言质量。 自动指标便于比较模型,但也存在局限。一个答案可能含义正确,却因表达不同而得分较低;也可能词语高度重合,却没有真正回答问题。 12. 数据集决定模型学到什么 训练数据可以通过人工标注、众包、从网页和文档构造、自动生成问题和答案、翻译其他语言数据及弱监督获得。 数据集需要控制问题质量、答案唯一性、训练与测试集重合、标注一致性及难度分布。如果数据集存在明显规律,模型可能学会“解数据集”,而不是学会阅读。 13. 编码—交互—输出是通用架构 编码层执行分词、建立词表、生成词向量、拼接字符、词性、实体和匹配特征,并使用双向RNN或预训练模型生成上下文表示。 交互层建立文章与问题之间的语义联系,是经典模型创新最集中的部分。输出层根据任务预测答案开始位置、结束位置、候选答案类别、是否可以回答或生成式文本。 这种分层方式便于替换模块,也方便分析性能来源。 14. BiDAF:双向注意力流 BiDAF通过两个方向的注意力建立文章与问题之间的联系:文章中的每个词关注问题,问题整体反过来关注文章中的关键位置。 双向注意力生成的表示既包含文章上下文,也包含问题线索,是神经阅读理解发展中的重要基础模型。 15. R-Net:加入自匹配和指针机制 R-Net先对文章和问题进行门控注意力交互,再使用自匹配注意力,让文章中的不同位置互相联系。输出层采用指针网络预测答案的起点和终点。 自匹配机制有助于处理跨句信息和较长文本,但循环网络仍然存在并行效率较低的问题。 16. FusionNet:融合不同层次的表示 FusionNet不仅使用神经网络最终层的输出,还融合原始词向量、低层语法特征、高层语义特征和历史交互信息。 其核心思想是,不同网络层学习的是不同抽象程度的信息,不应只保留最后一层。 17. DrQA:检索和阅读结合 面对大规模文档库,仅有阅读模型还不够。DrQA将系统分为文档检索器和文档阅读器:先从海量文本中找到相关文档,再在候选文档中定位答案。 这奠定了现代开放域问答“先召回、再精读、最后回答”的基本结构,其思想与今天的检索增强生成系统具有明显连续性。 18. 预训练和迁移学习改变了NLP 预训练模型先在大规模无标注文本上学习通用语言表示,再针对阅读理解任务微调,能够降低标注数据需求、提升低资源任务性能、缩短模型设计周期、迁移语法和语义知识,并统一不同NLP任务的建模方式。 19. CoVe与ELMo:上下文词向量的形成 CoVe从机器翻译模型的编码器中迁移上下文表示。ELMo利用双向语言模型,根据具体语境为每个单词生成不同表示,并融合网络不同层次的信息。 它们突破了静态词向量“一词一个向量”的限制,为Transformer预训练模型铺平了道路。 20. GPT:生成式预训练 GPT使用Transformer语言模型在大规模文本上预训练,再通过简单的任务输出层完成分类、推理和阅读理解。 其重要意义是证明统一的生成式预训练模型可以迁移到多种语言任务,不必为每个任务从头设计网络。本书讨论的主要是早期GPT,尚未进入今天的大语言模型和指令微调阶段。 21. BERT:双向语言理解 BERT使用Transformer编码器,通过遮蔽语言模型等任务进行双向预训练。与从左到右的语言模型相比,BERT可以同时利用目标词前后的内容,特别适合阅读理解、文本分类、序列标注和语义匹配。 BERT是从“任务专用模型”转向“预训练基础模型”的重要里程碑。 22. SDNet:多轮对话式阅读理解 SDNet在CoQA多轮对话阅读理解竞赛中获得第一名,并公开了PyTorch代码。 它把前两轮问答与当前问题拼接,将多轮问答转化为包含对话历史的阅读理解任务。编码特征包括GloVe词向量、词性编码、命名实体编码、精确匹配编码、词频编码和BERT上下文编码。 交互层包括单词注意力、阅读层、问题理解层、全关注互注意力和问题自注意力。输出层同时处理原文区间答案、“是”、“否”和“无法回答”。 SDNet的价值不仅在于竞赛成绩,还在于展示了论文模型如何落到预处理、数据批次、训练器、网络结构和推理代码中。 23. 智能客服与搜索 智能客服可以阅读产品文档、历史工单和用户问题,自动回答高频问题,把不确定情况转交人工。 搜索引擎则需要经历抓取文档、建立索引、召回相关结果、语义匹配及抽取或生成答案。机器阅读理解可以把搜索从“返回网页”推进到“直接回答问题”,但必须提供来源并控制错误答案。 24. 医疗、法律和金融 医疗场景可以分析病历、医学文献和诊疗知识,但误判代价高,必须强调专业审核、隐私和可解释性。 法律场景可以检索案件、分析合同和法规、提取争议焦点,但“自动判案”涉及价值判断、程序正义和责任,不能只追求效率。 金融场景需要快速处理新闻、公告、研报和市场数据,但历史相关性未必代表未来因果规律。 这些高风险领域更适合“模型辅助专家”,而不是直接替代专家。 25. 教育应用 机器阅读理解可以用于拼写和语法检查、作文自动评分、语义连贯性分析、个性化易错点总结、自动生成问题及阅读和写作辅助。 作文评价既要考虑语言正确性,也要考虑篇章连贯性。仅检查关键词或语法,无法判断文章是否真正有逻辑和思想。 26. 产业化面临的关键挑战 主要难题包括:模型依赖关键词而不是真正理解;深度学习缺乏可解释性;行业标注数据不足;数据分布变化导致性能下降;多段和多步推理能力有限;需要处理表格、图像和语音等多模态数据;错误答案在高风险场景中代价巨大;离线测试成绩与线上业务效果存在差距。 产业落地应优先选择文本量大、问题集中、答案标准化且容易人工接管的场景。 反对的观念 本书反对以下认识:评测分数超过人类就代表机器真正理解了语言;阅读理解只需在原文中寻找相同关键词;一个模型可以直接适用于所有行业;注意力权重就是完整的模型解释;数据集越大标注质量就不重要;生成式答案比抽取式答案一定更先进;有了BERT就不再需要数据处理和任务设计;离线准确率高模型即可完全取代人工;所有阅读理解问题都可以转化为单轮问答;自动医疗诊断、自动判案只需要继续提高模型精度。 本书最值得关注的核心观点 机器阅读理解最重要的分界,不是模型能否给出答案,而是答案来自真正可靠的语义证据,还是数据集中的统计捷径。 一个成熟系统必须同时回答:答案是什么?依据哪段材料?模型有多确定?文档中是否真的包含答案?出错时能否被发现?哪些情况必须交给人工? 因此,阅读理解的工程目标不应只是“答对更多题”,而应是构建有证据、可校验、可拒答、可接管的问答系统。 个人启示 1. 先确定任务类型,再决定使用抽取、分类还是生成模型。2. 把检索和阅读分开设计。没有可靠召回,再强的阅读模型也无法得到正确答案。3. 建立无法回答机制,比强迫模型回答每个问题更重要。4. 自动指标只是代理目标,必须结合错误分析和人工评价。5. 行业落地的壁垒往往是高质量数据、知识体系和业务闭环,而不是模型结构。6. 对高风险答案应保留来源、置信度、审核记录和版本信息。7. 模型达到人类平均分,不代表具备人类式理解,可能只是更善于利用基准数据规律。 观点评价 这本书的优点是体系完整,能够把分词、词向量、RNN、注意力、经典阅读模型、预训练模型和SDNet代码连接起来。它既解释算法,也讨论数据、评测和产业应用,适合想了解BERT时代机器阅读理解全貌的读者。 其局限主要来自出版时间:内容主要停留在BERT和早期GPT阶段,没有系统覆盖大语言模型、指令微调、上下文学习、RAG、向量数据库和智能体;对生成模型幻觉、提示注入、来源引用和大模型评测缺少讨论;部分经典RNN架构今天已不再是主流,但仍有助于理解技术演进;“技术奇点”等展望略显乐观;医疗诊断和自动判案等表达需要加入更严格的伦理、法律与责任约束。 总体而言,这是一部很好的“BERT时代机器阅读理解教材”。它最值得保留的不是某个具体网络结构,而是任务定义、数据构造、评测、证据定位和人机协同的完整工程思维。 一段话总结 《机器阅读理解:算法与实践》系统讲解了计算机如何将文章和问题数字化,通过上下文编码、注意力交互及抽取、分类或生成模块输出答案,并沿着分词、词向量、RNN、注意力、BiDAF、R-Net、FusionNet、DrQA、CoVe、ELMo、GPT、BERT和SDNet展示机器阅读理解的技术演进。全书最重要的提醒是,模型在数据集上达到甚至超过人类分数,不代表它真正理解了语言,因为它仍可能依赖关键词、位置偏差和统计捷径;真正可用的阅读理解系统必须把检索、证据、置信度、拒答、人工接管和业务反馈连接成闭环,让模型不仅能够回答,还能说明依据,并在不知道时承认不知道。
微软人工智能首席技术官黄学东、中国计算机学会秘书长杜子德联袂推荐!微软高级研究员、2次获得全球阅读理解竞赛冠军的斯坦福大学计算机系博士朱晨光撰写。让你深刻认识机器阅读理解并直接进行相关模型的开发、实验和部署。
"当下市面上完整介绍机器阅读理解算法研究与应用现状的书籍非常少见,相关的中文资料更是少之又少。朱晨光博士在机器阅读理解领域深耕多年,并曾在多项国际竞赛中带领团队夺得冠军。本书旨在将机器阅读理解的真实面貌展现给读者。 全书分为三篇,基础篇主要介绍了机器阅读理解的基础知识和关键支撑技术,涵盖机器阅读理解任务的定义,阅读理解模型中常用的自然语言处理技术和深度学习网络模块。架构篇介绍了解决各类机器阅读理解任务的基本模型架构和前沿算法,并剖析对机器阅读理解研究有着重要影响的预训练模型。实战篇包括作者在2018年获得CoQA对话阅读理解竞赛第一名时所用的模型SDNet的代码解读,机器阅读理解在各种工业界应用中的具体落地过程和挑战,以及笔者对于机器阅读理解未来发展方向的思考。希望本书能够启发各位读者为实现人类水平的机器阅读理解共同努力。"
从GPTs回头看感慨万千 虽说底层原理很久没突破 但依然是不断站在巨人肩膀上摸索和优化 硬是完成了量变到质变 唯一可惜的是曾经机器学习的许多tricky的灵光一闪在GPT架构的大力出奇迹下变的泯然众人 连曾经同样是基于transformer模型甚至更全面双向的BERT也不再为人所知 但AGI之路依然遥远 抛开资本炒作和概念投机之外 书中所言知识与推理能力 可解释性 低资源 多模态也只解决了后两者 然而正如曾经一位NLP朋友所言 who cares?
一些总结挺不错的, 可以当成比较简单的综述来看。 如果对MRC比较熟悉,可以梳理下整个体系,总结一些模型的架构与设计经验。
实用的工具书以及阅读理解综述书。对于神经网络的介绍也比较清晰
只读了第一章,介绍机器阅读的原理,现状,目前几种数据库,应用方式!