@songying
2019-03-19T12:32:40.000000Z
字数 6149
阅读 1049
博客文章
转眼,春招已至,感觉自己还是个菜鸡,鸡生无望啊。 其实,主要是感觉到以前看的好多论文细节记得不是很清楚, 觉得有必要将这些论文做一个小规模的综述,一方面是考虑到造福后来者,另一方面也是面试准备,我觉得我还是有点东西的啊!!!
本文主要针对的是较老的模型,但很经典,其主要数据集为 CNN&Dailymail, 我还是很推荐一看的,因为现在阅读理解领域的复杂模型也有很多用到了这些论文中的思想,大多大同小异,很有助于启发思路。
Deep LSTM Reader 思想其实很简单,我们的输入为: document ||| query
或 query ||| document
,两者区别不大,|||
作为 document
与 query
的分隔符。 模型直接采用一个两层的LSTM 来处理document
与 query
转化后的词向量, 然后直接将双层LSTM的输出作为接下来模型 output layer 的输入,然后预测就完事了。
怎么样,是不是很简单,很粗暴,这就是最初的基线模型,真的不要太简单。
该模型的缺陷也很明显,首先, passage 与 query 能否一起做上下文处理? 这样不会导致内部信息紊乱?其次, 将passage 与 query 压缩为一个固定长度的向量,这里面会有很多的信息被损失掉了。最后,实在太粗糙了。。。
Attentive Reader 就有点常规模型的样子了。
首先,采用双向LSTM分别对 passage 与 query 进行 Embedding 来获得上下文表示;其中要注意的是对于 passage 而言,其获得的是一个矩阵 y,矩阵的每一列是 passage 中词的上下文表示; 而对于 query, 其将整个信息压缩为一个向量 u。
其次是注意力机制的使用,这里的 Q 为 passage的表示 y, Key 为 query的表示 u, 这里的注意力机制计算公式为:
最后是以 r, u 作为接下来模型 output layer 的输入来进行预测。
我们看到,与上一个模型相比,该模型就要好很多了,至少从思想上挑不出什么毛病,后续的模型很多都是从该模型改进而成。
但可能会存在一个问题,如果 query 的长度也很长,那么压缩成一个向量,其信息的损失不得不考虑进去。
Impatient Reader 可以是有点矫枉过正的意思,论文里的描述有些粗糙。 我简单介绍一下思想:
首先,采用双向LSTM分别对 passage 与 query 进行 Embedding 来获得上下文表示;此时passage 获得是是一个矩阵 y_p , query 获得的也是一个矩阵 y_q。
我们要求得,对于 y_p 中的每一个 token, 来对 y_p 求注意力值,比如 passage 的第 t 个token 与 query 中的第 i 个 token, 要注意的是,前一时刻获得到的 对当前时刻是有影响的,其注意力计算如下:
最后,我们以最后一个 r 与 u 作为输入输入到后续的模型的 output layer 中即可
从上面的公式,我们也看到,这个模型相比要复杂很多,但真的有必要吗,我是觉得得不偿失的。 而最终的实验也表明, Impatient Reader 与 Attentive Reader 相比, 其结果相差并不大,且谁好谁坏还不一定呢。
该模型是 Attentive Reader 延伸, 但在 Attention 的部分又有所不同。
首先,模型通过 双向LSTM 分别对Passage 与 Query 进行Embedding, 对于 Passage, 我们获得一个词的上下文信息矩阵:; 而对于 Query, 我们获得一个句子级别的向量表示: 。
接下来,我们需要计算 Passage 中每个词与 Query的相关度, 然后获得最终输出到output layer 的输出表示:
最后,我们将 输入到 output layer, 然后进行预测:
很明显,该模型更加干净,简洁,且获得的效果是要比 Attentive Reader 好 8-10% 个点的。 我们来简单介绍一下二者的不同:
其中,第一点是性能获得很大提升的关键因素,而第2,3点的目的更多的是将模型简化。
目前,该模型只有 Theano 的实现,如果后续有时间的话,我会尝试用TensorFlow 重写一下,先立一个 Flag。
其实,该模型与上面的Standford Reader 很像,但加了一个小 trick。
首先,采用双向 GRU 分别对 Document 与 Question 进行 Embedding; 对于Document, 我们获得了一个上下文Embedding 矩阵 ;对于 Question, 我们获得了一个 sentence-level 句子向量。
然后,计算 Document 中每个词与 Question 的相关度,这里采用点积的方式来做:
最后,考虑到 Document 中同一个词可能会出现多次,因此这里将相同词的注意力权重相加得到该词最终的注意力权重。
最后,我们从实体选项中选择 Attention weight 最高的作为答案。
比较 Standford Reader 与 Attention Sum Reader, 我们发现,二者在计算Attention 以及输出层有较大的差别,Attention Sum Reader 显得更加简洁。 但是,分析一下那个Attention Sum 操作, 其源于作者观察到答案更多偏爱出现次数较多的词,这说明,该 trick 是任务偏好的,并没有很广泛的应用价值。
最后,从后续的很多阅读理解文章来看,这篇文章算是价值最低的了,没有什么创新,Trick 有点取巧的意思,不推荐精读。
Attention-over-Attention 这篇文章质量很高,在后续的很多模型中都有使用,创新度也很高,值得精读。
首先, 依旧是使用双向RNN(LSTM or GRU) 来获得 Document 与 Query 的上下文表示。 其中,无论是对 Document 还是 Query , 其获得的都是 上下文 Embedding 矩阵: 。
然后,我们计算 Pair-wise Matching Score,其实就是计算 Document 中第 i 个词 与 Query 中的第 j 个词的相似度或相关度:
再然后,进行 Individual Attentions, 其实就是对矩阵 M 的每一列做 softmax, 其中,M的一列代表的是对于 Query 中的某个词与所有 Document 中词的相关度, 那么对每一列进行 softmax 的意思就是对于给定的一个 Query 词, 对 Document 中的每个词进行 Attention,这里称之为 query-to-document attention, 公式如下:
然后,进行 Attention-over-Attention, 其实就是对矩阵M的每一行做 softmax, 而 M 的一行表示的是对于 Document 中的某个词与所有 Query 中词的相关度,那么对每一行进行softmax 的意思就是对于给定的一个Document 词,对Query 中的每个词进行Attention, 这里称为 document-to-query attention, 公式如下:
最终,Final Predictions 将相同词的score 合并,得到每个词的score, 其实就是Attention-Sum里面提出的创新部分:
本模型可以说是花式Attention的一个典型代表了,其不仅仅考虑了query到document的attention,而且考虑了document 到 query 的attention,于是称为 attention over attention。 虽然无法解释其内部的玄学,但的确该机制在很多后续的模型中都有应用,效果也不错。
在Attention-over-Attention 还提出了 N-best Re-ranking 策略 , 这里就不赘述了,可以看看原论文。
首先,值得一提的是,该文章的Related Work 十分值得一读,很清晰,也很完整,对于一些经典模型都有提及。
首先,依旧是先将Dcoument 与Query 转换为词向量,然后采用双向RNN(GRU) 来获得 Document 与query的上下文表示矩阵,表示如下:
然后,在接下来计算中,我们要不断的迭代 D 与 X:
这个过程,我们迭代了K次,最终得到了 D^{(k)}。
在Answer Prediction 阶段,先找到空白处位置的词的表示, 然后与 D^{(k)} 做内积,再进行softmax:
最后,再将相同词的概率合并:
一不小心,文章写的又臭又长,本意是将阅读理解早期的经典模型一网打尽,但奈何,模型太多,一旦展开,怕是就没几个人看了,因此,蛮荒时代到此结束,如果接下来有时间的话或者发现某个模型很屌但我没有涉及的话,会出一个番外。
接下来会花几天时间总结一下,阅读理解的井喷时代,主要以SQuAD 数据集为主,敬请期待。
大哥大嫂,别光收藏啊,点个赞也好啊。
[1] Teaching Machines to Read and Comprehend
[2] A thorough examination of the cnn/dailymail reading comprehension task.
[3] Text understanding with the attention sum reader network
[4] Attention-over-Attention Neural Networks for Reading Comprehension
[5] Gated-attention readers for text comprehension