论文笔记:FusionNet:Fusion VIA Fully-aware Attention With Appliciation To Machine Comprehension

  这篇论文主要是关于阅读理解任务,是我今年上半年关注阅读理解任务时阅读的论文,当时读的有点懵,今天无意间浏览,有过一些积累回头再一次阅读,发现当时没懂的今天完全懂了,对整个论文的核心思想也彻底把握住,兴致起来写下这篇博文跟大家分享我的收获。

简要总结

  本文主要工作和创新点是针对注意力机制进行了改进,提出了一个新的概念history of word。顾名思义,“词的历史信息”!当文本在RNN等网络中“流动”的时候会产生对应文本中词的信息,例如在LSTM中,每个词会产生hidden的向量表示,传统的注意力机制并没有考虑history of word,而本文的主要创新点就在于利用history of word进行计算注意力权重来改进注意力机制,并且针对阅读理解任务构建了一个模型架构并且取得优异的效果。
  总之,本文的创新是有理有据的,工作内容充实,是一篇好论文,改进的注意力机制可以探索在其他任务上的应用。

本文的复现代码

动机

  本文先是简介阅读理解任务,并且提出了当前的工作并不能完整考虑段落或者问题的不同层级信息,以图像识别为例,可以从像素、笔画和形状来综合考虑。然后分析得出,如果考虑所有层次的信息,模型将太复杂并且难以学习,推测之前的工作因此才没有考虑所有层次信息,这里提出了一个注意评分函数来利用所有层次信息但是确实轻量级的,原文是这样的

To alleviate this challenge, we identify an attention scoring function utilizing all layers of representation with less training burden.

对原有工作的总结

  fusion在文章中经常出现,Fusion:融合之意,文章总结之前的很多工作都是在如何更好针对阅读理解,将问题和段落进行融合,也就是很多其他阅读理解论文中提到的Interaction, C <-> Q。本文总结了三种级别上的Fusion:
三种级别的Fusion

  上图是文中的论述,分别是:

  • 词级别融合,通过对问题和段落中的单词信息进行相关的融合。词的上下文信息并没有考虑到,而且这里的融合很多也不是通过注意力,而是构造特征。例如,先前有工作提到 EM特征(单词在问题和段落是否都出现)对结果能够起到正向的作用。
  • 高级别的融合,将问题的语义信息融合到段落中,但是高级的语义信息更加不精确,导致模型对细节上把握不好。还有一种可选的就是讲段落语义信息融合到问题中。
  • 自提高融合, 其实就是自注意力机制,让段落表示自我调整。因为段落比较长,上下文之间也是有依赖的,常见的选择是融合了问题语义信息之后,自我调整。还有一个可选的就是问题自我调整。

下面是本文对之前的工作使用的融合方法的总结:(右半图是三种融合方式的图形表示)
先前工作融合方法的总结

Fusion Net

下面详细介绍本文提出的模型和工作。

  1. History of word, 定义Wi <->HoWi,第i个词的历史信息。
  • HoWi= [Wi的各种表示拼接],例如:word embedding,RNN的隐藏层表示或者其他层的相应表示,
    原文引用:

    This may include word embedding, multiple inter- mediate and output hidden vectors in RNN, and corresponding representation vectors in any further layers.

  1. 两段文本A和B, A:{h1A,…,hmA},B:{h1B,…,hnB}, 对应的 HoWA:{HoW1A,…,HoWmA},HoWB:{HoW1B,…,HoWnB}, 将B融合到A,标准的注意力机制是这样计算的
    标准的注意力计算

本文提出的Fully-aware attention,是只修改标准注意力机制计算过程的第一步,

S(hiA,hiB) ==> S(HoWiA, HoWjB)
  1. 看上面的变换,感觉也没有什么,就是再计算注意力权重的时候简单将历史词信息替换进去,并没有什么,但是这边我们仔细来看,我们知道HoW是词W对应的各种表示的拼接,这样会导致维度特别大,计算量会很大,导致模型难以训练。所以,本文又提出了一种变换。
  • 原来的Sij = S(HoWiA, HoWjB),这里的S 一般是点乘的注意力计算,Sij = (HoWiA)TUTV( HoWjB),U,V ∈ Rk*dh,k – attention hidden size,由于维度很大,计算量太大,模型训练艰难,本文提出了下面的优化。
  • 在上面的基础上,本文提出针对矩阵 UTV的约束,约束其为对称矩阵,对称矩阵可以分解成 UTDU,其中D ∈ Rk*k,且D是对角矩阵。最终,注意力权重计算公式变为下式:
    Sij = (HoWiA)TUTDU( HoWjB)
  • 文中说道:对称形式仍然能够在两个不同的历史词信息矩阵计算出注意力权值,而且我们将非线性与对称形式结合在一起,以在历史词信息的不同部分之间提供更丰富的交互。最终的形式如下:
    Sij = f(U(HoWiA))TDf(U( HoWjB))

    这里的f是作用在矩阵元素上的激活函数。文中提到,f(x) = max(0,x)效果比较好。

  以上,就是本文提出的利用历史词信息来修改注意力权重的计算,使得信息融合能够更好的具体公式计算。

整体框架图

在了解了Full-aware attention到底是怎么一回事之后,我们跟着论文往下阅读,开始进入针对阅读理解任务,FusionNet的具体实现和细节。我们先看一下整体框架图:

FusionNet框架图

刚一看到这个框架图,有点眼花,可能一下子不能完全理解,但是详细阅读论文中对框架细节的描述,能够搞定。(未完待续!)

朋友~给个赏馁!