概述
对于多段落的文章来说,我们主要有两种方法
- 筛选出文章中最有可能包含答案的段落,然后将这个段落送入模型当中,最后得到答案的位置标签
- 将文本每个段落都送入到模型当中,得到每个段落的答案位置并通过相关算法得到置信度的打分,选择分高的作为答案
在这篇论文中提出了一种结合以上两种方法的模型
- 从文档中抽取多个段落,并使用了一个能输出全局对错的目标函数,要求模型生成全局正确的输出。
- 为每个段落计算准确置信度分数。
方法
段落选择
使用基于TF-IDF的段落选择方法
对于单文档来说,我们筛选段落,根据其和问题的TF-IDF余弦相似度打分来进行排序选择哪一段送入到模型进行抽取答案。
对于多文档来说,使用一个相同TF-IDF分数的线性分类器,当文档进入分类器,会根据分类结果决定是否送入到模型进行抽取答案。
处理噪声标签
红色的则是噪声标签,绿色的是正确的答案
在监督式学习中,如果将匹配答案的所有文本范围标记为正确,可能会使得模型最终选择到不包含正确答案的部分。因此,这里使用了一种总和目标函数(summed objective function),优化所有答案标签的可能性,也就是说通过优化选择任何正确答案范围的负对数似然,一次降低选择非必要答案的范围,具体来说就是需要模型独立的预测开始的位置和结束的位置。
模型
模型分为五个部分:
- embedding:将文本和问题输入到embedding层,得到一个词嵌入和一个基于字符的嵌入,将两个拼接得到文本和问题的向量
- Pre-Process:经过双向GRU(Bi-GRU)来得到问题与文章的编码
- Attention:使用了双向注意流(Bi-Directional Attention Flow,BiDAF)的Attention机制来进行文本和问题的交互
- self-attention:通过另一个Bi-GRU,应用相同的Attention机制来对段落与段落之间的信息进行分析
- Prediction:在模型的最后一层,应用了双向GRU,然后通过线性层计算出每个开始标记的答案分数。将隐藏状态与输入相结合,再通过另一个双向GRU和线性层计算出每个结束标记的答案分数。这里应用到了softmax函数,来计算开始或结束的概率。
置信度模型
当输入为多文档时,在每个文档中都可能存在与问题相对应的答案区域,因此就需要一个置信度模型为此打分(未softmax之前),这里使用的基于边界的模型,每个答案区间的分数是开始分数和结束分数之和。
为避免模型在启发式模式下产生的过度自信(比如模型可能过于依赖去选择与问题所要求的语义类型相匹配的答案),这里尝试了4种模型训练方法, 并都会将不包含答案的段落作为额外的训练点进行抽样。
- Shared-Normalizatio:使用了一个修改的目标函数,其中从相同上下文中采样的所有段落的起始和结束分数都被标准化,这样使得具有相同上下文的段落在最终的softmax操作前具有相同的标准化系数,目的是迫使模型产生段落之间具有可比性的分数
- - Merge:在训练期间将从同一上下文中采样的所有段落连接在一起,并在每个段落之前添加具有学习嵌入的段落分隔符标记 - No-Answer Option:允许模型为每个段落选择一个特殊的无应答选项
- Sigmoid:考虑具有S形损失目标函数的训练模型。通过将sigmoid函数应用于每个标记的开始/结束分数来计算每个标记的开始/结束概率,用交叉熵损失用于每个单独的概率。
源码分享在document-qa
论文下载Simple and Effective Multi-Paragraph Reading Comprehension
来源:CSDN
作者:要努力的鱼~
链接:https://blog.csdn.net/weixin_43643246/article/details/104609005