本文主要介绍GA reader模型的基本思想,由论文《Gated-Attention Readers for Text Comprehension》提出,论文直通车
1 论文概述
本篇论文的思想其实是很简单的,可以把其看成是AS reader模型的扩展,尽管模型简单,但是也取得了不错的成绩,也证明了乘法操作机制带来的效果显著。值得一提的是,论文中的相关工作部分,对之前的模型进行了分门别类的概述,这一点要比其他论文的相应部分丰富得多。
2 模型细节
GA reader模型的整体架构如下图所示,看起来很多层有些复杂,其实单独拿粗来看就不复杂了。
总的来说可以分为四个模块:
- 文本表示模块
- 多层结构
- GA 模块
- 答案预测模块
下面就依次来介绍这些模块,不过都是介绍最基本的模型,不包括后面追加的特征。
(1)文本表示模块
文本表示是基础,这篇论文中对问题和文章的表示均采用文本表示法的模型一,即对文本中的单词序列逐一表示,而不是对问题或文章的整体语义信息进行表示。使用这种方法的模型较多,因为没有将所有信息都压缩在一个向量中,所以这样对问题或文章的语义信息保留得相对完整。将输入序列$X=[x_1 , x_2 , … , x_T ]$送入GRU,得到输出$H=[h_1 , h_2 , … , h_T]$,在这个模块中,本篇论文使用的是BiGRU来对文章和问题进行处理,所以对输出的前后向隐层状态进行拼接:
最后,使用$X^{(0)}=[x_1^{(0)},x_2^{(0)}, … , x_{|D|}^{(0)}]$表示文章序列,使用$Y^{(0)}=[y_1,y_2, … , y_{|Q|}]$表示问题序列。
文章表示序列中有个上标$(0)$,因为在这个模型中有很多层,添加上标为了区别于后面每层的文章表示。下面就介绍,不同层之间文章表示是怎么形成的。
(2)多层结构
在上一个模块中得到了文章序列和问题序列表示,在这一个模块中,使用两个不同的BiGRU分别对文章和问题进行处理:
这里的上标也是表示这是第几层的,接下来使用Gated-Attention来对这两个信息进行组合,作为下一层的输入:
其中GA就是接下来要介绍的GA模块。
(3)GA模块
这个模块的思想也是很容易理解的,对于文章中的每一个单词$d_i$,后续操作可以分解成三个操作:
- 计算问题中每个单词与这个给定单词之间的相关性:$\alpha _i=softmax(Q^T d_i)$
- 对问题进行加权求和,得到特定于文章单词$d_i$的问题表示:$\widehat{q_i}=Qa_i$
- 将特定的问题表示和这个文章单词做乘法操作:$x_i=d_i \odot \widehat{q_i}$
(4)答案预测模块
答案预测模块和AS reader模块的一样,主要有以下两个部分:
其中,$I(c,d)$是单词c在文章d中出现位置的集合,最后概率最大的作为答案: