概述
本文提出了门机制和自匹配注意力机制。
门机制:
原先的做法是将得到的问题注意力向量和文本编码直接送入到RNN中得到新的融入问题的文本表示。
但是考虑到文本中的每个词对于问题是有不同的重要程度的,引入了一个门机制,根据与问题的相关程度给文本每个词赋于不同的权重。然后把问题注意力向量和赋予权重后的文本表示送入RNN中得到新的融入问题的文本表示。
自匹配注意力机制:self-attention和gate机制的融合
对融入问题的新文本表示进行self-attention,加强文本内部之间的联系,并同理运用门机制,最终得到文本表示hp
论文的链接
Gated Self-Matching Networks for Reading Comprehension and Question Answering
模型
1.问题和文本的编码
对输入的文本和问题分别进行单词级别的embedding(ep和eq)和字符级别的embedding(cp和cq),然后再将两部分拼接,送入到双向GRU中,得到文本和问题的编码表示Up和Uq
【注】对于使用字符级别的embedding是因为对于未登录词的表示有好处(也就是数据集中无法表示的词UNK)
2.门注意力网络
通过注意力机制,我们可以得到融入问题的文本表示,并提出了通过门机制,来确定文本中每个词对于问题的重要程度。
计算注意力向量,计算文本编码和问题编码的相似度矩阵,然后softmax得到文本中的每个词基于问题中每个词的权重,最后和问题编码进行加权和,得到注意力向量Ct
之前:
第一种做法:
直接将得到的注意力向量Ct和前一时刻得到的融入问题的文本表示Vt-1送入到RNN 中得到下一时刻融入问题的新文本表示Vt
第二种做法:match-lstm
将得到的注意力向量Ct和文本编码Ut拼接,然后和前一时刻得到的含有问题的文本表示Vt-1一起送入到RNN中,得到下一时刻融入问题的新文本表示Vt
本文的做法:引入了门机制gt
在RNN的输入[Ut,Ct]上进行处理,加了门机制,是认为文本中只有部分词和问题是相关的。计算文本编码和注意力向量的相关性打分gt,然后再将gt和[Ut,Ct]相乘得到[Ut,Ct]*
然后再将[Ut,Ct]*送入到RNN中得到新文本表示
这一步是考虑文本和问题之间的注意力
3.自匹配注意力机制
对新文本表示Vp做了一步self-attention,与自身匹配,增强文本内部之间的联系,加强了上下文的关系,同时也用了门机制,过滤文本中的不重要的信息
s是新文本和新文本之间每个词的相似度矩阵,然后做soft max得到对应的权重,然后再和新文本做加权求和得到注意力向量
引入门机制
将得到的注意力向量Ct和文本编码Vt拼接,然后和前一时刻的隐藏层ht-1一起送入到RNN中,得到下一时刻的输出ht
这一步是考虑文本和文本之间的注意力
4.输出层
使用指针网络去预测答案的开始和结束位置。根据给定的ht,利用注意力机制当作指针,在段落中选择答案开始和结束的位置。
这一步是考虑做文章与答案之间的attention,哪些词与答案最接近,他就最有可能是答案
将rQ作为初始状态向量, 计算方式如下:
此处的ht−1 表示答案循环网络(指针网络)的最后隐藏状态,也就是答案上一个单词的隐藏状态。计算文本和答案上一个单词的相似度,soft Max得到权重,取权重中最大的概率作为答案的位置。
得到答案的起始和结束的概率。训练网络,通过预测分布最小化真值起始位置和终止位置的负对数概率之和。
实验
实验细节
- 使用CoreNLP分词
- 使用的GRU神经网络
- 使用的Glove来获得词向量
- 使用零向量表示未登陆词
- 1层GRU来表示字符级别的向量
- 3层GRU来编码问题和文本
- 隐藏层的长度设置75
- dropout为0.2
- AdaDelta优化器
实验结果
结论
门控注意力网络层,利用attention机制,用于使文章中的每个词包含问题的信息,获得丰富的表征。
自匹配注意力层,利用attention机制,使得每个文章词对文章本身更加了解,解决biRNN得缺陷,获得语义更加丰富的表征。
答案指针层,使用attention机制,确定答案的起始位置和终止位置,预测我们的答案。