【论文笔记13】Attention-over-Attention Neural Networks for Reading Comprehension

本文主要介绍AoA reader 的模型结构,由论文《Attention-over-Attention Neural Networks for Reading Comprehension》提出,论文直通车

1 论文概述

该论文针对机器阅读理解任务,提出了AoA reader模型,在CNN/Daily Mail 和CBT数据集上取得了不错的效果。

2 模型细节

模型结构

模型的结构图如上图所示,主要包含了以下几个模块:

  • 上下文编码模块(Contextual Embedding)
  • 两两匹配模块(Pair-wise Matching Score)
  • 独立注意力模块(Individual Attentions)
  • AoA模块(Attention-over-Attention)
  • 最终预测模块(Final Predictions)

接下来就逐一介绍这些组成部分。

(1)上下文编码模块

对于问题和文章的表示,整体来说使用的文本表示法中的模型1的方法(即不对文章或者问题的整体语义信息建模,而是对文本中的单词序列逐一表示)。本文中的具体做法是,首先先将文章和问题分别表示成one-hot形式,然后使用词向量矩阵将问题和文章中的one-hot形式转化为向量形式(注意,在具体实现的过程中,使用的随机初始化词向量矩阵而没有使用预训练),最后将这些向量序列送入BiRNN,最后每个单词的表示是由该单词的前向和后向隐层状态拼接得到的,这三个步骤可以用下面的几个公式来表示:

然后使用$h_{doc} \in R^{|D|2d}$和$h_{query} \in R^{|Q|2d}$分别表示文章和问题的上下文表示。

(2)两两匹配模块(Pair-wise Matching Score)

这部分的操作很简单,利用点乘操作来得到文章中的一个词和问题中一个词的匹配程度。具体来说,给定文章中第i个单词以及问题中的第j个单词,将这两个向量进行点乘得到一个标量,这个标量就表示这两个向量之间的匹配程度。公式如下:

其实在这个公式里面,点乘是对应元素相乘后相加,个人感觉公式是有些问题的,公式中使用了转置,是矩阵乘法,那么就不应该再使用$\ \cdot \ $了,而应该使用$ $,我也不清楚是不是我理解错了,反正最后得到的是一个标量。
将文章的单词和问题中的单词两两配对,得到矩阵$M(i,j) \in R^{|D|
|Q|}$,也就是下面这个:

两量匹配

(3)独立注意力模块

在得到文章和问题的单词两两匹配矩阵后,对每一列使用一个softmax函数,这样做的意义是,对于问题中$t$时刻的单词,得到一个独立的文档级的注意力(通俗点理解就是对于问题中的某一个单词,文章中的每个单词与该单词的相关程度)。操作的示意图如下:

column-wise softmax

对应的公式也很简单,首先是得到每一列处理后的结果

将处理后的每一列进行拼接:
$a=[a(1),a(2),…,a(|Q|)]$

(4)AoA模块

这个模块很有意思,也是这篇论文的亮点,利用注意力来对注意力权重进行加权求和。它首先计算一个相反的注意力,具体来说,在前面那个M矩阵的行上使用softmax函数,表示的含义就变成了给定一个文章中的单词,问题中的那些单词对其的重要性,这样的操作的话,就会得到$|D|$个行向量,然后对这些向量求一个平均。

公式为:

这样就得到了上图右边的那个小向量。
接着就是重点了,$a$一个注意力权重矩阵,$ \beta $是一个权重向量,将$a$和$ \beta $做点乘,这样就得到了“attended document-level attention”,这个操作就是the attention-over-attention mechanism,AoA实质上就是利用注意力来对另一个层次的注意力加权求和。

表达式为$s=a^T \beta $,这里的公式表示我也觉得有点问题。

(5)预测模块

预测模块和AS reader 的预测模块很相似,将某个单词在全文中出现地方的权重信息都加起来:

其中$I(w,D)$表示单词w在文章D中出现的位置集合。
最后目标函数如下:

本文也使用了“N-best Re-ranking Strategy”来选择最终的答案,这里就不做介绍了。