【论文笔记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”来选择最终的答案,这里就不做介绍了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: simam是一种简单的、无需参数的注意力模块,用于卷积神经网络。它可以帮助网络更好地捕捉输入数据中的重要信息,提高模型的性能。simam的设计简单,不需要额外的参数,可以方便地集成到现有的卷积神经网络中。 ### 回答2: SimAM(简单、无需参数的注意力模块)是一种卷积神经网络的注意力机制,旨在显著提高图像分类和物体检测任务的性能。这个模块可以自适应地学习到不同层的特征,并对其进行加权,以便更好地捕获相关信息并抑制噪声。 SimAM模块的核心思想是将一组特征向量传递到一个简单的多头自注意力层,以便为不同特征之间的联系评分,并生成那些较为重要的特征向量,这些向量随后用于后续的网络计算中。具体来说,SimAM模块将输入特征张量分为若干个通道,并将每个通道作为输入,送入多头自注意力层。该层是由若干个子层堆叠而成的,其中每个子层都包括一个多头自注意力机制和一些前向反馈层。自注意力机制可以捕捉到输入特征张量内部各个通道之间的关系,并生成相应的权重矩阵。前向反馈层可以帮助模型更好地适应各种难以预测的数据。 SimAM模块与传统的注意力机制相比,具有以下优点: 1.不需要额外的参数:SimAM模块不需要任何额外的参数,仅仅依靠了平移不变性和自注意力机制即可提取图像特征。 2.易于训练:模块中的每个子层都具有非常简单的结构,可以很容易地进行训练和调整参数。 3.高效:SimAM模块的计算成本低,且可以与传统的卷积神经网络结构相结合,以提高图像分类或物体检测的精度。 总之,SimAM模块是一种非常优秀的注意力机制,具有简单而有效的设计,可用于各种计算机视觉应用中。相信随着更多研究人员的关注,SimAM模块会在未来得到更多的应用和发展。 ### 回答3: Simam是一种简单的、无参数的卷积神经网络注意力模块,它能够提高卷积神经网路的性能。该模块的主要目的是为了实现对卷积层特征的自适应加权,从而优化卷积神经网络的训练过程。 在卷积神经网络中,每个卷积层都会生成一系列特征图,这些特征图可以被看作是卷积层对输入图像的不同抽取方式。在经过多层的卷积操作后,这些特征图逐渐变得抽象和复杂,也变得更具有区分度。然而,由于不同的特征图的质量和作用是不同的,因此,需要一种方法来自适应地对它们进行加权,以便提高整个网络的性能。 Simam模块的核心思想是使用特定的权重来实现对特征图进行加权。这些权重的计算不需要任何参数,而是通过应用一些简单的非线性映射来实现的。具体来说,Simam模块会对特征图进行归一化,然后通过一些非线性函数(如ReLU)进行变换,最终得到一个类似于置信度的分数,从而决定特征图的相对重要性。 在使用Simam模块的卷积神经网络中,该模块被添加在卷积层之后,可以作为一种自适应加权机制来对特征图进行加权。这种机制能够更加准确地区分每个特征图的质量和作用,从而提高整个卷积神经网络的性能。 总之,Simam模块是一种简单而有效的自适应加权机制,可以提高卷积神经网络的性能。在实际应用中,它可以被广泛应用于图像分类、物体检测、语义分割等领域,从而提高计算机视觉的精度和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值