1、整体架构图
2、具体架构
由上述架构图可知,这个基线模型是由word embedding,input encoder,alignment,aggregation,prediction这几个组件组成的。以下讨论每一个组件。
2.1 Word embedding
我们使用字符嵌入和词嵌入连接来表示一个单词。字符嵌入是将单词的所有字符送入到送入到CNN中来得到该单词的表示。并且使用预训练的300-D GloVe来初始化词向量。故每个单词表示为字符向量和词向量的连接。以上操作在question和document上执行,得到以下两个矩阵:
2.2 Input encoding
上述的word embedding层得到的单词表示是针对单个单词而言。在input encoding层中采用双向GRU处理document和question来获得在上下文中单词的表示。BiGRU分别在一个序列的左端和右端运行前向和反向的GRU,通过连接每个单词的这两个GRU的隐藏状态,我们获得了question和document的上下文表示。
2.3、Alignment
我们在question和document上使用soft attention来捕捉它们之间的交互。
在soft-alignment层中我们首先通过上下文表示矩阵Qc和Dc来获得对其矩阵Alignment matrix U。
Uij表示question word Qci 和document word Dcj之间的相似性
2.3.1 Word-level Q-code
对于每一个文档词,我们要找到问题中的哪个词与之相关,为此可以通过以下公式来计算soft attention权重:
通过计算注意力权重,我们得到了每个document单词wi的问题编码。在这篇论文中称之为 word-lever Q-code。由如下公式计算得到:
2.3.2 Question-based filtering
为了更好地探索问题理解,我们设计了这个question-based filtering层。除了用作根据问题在文档中查找关键信息的过滤器外,还可以轻松地将不同的问题表示合并到该层中。
在question-based filtering的基本结构中,对于每个question 单词wi我们发现document中有哪些单词是相关联的,我们可以获得每个问题词wi的文档单词注意力权重。
通过对b进行池化,我们可以得到question-based filter权重bf :
以上使用的池化函数包括最大池化和平均池化,然后根据相应的问题对文档Df 进行软过滤,通过以下公式进行计算。
通过连接文档表示 Dc , word-level Q-code Qw 以及question-filtered document Df,我们最终可以得到这个对齐层表示:
其中“○”代表元素相乘,“-”代表元素相减。
2.4、 Aggregation
在获得局部对齐表示之后,document和question中的关键信息已经收集到了。接着执行aggregation层来寻找答案。我们使用三个BiGRU来模拟聚合局部信息的过程来做出查找答案范围的全局决定。我们发现下图的残差结构在聚合过程中非常有效。
2.5、 Prediction
我们使用指针网络来预测答案的起始位置和终止位置,使用双向预测来获得位置。对于一个方向,我们首先预测答案跨度的起始位置,然后预测结束位置。通过以下公式:
其中 I3 是推理层输出,hs+是第一步的隐藏状态,其中所有的W都是可训练矩阵。我们还可以先预测结束位置然后预测起始位置来执行此操作。
我们最终用以下等式来确定答案范围:
我们在这里使用平均池化