当前位置:   article > 正文

Bi-Directional Attention Flow For Machine Comprehension_bidirectional attention flow for machine comprehen

bidirectional attention flow for machine comprehension. arxiv:1611.01603

关键词

bi-directional attention

来源

arXiv 2016.11.05

问题

利用 multi-stage 信息对文章进行编码,同时尝试两个方向上的 attention 来提高 RC 性能。


文章思路

BiDAF 文中分为六步

这里写图片描述

Character Embedding Layer
利用 character level CNN 将每个词映射到一个高维向量空间
Word Embedding Layer
利用 GloVe 将每个词映射到一个高维向量空间

然后把 character embedding 和 word embedding 拼接起来,通过两层 Highway Network 处理后得到 passage 矩阵和 query 矩阵,再输入到后面的层次。

Phrase Embedding Layer
将前两步拼接得到的结果利用 Bi-LSTM 进行编码,以获得 contextual embeding,分别得到 passage 矩阵 H 和 query 矩阵 U
Attention Flow Layer

定义相似度矩阵 S 如下

Stj=α(H:t,U:j)α(h,u)=w(s)T[h;u;hu]

其中 表示 element-wise multiplication, w(s)T 表示一个可训练的向量,可以把后面的向量映射为一个标量。后面的相似度计算均采用这里定义的公式。

Context-to-query Attention (C2Q) 这个方向的 attention 需要确定对于每一个 passage 中的词, query 中哪个词与它最接近。将 query 中每个词与 passage 中的一个词计算相似度,然后经 softmax 归一化后,计算 query 向量加权和。结果作为对应于 passage 这个词的问题表示向量,最后得到矩阵 U~

Query-to-context Attention (Q2C) 这个方向的 attention 需要确定对于每一个 query 中的词,哪一个 passage 中的词和它最相似,也就是对于回答比较重要。取每列最大值,然后将这些最大值经 softmax 归一化后,计算 passage 向量加权和。将这个向量平铺 Vpassage (passage 词汇个数) 次得到矩阵 H~

最终将这三个矩阵按如下方法拼接起来:

G=β(H;U~;H~)β(h;u~;h~)=[h;u~;hu~;hh~]

这样就得到了每个 passage 中词的 query-aware representation。

Modeling Layer
G 中的向量再次经过一个 Bi-LSTM 得到矩阵 M
Output Layer
这一步预测 span 的开始位置和结束位置,如下
pstart=softmax(w(pstart)T[G;M])pend=softmax(w(pend)T[G;M2])

其中 M2 表示将 M 输入到另外一个 Bi-LSTM 中的结果, w(pstart)T w(pend)T 都是可训练的向量。

训练目标采用

L(θ)=iNlog(pstarttrue)+log(pendtrue)


资源

论文地址:https://arxiv.org/abs/1611.01603
数据地址:https://rajpurkar.github.io/SQuAD-explorer/

相关工作

Glove
这是一种不同于 word2vec 利用全局信息训练词向量的方式。word2vec 虽然取得了不错的效果,但模型上仍然存在明显的缺陷,比如没有考虑词序,没有考虑全局的统计信息等等。而 GloVe 将全局词-词共现矩阵进行了分解,训练得到词向量。但是相比 LSI 采用的词-文档矩阵,词-词共现矩阵更加稠密,模型中对低频词和高频词的影响做了一定地弱化处理。
HighWay Networks

这种网络给原来的 FNN 加了 gate。原来的 FNN 是这样的

y=H(x,WH)

其中 H 表示非线性变换。而 Highway Networks 则又加了两个非线性变换变成
y=H(x,WH)T(x,WT)+xC(x,WC)

其中 T 是 transform gate, C 是 carry gate。一般取 C=1T

这种网络最大的优点是能够利用 SGD 训练更深的网络,在实验中,即使加到 100 层也能够有效训练。

简评

文中采用新的 attention 机制,从实验效果来看确实提高了效果,在 development set 和 test set 上分别取得了 77.8% 和 78.1% 的 F-score。同时在 development set 上去掉 C2Q 与 去掉 Q2C 相比,分别下降了 12 和 10 个百分点,也就是说 C2Q 这个方向上的 attention 更为重要。

这篇文章中的 attention 计算后流动到下一层中,而不是像 Memory Networks 里面动态计算 attention。这么做一方面可以减少早期加权和造成的损失,另一方面也能够将之前错误 attention 的信息恢复。

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

闽ICP备14008679号