Yichen Jiang, Nitish Joshi, Yen-Chun Chen Mohit Bansal ; UNC Chapel Hill Explore, Propose, and Assemble: An Interpretable Model for Multi-Hop Reading Comprehension

论文原文:https://arxiv.org/pdf/1906.05210.pdf
源码:https://github.com/jiangycTarheel/EPAr

文章目录

  • 1 introduction
  • 2 Model 模型结构
    • 2.1 overview
    • 2.2 Retrieval and Encoding 检索和编码
      • retrieval 支持文档的预筛选
      • encoding 编码表示
    • 2.3 Document Explorer (DE) 文档探索
      • Read Unit
      • Write Unit
      • T-hop + reasoning tree
    • 2.4 Answer Proposer (AP) 答案提议
    • 2.5 Evidence Assembler (EA) 证据组装
    • 2.6 Joint Optimization 模型训练
  • 3 Experiments and Results 实验结果

1 introduction

多跳阅读理解问题为当前的阅读理解问题提出了新的挑战,在这里首先解释以下什么是多跳阅读理解问题,感觉 CogQA 里给的例子比较好理解,这里还是借用 CogQA 论文里的例子来展示。(CogQA 论文笔记看这里)

多跳阅读理解问题 可以直观地理解为需要多次跳转,将不同的信息进行进一步整合才能得到答案的阅读理解问题。举个例子:

这个问题本身问的是导演,但是没有给出电影的名字,首先需要后面的信息去推断是哪一部电影,才能进一步去寻找该电影的导演。直观理解就是此时需要从多个文档中收集信息并经过一定的多重推导过程才能得到最后答案。

简单来说,正确求解多跳阅读理解问题需要模型掌握(将来自于不同位置的信息作联合 + 统一分析)的能力,需要模型定位不同的信息(这里的信息是分散在不同的位置的),对相关的信息作整合,再将问题和文本的信息作联系。这样的任务为当前的机器阅读理解模型提出了几个新的挑战:

  • 此时输入的文本往往较长(甚至是多文档的,跨文档的),而大多数 MRC 模型往往难以对这么长的文本直接作处理,也就是说此时或许需要先提取问题和文本之间的逻辑关系,再有选择地构造逻辑链,再作下一步处理
  • 由于此时本身是多跳的阅读理解问题,即使在已经给定了相关的逻辑链的情况下,也需要模型能够将分布在不同位置的信息作整合,再最后给出答案
  • 考虑此时可能存在很多不同的逻辑链均能够连接分散的证据信息,需要模型衡量不同逻辑链 / 路径的不同的权重并将它们所提供的信息作整理

传统的模型往往从如下几个思路出发来解决上述的问题:

  • 只着重阅读和问题相关的部分文档,而不是直接阅读全部部分的文档
  • 阅读过程中每一个 hop 只阅读一个文档,并更新整体的记忆细胞,再选择下一个文档来阅读
  • 再进行推断部分,从词语级别的角度来顺着逻辑链条来进行逻辑推断并预测最后的答案

但是注意到上面的模型本身是存在缺陷的,举个例子:

注意上面的例子,如果此时一个问题存在多个可能的推理路径,以上传统模型的思路会造成问题:此时通过问题文本定位到文档一,但是文档一出发可以有两条可能的路径,分别对应文档 2 和 3,而此时的模型并没有能力判断到底那一条推断路径是正确的,或者可能发现某一条路径后就直接沿着推断,而并没有关注可能的多条逻辑路径。也就是说,我们希望模型可以衡量不同的推断路径的权重并综合不同路径表示的不同的信息

本文提出的解决思路为:将前述 搜索文档并寻找逻辑路径 的部分循环执行多次,以得到多条发散的逻辑路径,也就是从一个点发散的,类似于树的结构。再进一步基于这个树的结构来寻找最终的预测答案:寻找所有的 根 → 叶子 的路径的综合表示,则此时得到不同的跨文档的推断路径表示,再根据这样的表示和问题之间的相关关系来寻找最后正确的路径,以引向正确的答案。通过这样的树的结构,也就将原本的跨文档的,分散的信息作了进一步的综合,不同的路径表示的也就是不同的推断逻辑。得到这样的综合信息表示后,原本的多跳阅读理解问题也就可以转化为一个简单的 QA 问题。

基于上述思路,原文将三个部分作整合,提出新模型 EPAr (Explore-Propose-Assemble reader),以通过探索(explore)+ 提议(propose)+ 整合(assemble)三个模块来实现对多跳阅读理解问题的解答


2 Model 模型结构

2.1 overview

先来看看模型的整体结构:


整个模型可以分为三个部分:

  • Document Explorer (DE) 文档搜索:本身是一个 T-hop 的文档搜索模型,每次选择一个文档进行阅读并更新 memory cell,再循环地选择不同的文档作为下一个阅读目标,任务为搜索所有相关的信息并组成可能的逻辑推断链条(reasoning chain)
  • Answer Proposer (AP) 答案提议:也就是基于上一步得到的逻辑链条进行逻辑推断(词级别的推断),并给出可能的答案预测
  • Evidence Assembler (EA) 证据组装:也就是同时综合所有可能的逻辑推断链条给出的证据,敲定最后的答案

此时整体模型实际上模拟的是人类的阅读行为:先通过粗读(也就是 DE 部分)得到大概的逻辑链条,再通过当前掌握的逻辑给出几个可能的答案(AP 部分),最后通过精读敲定答案

这里三个模块都有对应的损失,最后训练的时候是整体训练的,最小化三个模型的损失和

进一步注意,由于原论文实验的数据集主要为 WikiHop 和 MedHop,这两个数据集对应的问题是分为两个部分的:1)subject,例如 The Haunted Castle,是问题对应的对象,记作 q s u b q_{sub} qsub;2)body,也就是具体问题,一般指示的是问题对象 subject 和答案之间的关系,例如 located in the administrative territorial entity,记作 q b o d q_{bod} qbod

每一个问题对应一个候选答案的集合,记作 A = { c 1 , . . . , c L } A = \{c_1,...,c_L\} A={c1,...,cL}(注意这里是给出了候选答案集合的,不是抽取式的确定 span,有点让模型做选择题的意思 / 这里用到的 WikiHop 也本身就是(问题三元组,答案选择题)的形式),每一个问题存在一个 gold answer,记作 a a a,此时三者之间满足逻辑: q b o d q_{bod} qbod 表示 q s u b q_{sub} qsuba a a 之间的关系

2.2 Retrieval and Encoding 检索和编码

retrieval 支持文档的预筛选

令此时给定的文档 D 共有 N 篇,注意到如果将全部的文档都扔进系统会带来巨大的计算开销,故这里先采用一个 2-hop 的文档检索 对所有文档作筛检处理:

  • 首先选取和给定的问题有最短的 TF-IDF 距离的文档(这也就是 1-hop)
  • 再计算所有余下文档和第一个文档之间的 TF-IDF 距离,选择最近的 N ′ − 1 N'-1 N1 篇文档(也就是 2-hop)

此时得到的 N‘ 篇文档则是我们会扔进模型的支持文档。注意这里预先作 retrieval 操作的意义:1)大大减少了计算开销; 2)通过预先缩小 DE 部分的搜索范围,使得 DE 部分的训练更有效

encoding 编码表示

这里采用 GloVe embedding 来得到文档和问题的表示(词级别),编码维度记作 d,则此时输出三个矩阵: X ∈ R N ′ ∗ K ∗ d ; Q s u b ∈ R J s ∗ d ; Q b o d ∈ R J b ∗ d X\in R^{N' * K * d}; Q_{sub} \in R^{J_s*d}; Q_{bod} \in R^{J_b*d} XRNKd;QsubRJsd;QbodRJbd

再进行以下处理以得到不同角度下的信息表示:

  • 通过一个 双向 LSTM-RNN 来得到文档和问题的上下文表示,隐藏单元个数设为 v,此时对于 N’ 个候选文档的集合: H = { h 1 , . . . , h N ′ } ; h i ∈ R K ∗ 2 v H = \{h_1,...,h_{N'}\} ; h_i \in R^{K*2v} H={h1,...,hN}hiRK2v,同理对于问题: U s u b ∈ R J s ∗ 2 v ; U b o d ∈ R J b ∗ 2 v U_{sub} \in R^{J_s*2v};U_{bod} \in R^{J_b*2v} UsubRJs2vUbodRJb2v

  • 利用 自注意力模块 得到 N’ 个支持文档的压缩综合表示,记作 P = { p 1 , . . . , p N ′ } P = \{p_1, ... , p_{N'}\} P={p1,...,pN}(自注意力部分看这里)

  • 对于候选答案集合 A 中的任意一个候选答案 ci,找到 ci 在支持文档集合 H 中第一次被提及的位置(也就是 H 中第一个提及了 ci 的文档)(这里作者表示用了不同位置的 mention 做实验,结果差距不大),将该文档中对 ci 包含的几个词(这里的 ci 可以是多个单词)的 embedding 做 平均(也就是多个向量的元素对元素的平均,得到一个新的向量),将平均的 embedding 作为候选答案 ci 的 embedding

2.3 Document Explorer (DE) 文档探索

本质是一个层级的记忆网络,主体利用的为 GRU,目标是通过循环建立多文档的逻辑链(reasoning chain)。在每一步的时候都选择一个和当前的记忆状态相关联的文档并更新内部记忆

Read Unit

先计算一个衡量候选文档(这里用前面得到的文档自注意力处理后的 P 来表示)和当前记忆状态 m 相关程度的分布,这里采用的是双线性的方法计算相似度,具体如下:

得到分布 P 后,通过采样的方式选取出一个文档来作为后续处理的目标文档,记作 di(注意这里每次只是对一个文档进行操作)

Write Unit

计算上一步得到的目标文档 di 中每一个词表示 hi 和当前记忆状态 m 的相关程度,并得到一个关联程度的分布 ω,计算方式如下:

通过分布 ω 对每一个词表示 hi 作加权整合,得到进一步的文档 di 的表示 h ~ \tilde{h} h~,将这一表示和当前的记忆状态 m 一起扔进 GRU,更新记忆状态 m

T-hop + reasoning tree

此时将上述步骤重复 T 次,要求每一次选择的目标文档 di 都是没有被选择过的,则此时可以得到 T 个不重复的文档组成的序列,记作 H ^ = { h ^ 1 , . . . , h ^ T } \hat{H} = \{\hat{h}_1, ... , \hat{h}_T\} H^={h^1,...,h^T},每更新一次记忆状态 m 就选取出一个文档 hi,上述序列展示了 T-hop 的一个文档选取,且得到的序列 H ^ \hat{H} H^ 本身也就是一条文档的逻辑推断链条(reasoning chain)

将上述步骤再重复多次,此时可以得到多个 reasoning chain,组成文档搜索的 reasoning tree,此时每一个从根到叶子的路径都是一个可能的答案推断逻辑

2.4 Answer Proposer (AP) 答案提议

每一次选取一条 reasoning tree 中的路径(也就是一条 reasoning chain)作为输入,并从这条 chain 的最后一个文档 h T h_T hT 中给出一个可能的答案

此时记最后一个文档 h T ∈ R K ∗ 2 v h_T\in R^{K*2v} hTRK2v,则先将 h_T 放入一个 LSTM-RNN 并经过注意力编码(注意这里是前面的 T-1 个文档参与的注意力)以得到 h 1 , . . . , h T − 1 {h_1,...,h_{T-1}} h1,...,hT1-aware 的表示,记作 y

同时计算文档表示 h T h_T hT 中每一个词 hi 和当前的问题表示之间的相关关系,以得到相似程度的分布,并利用对应的权重计算得到新的词表示的集合,记作 h ~ T = { h T 1 , . . . , h T K } \tilde{h}_T = \{h_T^1, ... , h_T^K\} h~T={hT1,...,hTK}

此时选择所有的候选答案集 A 中和上述得到的 h ~ T \tilde{h}_T h~T 最为相似的候选答案 ci 作为此时给出的预测答案

注意这里的计算方式:

这里的 h ^ c c t i = [ h ^ 1 , . . . , T − 1 ] \hat{h}_{cct}^i = [\hat{h}_{1,..., T-1}] h^ccti=[h^1,...,T1] 是所有的前 T-1 个文档的向量拼接(在词的 dimension 上拼接), u s u_s usu b u_b ub 分别是 U s u b U_{sub} UsubU b o d U_{bod} Ubod 的最终表示, s k s^k sk 是 LSTM 第 k 步隐藏层的输出,此时计算每一个 c l ∈ A c_l \in A clA 对应的 s c o r e l score_l scorel,选择得分最高的 c l c_l cl 作为此时的答案预测结果

注意这里得到了整个逻辑链条上的文档的综合表示,也就是说并不是只考察了整个逻辑链条的最后 leaf 的文档 h T h_T hT,而是将整个逻辑链条的序列均纳入考虑,并综合表示了 root 文档和 leaf 文档之间的交互关系

综上,此时不断从 reasoning tree 中选择不同的 reasoning chain,重复进行 AP 的操作,则可以得到多个逻辑链条对应的多个预测答案 c l c_l cl

2.5 Evidence Assembler (EA) 证据组装

注意因为此时存在多个可能的逻辑推理链条,可以得到多个可能的答案。这里通过 EA 来实现多条逻辑链提供的信息的聚合,并进一步从上面得到的多个 c l c_l cl 中拍板得到最终的预测结果

首先将所有的包含了任意一个候选答案 c l c_l cl 的句子都提取出来,组成一个新的文档 h’,这里的 文档 h’ 也就是一个信息高度集中的文档。进一步利用一个双向注意力流模型(bidirectional attention flow model (Seo et al., 2017))来计算文档 h’ 中每一个词的权重,并得到加权的词表示,记作 h ′ ~ = h ′ 1 , . . . , h ′ K \tilde{h'} = {h'^1,...,h'^K} h~=h1,...,hK

最后计算每一个候选答案 c l c_l cl 和这里的 h ′ ~ \tilde{h'} h~ 的相似度,选择相似度最高的一个答案为最终预测

2.6 Joint Optimization 模型训练

这里先得到每一个部分(共三个部分)的损失函数,再整体优化三个损失函数的加和

注意到 DE 实际上存在一个按分布 sample 文档的步骤,故这里使用弱监督的方式来评价。这里用(同问题有着最近的 TF-IDF 距离的文档)来监督每条 reasoning chain 的第一个文档,再用(至少提到了一次正确答案的文档)来监督每条 reasoning chain 的最后一个文档,这样的评判方式可以让 DE 学会如何从问题出发,通过某种逻辑链寻找到正确答案。注意在监督最后一个文档的时候,提到了正确答案的文档可能有很多,这里采用随机抽样的方式选择一个

而对于 AP 和 EA 部分,由于给出的直接就是候选答案,则直接用交叉熵函数来作为损失函数


3 Experiments and Results 实验结果

这里选用的数据集为 WikiHopMedHop,这里的两个数据集均包含需要多跳推理才能解答的多跳阅读理解问题,且在 WikiHop 中是标名了当前的答案是否需要多跳获得的(也就是 single 或 multiple 的标签)

来看看在 WikiHop 上的结果:

可以看到提升还是有的,但是到底算不算特别出色有点尴尬(

注意到这里 WikiHop 数据集标注了是否是多跳阅读理解问题,来看看效果:

可以看到上述的方法在解决多跳阅读理解问题上确实提升明显

再看看MedHop:

注意到这里整体模型的设计使得最后答案选择的 可解释性 得到了保障(最后倒数几页终于提到题目里的可解释模型了 …)由于此时最后被选择到的答案对应的 reasoning chain 是十分明确的,此时可以通过被选定的 reasoning chain 很清楚地了解到机器对当前答案的推断思路

来一个例子:


这个例子本身存在多条可能的推断路径,且指向了多个不同的答案,可以明显地展示出当前模型设计的优势


阅读仓促,存在错误 / 不足欢迎指出!期待进一步讨论~
转载请注明出处。知识见解与想法理应自由共享交流,禁止任何商用行为!

【ACL19 论文笔记】EPAr:探索+提议+组装:多跳阅读理解的可解释模型相关推荐

  1. 【论文笔记09】Differentially Private Hypothesis Transfer Learning 差分隐私迁移学习模型, ECMLPKDD 2018

    目录导引 系列传送 Differentially Private Hypothesis Transfer Learning 1 Abstract 2 Bg & Rw 3 Setting &am ...

  2. 【论文笔记】当Bert炼丹不是玄学而是哲学:Mengzi模型

    论文标题:Mengzi: Towards Lightweight yet Ingenious Pre-trained Models for Chinese 论文链接:https://arxiv.org ...

  3. 【论文笔记】Retro-Reader:基于回溯式阅读器的机器阅读理解模型

    Zhuosheng Zhang, Junjie Yang, Hai Zhao, Department of Computer Science and Engineering, Shanghai Jia ...

  4. 【论文笔记:场景】边缘计算中分布式协作的动态卸载模型:森林火灾管理的一个用例

    [摘要]:随着物联网(IoT)的发展,数据量不断增长并变得更加多样化.将数据传输到云端时存在几个问题,例如网络带宽和延迟的限制.这引起了人们对边缘计算研究的极大兴趣,边缘计算处理和分析数据导致的网络终 ...

  5. 【论文笔记】ICNet:用于无监督医学图像配准的逆一致性模型

    本文是文章<Inverse-Consistent Deep Networks for Unsupervised Deformable Image Registration>的阅读笔记. 过 ...

  6. 【EMNLP20 论文笔记】HGN:基于分层图网络的多跳阅读理解模型

    Yuwei Fang, Siqi Sun, Zhe Gan, Rohit Pillai, Shuohang Wang, Jingjing Liu Microsoft Dynamics 365 AI R ...

  7. WDA学习笔记(二)通过页面跳转理解WDA开发流程

    在进行开发之前先简单介绍一下WDA的控制器: WDA控制器包括组件控制器.定制控制器.视图控制器和窗口控制器. • 组件控制器 每个 Web Dynpro 组件只有一个组件控制器.该控制器是全局控制 ...

  8. 论文笔记 Entity-Relation Extraction as Multi-turn Question Answering | ACL2019

    论文链接:https://arxiv.org/pdf/1905.05529.pdf 论文作者: Xiaoya Li∗1 , Fan Yin∗1 , Zijun Sun1 , Xiayu Li1 , A ...

  9. 论文笔记|Self-Supervised Test-Time Learning for Reading Comprehension

    作者:孙嘉伟 单位:燕山大学 目录 0.研究背景 1.TTLRC的形式 2.QA问答对生成方法 一.使用的工具模型 二.生成问答对的方法 3.实验结果&结论 一.数据集&基础模型 二. ...

最新文章

  1. SQL compute by 的使用
  2. 中国网闸市场调研分析与发展战略建议报告2022版
  3. jquery的语法结构包括哪几部分?_牙釉质的组织学结构具体包括哪几部分
  4. python查看内置模块,python快速查看内置模块函数
  5. HTML li标签排列有空白间隙
  6. Alexey 大神接棒,YOLOv4 重磅来袭!快来一睹论文真容吧!| 原力计划
  7. NetBios 的结构体详解(网络控制块NCB)
  8. JetBrains 快捷键技巧:IntelliJ IDEA 中,你完全不需要鼠标的 10 种情况
  9. Linux安装jellyfin硬件加速,jellyfin 10.4.3之后无法硬解的解决方法
  10. 有关3d引擎优化的一些搜索整理
  11. 2.5单星和双星运算符的作用
  12. NoSqlRedis
  13. 认知-认知能力:认知能力
  14. html 多层画布,HTML画布——canvas
  15. EOS系列 - EOS-VM
  16. php违章查询接口,基于聚合数据的全国违章直连查询接口示例-PHP版
  17. HTML用css把英文字母改大,css font-variant全大写并缩小英文字母字体
  18. 云计算,大数据资源推广
  19. Python基础练习——字符串相关
  20. WIN10:提高生产力与工作效率实用软件推荐

热门文章

  1. html星座代码,各星座详细页面.html
  2. MySQL——我的学习笔记
  3. GNU Radio: 射频子板
  4. 华为2020软件精英挑战赛初赛、复赛、决赛代码+心得分享
  5. ukf实测信号的预测 matlab,ukf的matlab实现
  6. python add argument list_python argh/argparse:我如何传递一个列表作为命令行参数?
  7. 三轴机械手结构化编程5轴伺服项目
  8. 输入一个整数,判断是偶数还是奇数
  9. 大数据必学语言Scala(三十三):scala高级用法 模式匹配
  10. 编译报错unable to initialize decompress status for section .debug_info