深度之眼Paper带读笔记NLP.22:双向Attention
文章目录
- 前言
- 第一课 论文导读
- 阅读理解简介
- 多种阅读理解任务
- 人工合成问答
- 完形填空
- 选择题
- 前期知识储备
- 第二课 论文精读
- 论文整体框架
- 对比模型
- 注意力机制
- Match-LSTM(一种阅读理解的模型用的是attention)
- 模型
- 双向Attention流模型Bi-directional Attention Flow Model
- Embedding Model
- Contextual Embedding Layer
- Attention Flow Layer
- Modeling Layer
- Output Layer
- 实验和结果
- 数据集
- 实验结果
- 讨论和总结
- 参考文献
前言
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(yi−1,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=1∑Txaijhj,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) whereeij=a(sj−1,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
然后对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) Gi=tanh(WqHq+(Wphip+Wrhi−1r+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(wTGi+b⊗eQ)
z → i = [ h i p H q α → i T ] \overrightarrow z_i=\left[\frac{h_i^p}{H^q\overrightarrow\alpha_i^T}\right] zi=[HqαiThip]
下面的 h → i r \overrightarrow h_i^r hir是指上一个时间步的结果
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}) hir=LSTM(zi,hi−1r)
下面两个式子是反向的结果
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) Gi=tanh(WqHq+(Wphip+Wrhi−1r+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(wTGi+b⊗eQ)
最后的结果为: H = ( h → r , h ← r ) H=(\overrightarrow h^r,\overleftarrow h^r) H=(hr,hr)
最后预测的答案用答案在文档中开始位置start_id和结束位置end_id来表示。
![](/assets/blank.gif)
模型
双向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) (T,J), 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:t∗U: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:t∗U: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} Uc−qt=∑jatjU:j,其中 a t j a_{tj} atj是S中第t行做softmax的结果, U c − q t U_{c-q_t} Uc−qt的维度为2dT。
3.计算Query-to-context矩阵:对于Query,Context中哪个词和Query最相关:
h q − c = ∑ t b t H : t h_{q-c}=\sum_tb_tH_{:t} hq−c=∑tbtH:t,其中b是对S每行求max-pooling之后求softmax的结果, H q − c H_{q-c} Hq−c为重复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;Uc−q:t;H:t∗Uc−q:t;H:t∗Hq−c: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(θ)=−N1i∑Nlog(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
深度之眼Paper带读笔记NLP.22:双向Attention相关推荐
- 深度之眼Paper带读笔记NLP.2:word2vec.baseline.1
文章目录 前言 论文储备知识 语言模型 基于专家语法规则的语言模型 统计语言模型 统计语言模型中的平滑操作 基于马尔科夫假设 语言模型评价指标:困惑度(Perplexity) 论文背景知识 词的表示方 ...
- 深度之眼Paper带读笔记NLP.5:transformer
文章目录 前言 第一课:论文导读 序列模型简介 序列问题 序列模型 多到多的序列转换模型Sequence To Sequence Models 带有注意力的循环神经网络RNNs With Attent ...
- 深度之眼Paper带读笔记NLP.30:BERT
文章目录 前言 第一课 导读 语言模型与Word Embedding 语言模型 Language Model 神经网络语言模型Neural Network Language Model 词嵌入 Wor ...
- 深度之眼Paper带读笔记NLP.18:UMT
文章目录 前言 第一课 论文导读 机器翻译简介 机器翻译研究意义 机器翻译的发展历史 基于规则的机器翻译 基于统计的机器翻译 基于实例的机器翻译 基于神经网络的机器翻译 端到端的神经机器翻译(Sequ ...
- 深度之眼Paper带读笔记NLP.19:指针生成网络
文章目录 前言 第一课 论文导读 摘要简介 抽取式文本摘要 基于TextRank的抽取式摘要 基于聚类的抽取式摘要 基于序列标注的抽取式摘要 文本摘要发展历史 生成式摘要 序列到序列结构 两类方法对比 ...
- 深度之眼Paper带读笔记目录
文章目录 简介 图神经网络(已完结) NLP精读论文目录(已完结) NLP Baseline(已完结) CV目录(已太监) 简介 本次的Paper学习营分CV和NLP两个方向,每个方向又分精读.重点阅 ...
- GNN手写字体识别java_深度之眼Paper带读笔记GNN.09.GGNN
文章目录 前言 本课程来自深度之眼,部分截图来自课程视频. 文章标题:Gated Graph Sequence Neural Networks 门控序列图神经网络(GGNN) 作者:Yujia Li∗ ...
- 深度之眼Paper带读笔记GNN.06.GAT
文章目录 前言 导读 论文结构 学习目标 研究背景 图卷积 Notation 归纳式学习 空域与频域卷积 GAT模型多头注意力机制 意义 泛读 摘要 论文结构 精读 算法模型总览 GNN的结构 GAT ...
- 深度之眼Paper带读笔记GNN.09.GGNN
文章目录 前言 论文结构 学习目标 泛读 研究背景 研究意义 摘要 章节 精读 细节一:GRU模型回顾 细节二:GGNN模型 Propagation Model output model 模型框架 G ...
最新文章
- vs2019 MFC 中 cannot open include file 'afxres.h' 问题解决方法
- mysql 执行计划大于_Mysql执行计划(大章)
- bzoj1051 [HAOI2006]受欢迎的牛 tarjan缩点
- linux 备份svn
- SAP UI5 busy Dialog debug - 单步调试
- 流式大数据计算实践(4)----HBase安装
- python数据结构剑指offer-链表中环的入口结点
- javascript简易缓动插件
- php和其他语言的区别,为什么说php是弱类型好学,跟其他语言的区别
- 洛谷 P1725 简单DP单调队列优化
- centos7 安装 dos2unix
- STM32触摸屏校准数据的存取
- 阿里云acp考试简介,以及考试准备与攻略
- linux poodle漏洞,SSL POODLE[贵宾犬]漏洞的解决办法
- 牛客——The Chivalrous Cow(bfs板题)
- 蓝桥杯试题:求数差(简单易懂无脑)java
- Android APP 增量更新demo
- 微信公众平台nbsp;示例代码nbsp;分析
- Verizon 宣布 48 亿美元收购雅虎核心业务
- VLfeat学习(1)——Covariant feature detectors(协变特征检测器)
热门文章
- 【小月电子】XILINX FPGA开发板(XLOGIC_V1)系统学习教程-LESSON1点亮LED灯
- Unity 之 OnGUI实时显示游戏FPS...
- Coinbase入局带火以太坊L2生态,Arbitrum生态大盘点
- 小桌子.自己设计桌面的小桌子
- 如何使用阿里巴巴矢量图标库
- RCE(远程命令执行)绕过总结
- 『TensorFlow2.0正式版』TF2.0+Keras速成教程·零:开篇简介与环境准备
- Cocos Creater 学习笔记(一)
- html微信播放器,原生js 编写的微信播放器插件(仿微信公众号播放器组件)
- Python Django框架学习03:Django 安装