R-Net:问答系统机器阅读理解

R-Net:问答系统机器阅读理解

摘要:问答系统在当前学术界和工业界都非常具有研究和应用价值的任务,本文分享一篇2017年的端到端的问答系统经典之作——R-Net。该工作在当时的SQuAD1.1的测试集上达到最优结果。

一、SQuAD

  SQuAD是斯坦福NLP开放的一个机器阅读理解(文档问答系统)的评测数据集,最初是SQuAD1.1版本,现如今已经根据学术界的意见更新到SQuAD2.0版本。该数据集开源的官网是​​SQuAD2.0​​,只提供训练集和验证集,提交模型后会在测试集上进行验证,可以参与刷榜排名。本文分享的R-Net模型只是在SQuAD1.1上进行,因此我们主要借鉴R-Net的思路。

二、问题定义

  基于文档的问答系统,在一定程度上也属于阅读理解。即先给定一个上下文passage,再给定一个问句,训练一个模型从上下文中寻找正确答案。SQuAD1.1版本的数据集保证正确答案完全出现在上下文中,所以本文R-Net的任务是预测正确答案的起始范围,即answer span。

,上下文表示为 ,对应使用词向量 R-Net:问答系统机器阅读理解 表示分别为 R-Net:问答系统机器阅读理解R-Net:问答系统机器阅读理解

二、R-Net

  R-Net主要分为四个主要部分,分别是:

  • 循环神经网络编码器(Recurrent Network Encoder):主要对问句(question)和文档(passage)进行编码;
  • 门控匹配层(Gated Matching Layer):将答案与上下文进行匹配;
  • 自匹配层(Self-matching Layer):对整个上下文进行信息聚集;
  • 指针网络(pointer network):使用指针网络预测正确答案的起始位置。

  模型的整体结构如下图所示:

R-Net:问答系统机器阅读理解

2.1 循环神经网络编码器(Recurrent Network Encoder)

  在该层,主要任务是对问句和上下文进行表征,分别使用两个参数不共享的GRU神经网络进行编码:

R-Net:问答系统机器阅读理解

R-Net:问答系统机器阅读理解

其中 R-Net:问答系统机器阅读理解R-Net:问答系统机器阅读理解

2.2 门控匹配层(Gated Matching Layer)

  为了模拟人类,在做阅读理解时都是带着问题去读文章,因此需要对文章Passage的各个token进行编码时,都要带着问题,即question-aware passage representation。因此主要编码过程如下所示:

R-Net:问答系统机器阅读理解

R-Net:问答系统机器阅读理解

R-Net:问答系统机器阅读理解

R-Net:问答系统机器阅读理解

R-Net:问答系统机器阅读理解

R-Net:问答系统机器阅读理解

其中 R-Net:问答系统机器阅读理解 则表示带有问题去读文章的意思,使用GRU对文章再次编码,但每次编码时不是单纯将passage的token喂入,而是使用门控注意力机制来完成,即在passage的第 R-Net:问答系统机器阅读理解 时刻,都与所有问句 的每个token计算一次权重,并对 进行加权求和得到 R-Net:问答系统机器阅读理解。为了充分保留更多的信息,可以将 R-Net:问答系统机器阅读理解

  该段公式对应的代码编写时需要注意,例如使用pytorch时,则需要使用 torch.nn.GRUCell(),其可以灵活的为每个时间步计算。

2.3 自匹配层(Self-matching Layer)

R-Net:问答系统机器阅读理解 只是全局的表征信息,就好比人在带着问题阅读时,只是单纯的将整个文章读完了,但此时的记忆是比较杂乱的,需要对看过的信息进行整合,因此自匹配层的目标就是将重要的信息聚集起来,该部分非常类似于 Transformer中的self-attention。

R-Net:问答系统机器阅读理解

R-Net:问答系统机器阅读理解

R-Net:问答系统机器阅读理解

R-Net:问答系统机器阅读理解

在聚集时,聚集的信息只与passage有关。此时使用一层双向GRU进行编码,每到一个时刻 R-Net:问答系统机器阅读理解 时,便于整个passage的所有token进行权重计算和加权求和,得到 R-Net:问答系统机器阅读理解,再与 R-Net:问答系统机器阅读理解

2.4 指针网络(pointer network)

R-Net:问答系统机器阅读理解

第(1)步:指针网络是一个单向的GRU,因此首先对于隐层要有一个初始化,相当于decoder部分初始化。本文初始化使用的是 R-Net:问答系统机器阅读理解, 表示为

R-Net:问答系统机器阅读理解

R-Net:问答系统机器阅读理解

R-Net:问答系统机器阅读理解

即问句在表征层得到的向量进行加权求和;

第(2)步:根据初始化的隐向量 R-Net:问答系统机器阅读理解,可以得到在passage中start位置的概率分布

R-Net:问答系统机器阅读理解

R-Net:问答系统机器阅读理解

R-Net:问答系统机器阅读理解

最终 R-Net:问答系统机器阅读理解 就是预测的start位置 R-Net:问答系统机器阅读理解

第(3)步:预测完第一个位置之后,保存第一个位置的权重分布 R-Net:问答系统机器阅读理解,并使用单向GRU计算一次,得到第二个位置的隐状态:

R-Net:问答系统机器阅读理解

R-Net:问答系统机器阅读理解

计算结束后,再次回到第(2)步,此时 R-Net:问答系统机器阅读理解,可以得到end位置 R-Net:问答系统机器阅读理解。.

R-Net:问答系统机器阅读理解