Minghao Hu, Yuxing Peng, Zhen Huang, Dongsheng Li, National University of Defense Technology, Changsha, China (ACL19) Retrieve, Read, Rerank: Towards End-to-End Multi-Document Reading Comprehension
原论文:https://arxiv.org/pdf/1906.04618.pdf
源码:https://github.com/huminghao16/RE3QA (official)
文章目录
introduction
延续前序研究的思路,考虑通过 检索(也就是寻找和整体问题相关的段落)+ 阅读(编码,embedding etc)+ 重排序(对可能的答案进行重新排序以生成最终的回答)的方式 完成机器阅读理解的任务。但是此时存在几个常有的问题:
- 多个模块之间是独立的,独立进行训练,而不是作为一个整体共同解决问题。且此时常常要重复编码的输入,属于不必要的计算开支。
- 难以将上游问题和下游任务很好地结合,简单理解就是上游的学习的目标往往不是下游任务最终的目标,导致学习目标和最后的目的的分离,或整体模型的训练-测试的分离。
原论文提出 R E 3 Q A RE^3QA RE3QA 方法,作为一个整体阅读理解问题模型,将检索(context retrieve)+ 阅读(reading comprehension)+ 重新排序(answer reranking) 三个部分进行结合,得到端到端的多文档阅读理解模型。
其本身为多文档的阅读理解任务设计,也就是说不同于传统的单独一个段落的阅读理解,此时需要 retrieve 的行为,即从整个内容中寻找和问题相关的部分,删除大部分对回答问题没有贡献的文本。进一步地从提取出的段落中提取答案,再通过重排序候选答案的方式(reranker)得到最终解答。新方法的优势在于:一方面其本身三个模块共享文本表示(contextualized text representation),另一方面将上游学习任务和下游的部分很好地结合,属于一个端到端的模型。同时由于将文本表示在整个模型的各个部分直接共享,此时不再需要重复的编码的输入,节省时间。
几个前序研究的特点如下表:
2 模型解释
先看一下整个模型的 overview
明确地分为 三个部分(retrieve + read + rerank)。输入的为问题和一系列文档(a set of document)
- 首先将输入的文档进行初步的筛选(也就是上图 pruning document 部分)→
- 再将文本进行处理,得到固定长度的 segment →
- 继续对得到的 segment 进行编码(这里使用的是预训练的 transformer 模块,对应图中的 T-block 部分)→
- 为保证效率,这里采用提前停止的思路,通过排序评分比较,仅仅将部分文档继续进入下一部分(也就是 early stop 部分)→
- 通过远程监督的阅读理解器,输出候选答案(图中 read 部分) →
- 将候选答案重排序,得到最终答案
2.1 文档筛选(初步修剪,pruning document)
以段落为尺度对文档进行拆解和修剪
考虑此时输入的是文档的集合,经过 TF-IDF 向量化后,保留的是和输入的问题之间余弦cos距离最小的 topK 段落。此时通过保留下来的 k 个段落原本的相对位置,将经过筛选后的段落重新排序为一个新的文档 d,作为修剪后的文档,进入下一步操作。
注意这里的方法很简单,但是作为一个初步筛选是十分有效的(论文表示 95% 以上的无关的段落将被舍弃)
2.2 文本片段编码(segment embedding)
这里不同于传统直接使用 句子 作为划分依据,而是通过 滑动窗口 来帮助分割文档。设定滑动窗口长度为 l,跨度 stride 为 r,将上述筛选处理后的文档 d 划分为多个 segment: C = { c 1 , . . . , c n } , n = [ L d − l r ] + 1 C = \{ c_1, ... , c_n \}, \text{ }\text{ }\text{ } n = [\frac{L_d-l}{r}]+1 C={ c1,...,cn}, n=[rLd