论文:Retrospective Reader for Machine Reading Comprehension,是上海交大的一篇论文
阅读及复现这篇论文的契机是因为它是SQuAD2.0榜单前几名中唯一一个有论文的。
机器阅读理解(MRC)要求机器基于给定的文段提取出问题的答案,不仅需要找到正确的答案的位置还需要机智地判断出没有答案的情况。当MRC中包含了无法回答的问题时,除了基本的encoder-decoder结构还需要加上一个verification模块,一般都用一个强大的预训练模型作为encoder来完成阅读的任务。这篇论文为MRC中无法回答的问题设计了更好的verifier。论文的核心思想来源于人类解决阅读理解问题的逻辑,基于此提出了Retro-Reader的模型,这个模型包含两阶段的阅读和verification策略:(1)粗读阶段,先整体阅读文段和问题,得到一个基本的判断。(2)细读阶段再次验证答案并给出最终的预测。这个模型在SQuAD2.0和NewsQA数据集上达到了新的SOTA。
借鉴了人类阅读模式:先粗读一遍,做出初步判断,再细读寻找答案范围。
针对包含无法回答的问题的MRC,之前的模型有以下几种解决思路。
基本模型:Encoder+decoder,encoder是一个强大的预训练模型,decoder负责文章与问题的交换,生成span。
对于无答案,之前的解决思路:
上图中的d是本文提出的模型,e是对d的细化。
Retro-Reader由三个模块组成:粗读阶段、精读阶段和decoder
粗读模块相当于用一个多层Transformer做分类,由以下三个部分组成:
同时计算一个score值,表示答案是否存在的分值。
精读模块相当于用一个encoder进行阅读理解任务,生成span,同时多任务训练(multi-tast),同时计算一个问题的可回答性。
论文中提到了Question-aware Matching的概念,增强问题和文段的匹配。这是加在encoder后面的。
首先把最后一层的hidden state H按照问题和文本分开,HQ对应着问题的表示,HP对应着文本的表示。将这两个序列都填充到minibatch的最大长度。
有两种question-aware的matching策略:(1)Transformer式的多头cross attention机制,简称CA(2)传统的matching attention,简称MA
W和b是matching attention layer的参数,e是全1的向量,用于广播。M是两个相关序列不同的hidden state的权重(就是attention),得到的结果H‘是所有hidden state的加权和,它表示了H的向量是怎样分配给HQ的每个hidden state的。用H‘用于接下来的预测。
在最后加一个线性层,用softmax获取概率。计算交叉熵损失函数。
同样用encoder的CLS过一个全连接层进行二分类。可以用交叉熵作为损失函数,也可以用均方误差作为损失函数。
精读模块encoder的损失函数是把span loss和cls loss带权加起来,
这是一个启发性规则,根据最后得出的start和end来预测这个问题是否可以回答,由此判断模型的输出到底是答案的span还是null。
得出一个差异性的分值:
用这个差异性分值与阈值进行比较,大于阈值说明模型给出的是答案的span,否则是null。
这个模块只有一个RV需要说明。
这个模块就是把粗读阶段的存在性分值和精度模块的差异性分值加权求和,作为最终的判断。如果结果大于阈值,就说明有答案,否则问题没有答案。
计算传播图如下:(从上到下的看)
原文:https://www.cnblogs.com/erable/p/15074456.html