【论文笔记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,最后每个单词的表示是由该单词的前向和后向隐层状态拼接得到的,这三个步骤可以用下面的几个公式来表示:
e ( x ) = W e ⋅ x , w h e r e   x ∈ D , Q e(x)=W_e \cdot x, where \ x \in D,Q e(x)=Wex,where xD,Q
h s ( x ) → = G R U → ( e ( x ) ) \overrightarrow{h_s(x)}=\overrightarrow{GRU}(e(x)) hs(x) =GRU (e(x))
h s ( x ) ← = G R U ← ( e ( x ) ) \overleftarrow{h_s(x)}=\overleftarrow{GRU}(e(x)) hs(x) =GRU (e(x))
h s ( x ) = [ h s ( x ) → ; h s ( x ) ← h_s(x)=[\overrightarrow{h_s(x)};\overleftarrow{h_s(x)} hs(x)=[hs(x) ;hs(x)
然后使用 h d o c ∈ R ∣ D ∣ ∗ 2 d h_{doc} \in R^{|D|*2d} hdocRD2d h q u e r y ∈ R ∣ Q ∣ ∗ 2 d h_{query} \in R^{|Q|*2d} hqueryRQ2d分别表示文章和问题的上下文表示。

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

这部分的操作很简单,利用点乘操作来得到文章中的一个词和问题中一个词的匹配程度。具体来说,给定文章中第i个单词以及问题中的第j个单词,将这两个向量进行点乘得到一个标量,这个标量就表示这两个向量之间的匹配程度。公式如下:
M ( i , j ) = h d o c ( i ) T ⋅ h q u e r y ( j ) M(i,j)=h_{doc}(i)^T \cdot h_{query}(j) M(i,j)=hdoc(i)Thquery(j)
其实在这个公式里面,点乘是对应元素相乘后相加,个人感觉公式是有些问题的,公式中使用了转置,是矩阵乘法,那么就不应该再使用$\ \cdot \ 了 , 而 应 该 使 用 了,而应该使用 使 * , 我 也 不 清 楚 是 不 是 我 理 解 错 了 , 反 正 最 后 得 到 的 是 一 个 标 量 。 将 文 章 的 单 词 和 问 题 中 的 单 词 两 两 配 对 , 得 到 矩 阵 ,我也不清楚是不是我理解错了,反正最后得到的是一个标量。 将文章的单词和问题中的单词两两配对,得到矩阵 M(i,j) \in R^{|D|*|Q|}$,也就是下面这个:

两量匹配

(3)独立注意力模块

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

column-wise softmax

对应的公式也很简单,首先是得到每一列处理后的结果
a ( t ) = s o f t m a x ( M ( 1 , t ) , . . . , M ( ∣ D ∣ , t ) a(t)=softmax(M(1,t),...,M(|D|,t) a(t)=softmax(M(1,t),...,M(D,t)
将处理后的每一列进行拼接:
a = [ a ( 1 ) , a ( 2 ) , . . . , a ( ∣ Q ∣ ) ] a=[a(1),a(2),...,a(|Q|)] a=[a(1),a(2),...,a(Q)]

(4)AoA模块

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

公式为:
β ( t ) = s o f t m a x ( M ( t , 1 ) , . . . , M ( t , ∣ Q ∣ ) ) \beta (t)=softmax(M(t,1),...,M(t,|Q|)) β(t)=softmax(M(t,1),...,M(t,Q))
β = 1 n ∑ t = 1 ∣ D ∣ β ( t ) \beta = \frac{1}{n}\sum_{t=1}^{|D|} \beta (t) β=n1t=1Dβ(t)
这样就得到了上图右边的那个小向量。
接着就是重点了, a a a一个注意力权重矩阵,$ \beta 是 一 个 权 重 向 量 , 将 是一个权重向量,将 a 和 和 \beta $做点乘,这样就得到了**“attended document-level attention”,这个操作就是the attention-over-attention mechanism**,AoA实质上就是利用注意力来对另一个层次的注意力加权求和。

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

(5)预测模块

预测模块和AS reader 的预测模块很相似,将某个单词在全文中出现地方的权重信息都加起来:
P ( w ∣ D , Q ) = ∑ i   i n I ( w , D ) s i ,   w ∈ V P(w|D,Q)=\sum_{i \ in I(w,D)} s_i, \ w \in V P(wD,Q)=i inI(w,D)si, wV
其中 I ( w , D ) I(w,D) I(w,D)表示单词w在文章D中出现的位置集合。
最后目标函数如下:
L = ∑ i l o g ( p ( x ) ) ,   x ∈ A L=\sum_{i}log(p(x)), \ x \in A L=ilog(p(x)), xA

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值