当前位置:   article > 正文

深度之眼Paper带读笔记NLP.22:双向Attention

双向attention

前言

Bi-Directional Attention Flow for Machine Comprehension
用于阅读理解的双向attention流模型
作者:Minjoon Seo et al.
单位:Allenai
发表会议及时间:ICLR2017(表示学习learning representation的顶会)
在线LaTeX公式编辑器
别人的翻译
1.阅读理解任务的简介
阅读理解,有时也叫问答任务,就是给定背景文档和问题,需要回答出答案,一般答案都是文档中连续的一段话。
2.常见的阅读理解任务
1)SQuAD形式:给定背景文档和问题,需要回答出答案,一般答案都是文档中连续的一段话。
2)人工合成问答:人工构造若干简单事实形成的文章以及对应的问题,要求机器阅读文章并作出一定的推理,从而得到正确答案。
3)完形填空:将真实的新闻数据中的实体名如人名或者地名等隐去,用实体标记符号替换掉实体词具体名称,问题中一般问哪个实体怎么怎么了,答案就是对应的实体标记。

4)选择题:给定一篇文章,一个问题和几个获选答案,需要从多个候选答案中选出正确答案,类似于四六级的阅读理解。
3. 了解Attention
了解attention的概念和相关概念,了解attention的意义,了解attention中query、key、value的含义。

第一课 论文导读

阅读理解简介

阅读理解:通过阅读文章来回答文章相关的问题。
意义:可以构建通用的问答系统。
在这里插入图片描述

多种阅读理解任务

人工合成问答

人工构造若干简单事实形成的文章以及对应的问题,要求机器阅读文章并作出一定的推理,从而得到正确答案。
在这里插入图片描述

完形填空

将真实的新闻数据中的实体名如人名或者地名等隐去,用实体标记符号替换掉实体词具体名称,问题中一般问哪个实体怎么怎么了,答案就是对应的实体标记。
在这里插入图片描述

选择题

给定一篇文章,一个问题和几个获选答案,需要从多个候选答案中选出正确答案,类似于四六级的阅读理解。
在这里插入图片描述

前期知识储备

·了解Attention的概念
·了解attention的概念和相关方法,了解attention的意义,参考论文:
Neural Machine Translation by Jointly Learning to Align and Translate(这个之前读过)
https://blog.csdn.net/oldmao_2001/article/details/100797735

第二课 论文精读

论文整体框架

摘要
1.介绍
2.模型
3.相关工作
4&5.实验
6.总结

对比模型

一种基于深度学习的阅读理解模型

注意力机制

虽然之前有写过,还是直接贴过来好了:
https://blog.csdn.net/oldmao_2001/article/details/102653672
来自之前读过的:Neural Machine Translation by Jointly Learning to Align and Translate
Encoder:单层双向LSTM。(就是下图中下面两层方框)
Decoder:
对于输出:
p ( y i ) = g ( y i − 1 , s i , c i ) p(y_i)=g(y_{i-1},s_i,c_i) p(yi)=g(yi1,si,ci)
对于 c i c_i ci
c i = ∑ j = 1 T x a i j h j , a i j = e x p ( e i j ) ∑ k = 1 T x e x p ( e i k ) c_i=\sum_{j=1}^{T_x}a_{ij}h_j,a_{ij}=\frac{exp(e_{ij})}{\sum_{k=1}^{T_x}exp(e_{ik})} ci=j=1Txaijhj,aij=k=1Txexp(eik)exp(eij)
w h e r e   e i j = a ( s j − 1 , h j ) where \space e_{ij}=a(s_{j-1},h_j) where eij=a(sj1,hj)
在这里插入图片描述

Match-LSTM(一种阅读理解的模型用的是attention)

模型来自:Machine Comprehension using Match-LSTM And Answer Pointer
Q是问题query,P是文档passage,对这两个东西都用LSTM进行处理
H p = L S T M → ( P ) , H q = L S T M → ( Q ) H^p=\overrightarrow{LSTM} (P),H^q=\overrightarrow{LSTM}(Q) Hp=LSTM (P),Hq=LSTM (Q)
然后对passage中的每一个 h i p h_i^p hip(代表词)作attention,就是下面的G, b p b^p bp是偏置, e Q e_Q eQ代表重复的次数
G → i = t a n h ( W q H q + ( W p h i p + W r h → i − 1 r + b p ) ⊗ e Q ) \overrightarrow G_i=tanh(W^qH^q+(W^ph_i^p+W^r\overrightarrow h^r_{i-1}+b^p)\otimes e_Q) G i=tanh(WqHq+(Wphip+Wrh i1r+bp)eQ)
用softmax得到每一个词对应的attention权重
α → i = s o f t m a x ( w T G → i + b ⊗ e Q ) \overrightarrow\alpha_i=softmax(w^T\overrightarrow G_i+b\otimes e_Q) α i=softmax(wTG i+beQ)
z → i = [ h i p H q α → i T ] \overrightarrow z_i=\left[\frac{h_i^p}{H^q\overrightarrow\alpha_i^T}\right] z i=[Hqα iThip]
下面的 h → i r \overrightarrow h_i^r h ir是指上一个时间步的结果
h → i r = L S T M → ( z → i , h → i − 1 r ) \overrightarrow h_i^r=\overrightarrow{LSTM}(\overrightarrow z_i,\overrightarrow h^r_{i-1}) h ir=LSTM (z i,h i1r)
下面两个式子是反向的结果
G ← i = t a n h ( W q H q + ( W p h i p + W r h ← i − 1 r + b p ) ⊗ e Q ) \overleftarrow G_i=tanh(W^qH^q+(W^ph_i^p+W^r\overleftarrow h^r_{i-1}+b^p)\otimes e_Q) G i=tanh(WqHq+(Wphip+Wrh i1r+bp)eQ)
α ← i = s o f t m a x ( w T G ← i + b ⊗ e Q ) \overleftarrow \alpha_i=softmax(w^T\overleftarrow G_i+b\otimes e_Q) α i=softmax(wTG i+beQ)
最后的结果为: H = ( h → r , h ← r ) H=(\overrightarrow h^r,\overleftarrow h^r) H=(h r,h r)
最后预测的答案用答案在文档中开始位置start_id和结束位置end_id来表示。
在这里插入图片描述

模型

双向Attention流模型Bi-directional Attention Flow Model

模型比较复杂,有很多个层,文中称为多stage
在这里插入图片描述

Embedding Model

Word Embedding 用的是GLOVE,下图黄色部分,Character Embedding 用的是Char-CNN,下图粉红色部分
在这里插入图片描述
下面是Character Embedding的图例,看到先对词进行pad,然后卷积核大小是3,stride为1,对输入进行卷积后得到4个结果,有4个卷积核,所有有四个颜色,然后对卷积后的结果进行max pooling,每个卷积结果得到一个值。
在这里插入图片描述

Contextual Embedding Layer

文档级别的Embedding 层
在这里插入图片描述
下面是原文,大意是说用的是LSTM,而且用的是双向LSTM,最后把两个方向的结果concat到一起,所以维度是2d×T(T为背景文档中词的个数)的。H我背景文档向量,U是query文档向量,J是U中词的个数。
在这里插入图片描述

Attention Flow Layer

在这里插入图片描述
接上一层得到的结果H和U,他们的维度分别为2d×T和2d×J,然后
1.计算相似度矩阵S,大小为 ( T , J ) (T,J) (TJ) S t j = w [ H : t ; U : j ; H : t ∗ U : j ] S_{tj}=w[H_{:t};U_{:j};H_{:t}*U_{:j}] Stj=w[H:t;U:j;H:tU:j]
上面公式中 H : t H_{:t} H:t表示H中的一列,维度是2d1, U : j U_{:j} U:j表示U中的一列,维度是2d1,然后 H : t ∗ U : j ] H_{:t}*U_{:j}] H:tU:j]相乘的结果维度也是2d1的,最后把他们concat出来维度的大小就变成6d1的,w维度是16d的,最后 S t j S_{tj} Stj就变成一个常量值,代表文档向量t和query向量j的相似度。下面分两个方向进行计算:
2.计算Context-to-query矩阵:对于Context中的词w,query中哪些词和w最相关:
U c − q t = ∑ j a t j U : j U_{c-q_t}=\sum_ja_{tj}U_{:j} Ucqt=jatjU:j,其中 a t j a_{tj} atj是S中第t行做softmax的结果, U c − q t U_{c-q_t} Ucqt的维度为2d
T。
3.计算Query-to-context矩阵:对于Query,Context中哪个词和Query最相关:
h q − c = ∑ t b t H : t h_{q-c}=\sum_tb_tH_{:t} hqc=tbtH:t,其中b是对S每行求max-pooling之后求softmax的结果, H q − c H_{q-c} Hqc为重复T次的结果。
4.合并两个矩阵得到G: G : t = [ H : t ; U c − q : t ; H : t ∗ U c − q : t ; H : t ∗ H q − c : t ] G_{:t}=[H_{:t};U_{c-q:t};H_{:t}*U_{c-q:t};H_{:t}*H_{q-c:t}] G:t=[H:t;Ucq:t;H:tUcq:t;H:tHqc:t]
G : t G_{:t} G:t为4个2d×1的矩阵concat的8d1的结果。G的维度就为8dT

Modeling Layer

在这里插入图片描述
这里的输入是上一层得到的G,维度大小如图所示。
这里用到了两层的双向LSTM处理,得到结果M,其维度是2d×T的。
在这里插入图片描述

Output Layer

在这里插入图片描述
根据前面内容知道:G和M两个东西concat到一起维度为10d×T的,w维度是10d×1
p 1 = s o f t m a x ( w ( p 1 ) T [ G ; M ] ) p^1=softmax(w^T_{(p^1)}[G;M]) p1=softmax(w(p1)T[G;M])
p 2 = s o f t m a x ( w ( p 2 ) T [ G ; M 2 ] ) p^2=softmax(w^T_{(p^2)}[G;M^2]) p2=softmax(w(p2)T[G;M2])
L ( θ ) = − 1 N ∑ i N l o g ( p y i 1 1 ) + l o g ( p y i 2 2 ) L(\theta)=-\frac{1}{N}\sum_i^Nlog(p^1_{y_i^1})+log(p^2_{y_i^2}) L(θ)=N1iNlog(pyi11)+log(pyi22)

实验和结果

数据集

SQuAD:斯坦福大学的问答数据集,包含100K+的问题答案对,其中答案是背景文档中的连续的一段话,给定问题和背景文档要求找到背景文档中的连续的一段话作为的答案。
完形填空数据集:从CNN和DailyMail上选取的新闻,分别包含300k/4k/3k数据和879k/65k/53k数据。

实验结果

单模型上要比R-net差一点,但是集成模型NB。右边显示了去掉模型的某个部分后得到的实验结果。
在这里插入图片描述
在这里插入图片描述

讨论和总结

论文主要创新点:
A. 提出了一种双向attention流的模型。
B.使用了字符,词,文本多种级别的信息。
C.在多个数据集上取得了SOTA的效果。
总结:
对比模型:本文对比了Match-Lstm模型。
模型:本文提出了一种双向attention流模型。
实验:本文提出的在对多个数据集上取得了SOTA的结果。

参考文献

Shuohang Wang et al.Neural Machine Translation by Jointly Learning to Align and Translate

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/527701
推荐阅读
相关标签
  

闽ICP备14008679号