春节玩耍结束啦,又开始学习啦!最近笔者学习了一下开放领域问答(open-domain question answering)最近几年的进展和研究。由于背景知识和相关研究较多,笔者将其作为一个系列进行总结和记录,也希望能帮助到相关领域/对相关领域感兴趣的同学。这是第一篇,欢迎关注后续!
开放领域问答背景知识
在学习“开放领域问答(open-domain question answering)”之前,我们先看一个搜索+问答的例子。2021年2月,我在谷歌里搜索问题:“美国现任总统是谁?”,谷歌不仅能给出相关维基百科页面的推荐,还直接给出问题的答案:“拜登”。笔者记忆里,10年前的搜索是无法给出答案的。那么,搜索引擎从以往的关键词匹配到今天的智能问答(虽然目前还只能回答一些简单的事实问题),开放领域问答方面的研究有不小的贡献。
什么是问答(Question Answering,QA;或者也可以叫机器问答/机器阅读理解/Machine Reading Comprehension)?什么又是开放领域问答(open-domain QA)呢?我们先简单介绍如下几个基本概念。
机器问答:让计算机系统自动回答人类提出的描述性问题(一般来说需要用文字描述出来)。
开放领域:可以询问任何问题(不对问题的领域,比如科研领域,体育,NBA或者足球领域等做限制,同时问问题时不提供相关文献),比如可以问:EMNLP2020接收了多少篇文章?也可以问:现任美国总统是谁?。
知识库:一般来说这些问题的答案可以在一个给定的知识库中找到:比如纯文本无结构化的维基百科,或者是结构化的知识库(比如ConceptNet),或者是半结构化的表格。当然如果问题在知识库中没有答案,我们也希望机器能告诉我们此问题无解。本文涉及的相关研究都先重点关注无结构化的文本知识库,结构化知识库的开放领域问答放在后面的文章中进行介绍。
结合上面3条概念,图1的例子涉及的流程可以这样简要概括成如下二个阶段(当然实际流程要复杂得多):
提问者先描述了问题:美国现任总统是谁?谷歌搜索系统根据问题从谷歌构建好的知识库中(包括了维基百科、以及各种网页)找到最相关部分知识(比如美国总统选举的维基百科网页和相关文字报道)。
从最相关的部分知识(美国总统选举维基百科网页)中找到了问题的具体答案:拜登。
由于二阶段系统十分直观且便于结合检索工具+机器阅读理解实现,最近几年的关于开放领域问答的许多研究也都属于以上这种二阶段系统,本文作为开放领域问答梳理的第一篇也将优先学习这个系统:基于信息检索(information Retrieval, IR)+机器阅读理解(Machine Reading Comprehension, MRC)(retriever-reader)的开放领域问答系统,如图2所示。
当然除了二阶段系统之外,还有单阶段的系统(比如Phrase Retrieval期望直接通过检索IR找出答案,T5、GPT3这种大规模预训练模型甚至可以期望直接通过MRC生成答案),还有多阶段的系统(比如把二阶段系统中的IR细分到文档检索+文档ranking,MRC细分为answer extraction和answer ranking,或者是迭代式(iterative)问答/多轮问答/multi-hop QA),这些系统的相关研究将在后续文章中逐渐覆盖。
所以本文涉及的研究都有这么2个特点:1、关注事实性的、无结构化文本的识库;2、都是两阶段IR+MRC的开放领域问答系统。
第一个两阶段系统:DrQA
Reading Wikipedia to Answer Open-Domain Questions,简称DrQA,是danqi chen在2017发表于ACL上的一篇经典文章,业内也经常称该论文是深度学习时代关于开放领域问答的第一篇文章。
除开研究方面的贡献,该文开源代码十分值得入门的同学学习!包括但不限于:自然语言处理任务的文本预处理、TFIDF的高效实现、训练LSTM神经网络用于阅读理解抽取答案、python多线程加速信息检索、文本中的词性标注等作为特征帮助文本理解任务。
图3 DrQA示意图
如图3所示,该DrQA根据给定的问题,使用TF-IDF算法(不可训练)对相关文档在知识库wikipedia中进行检索,随后训练一个基于LSTM(直接替换成BERT也是可以的)的阅读理解模型抽取答案。知识库widipedia可以直接换成其他文本知识库的。
如何训练?
1、文档检索的TF-IDF无法训练。
2、阅读理解模型使用LSTM模型,基于(问题Q,文档P,答案A)三元组进行训练,三元组来源一个是SQuAD标注的训练数据,一个是distant supervision。所谓distant supervision的意思是:根据问题Q使用TF-IDF找到相关文档P,只要相关文档P包含答案A,无论这个相关文档是什么文档,都可以构建出一个新的训练三元组(Q,P,A)。
如何预测?
1、使用TF-IDF检索出最相关的5个文档;
2、用训练好的LSTM阅读理解模型挨个抽取答案,每个文档抽取的答案都有一个得分。
3、根据所有文档抽取的答案,选择答案得分start位置end位置综合得分最高的answer span。
论文除了说DrQA效果好之外,还提到:多任务学习和有帮助。
多任务学习的帮助可以见笔者上两篇公众号内容。
distant supervision有帮助笔者的2点理解为:
1、distant supervision构建了更多的训练样本,可以看作数据增强;
2、distant supervision让模型在训练和预测阶段更一致。在预测阶段,根据问题抽取的文档并不一定都是标注的那个唯一文档,还可能有其他包含答案但并不是标注的唯一文档,因此预测的时候模型见到这些文档也能抽取答案;
那么咱们想一下这个最基本的DrQA有哪些地方可以改进呢?比如:
是否可以优化一下文档的粒度?
不按照documet来检索,而是按照段落paragraph、句子sentence来检索呢?
TF-IDF抽取的top 5个文档并不准,是可以再训练一个ranker模型根据问题quesiton,document来选更准的模型?
有推荐系统背景的同学其实可以按照召回-粗排-精排这个思路来考虑?
阅读理解时是否可以一阅读多个文档,而不是每次都只看一个文档?
每次抽取一个文档的答案,然后再比较不同文档里的答案得分是否合理呢?
文档检索、文档rank和文档阅读理解阶段相互独立,是否可以让这两个阶段互相帮助一下呢或者一起考虑呢?
更直观的改进比如:
LSTM换成更牛逼的BERT模型是否可以?
pipeline的系统可否改进为end-to-end呢?
如果一个passage包含多个answer,那么选哪一个作为监督信号呢?
DrQA基本系统改进1: BERTserini
图4 BERTserini
如图4所示,论文:End-to-End Open-Domain Question Answering with BERTserini 使用Anserini检索和BERT进行阅读理解。相对于DrQA,BERTserini论文的主要点有:
对sentence、paragraph、sentence粒度的检索进行了比较,发现paragraph级别的效果最好。
笔者的一点理解:
a. SQuAD是基于paragraph标注的,如果是article粒度,一个文档太长,所以有大量的无关paragraph,不太适合;如果是sentence的话,检索出来的句子联系太少,不利于阅读理解;
b.由于BERT是512长度限制,平均一个wikipedia的paragraph的长度在100多个token,如果按照paragraph来分的话,一个BERT是可以放入多个检索的paragraph的,这里其实也是可以帮助提升效果。
将阅读理解reader的打分和Anserini检索的打分进行综合考虑来选择最佳的答案span。
3. MRC模型升级为更强的BERT可以帮助抽取答案的效果更好。
DrQA基本系统改进2: 训练一个passage ranker
简单来说就是将TF-IDF检索回来的文档用一个深度学习模型进行重新排序。
图6 通过增加一个Document ranker来改进
论文:Training a Ranking Function for Open-Domain Question Answering十分简单:直接训练一个ranker模型,把TF-IDF检索回来的passage或者document排序一下,让更准确更相关的文档送入阅读理解模型,提升模型。
相关的另一篇论文passage re-ranker with BERT字面意思理解就是:改成BERT跑一下效果更好。
另外论文:Revealing the Importance of Semantic Retrievalfor Machine Reading at Scale对句子sentence、段落paragraph级别的影响做了详细的分析。
DrQA基本系统改进3: multi-passage一起处理
这里的passage其实可以指一个段落paragraph也可以说是一个文本片段segment,总之就是一段连续的文字。multi-passage一起处理的意思就是将检索回来的多个文档统一处理。
multi-passage最直观的地方有:1、reading comprehension;2、passage ranking。
multi-psaage最直观的方式是:想一想softmax是怎么统一归一化的即可。
reading comprehension的时候考虑multi-passage:
比如论文Simple and Effective Multi-Paragraph Reading Comprehension
和论文Multi-passage BERT: A Globally Normalized BERT Model forOpen-domain Question Answering:都是按照单个段落独立抽取answer span,但最终对所有答案的得分统一归一化后选择最好的答案(属于answer ranking阶段的统一处理),都是在MRC抽取答案的时候归一化之后比较得分再选最高分。
它带来的明显好处是:根据问题检索的passage增加虽然会增大answer出现的概率,但同时也会引入更多的噪声让reader效果下降,有了这个统一归一化之后,reader抽取答案时候受到噪声的影响更小,如图5所示。
图5 随着passage数量增加,multi-passage BERT保持了高的F1得分
ranking passage的时候multi-passage考虑:
图6 multi-passage进行ranking
论文Denoising Distantly Supervised Open-Domain Question Answering便是多个passage一起ranking的一个代表。其主要点是:
对TF-IDF检索回来的passage训练一个re-ranking模型(TF-IDF passage检索可以看作是对passage的第一步rank打分)可以帮助找到更准确的相关passage。
如果我们能多个passage一起re-ranking,则这个re-ranking模型抗噪声能力会更好。
passage re-ranking模型可以通过distant supervision训练,也就是说一个question+一个包含了答案的passage可以当作一个正样本。
DrQA基本系统改进4: Reader-Ranker互相帮助
Reader-ranker互相帮助的核心点在于:如果ranking模型和reader模型并不孤立的话,那reader模型的信息如何被ranking模型利用,ranking模型的信息如何被reader模型利用?
图7 reader-ranker互相帮助
如图7所示,论文R3: Reinforced Ranker-Reader for Open-Domain Question Answering基于强化学习让re-ranker-reader模型进行了交互。该文的主要点是:
Ranker模型和Reader模型基于强化学习一起训练,具体可以如图8所示,简单描述为:Retriever根据question抽取top k的passages,然后passages经过ranker打分后,采样一个passage送入reader,reader抽取得到answer,根据预测answer和正确答案之间的F1得分作为reward,然后根据plolicy gradient来更新re-ranker模型,同时也根据监督信号来更新reader模型。
图8 R3: Reinforced Ranker-Reader示意图
笔者的一点想法:其实笔者更期待这个模型在多轮问答(multi-hop question answering)上的表现。
DrQA基本系统改进5:answer re-ranker
Answer re-ranker的基本思想是:如果检索到的多个passage,每个passage都会被reader抽取多个answer span的话,那是否可以根据检索部分的信息、阅读理解部分的信息对抽取出来所有可能的answer span再次进行re-rank呢?
图9 Answer re-ranker
如图9所示,论文Evidence Aggregation for Answer Re-Ranking in Open-Domain Question Answering基于信息检索部分的特征、阅读理解部分的特征给出了两种answer re-ranker方法:
1. 如图10所示,左边的例子a就是Strength-based answer re-ranker。意思是,如果reader预测的答案被多段文本所支撑,则该答案更大概率是正确答案。
2. 如图10所示,右边的例子b就是Coverage-based answer re-ranker。意思是,如果支撑该答案的多段文本对于问题信息的覆盖度更好,则该答案更有可能是正确答案。
图10 Strength-based和Coverage-based re-ranker举例
DrQA基本系统改进6: 监督信号的选择
在DrQA的研究中显示,如果训练的时候只有问题question和answer,通过信息检索得到相关passage来包含answer作为distant supervision,那么这个监督信号有它明显的问题的:如图11所示,如果一个段落中包含多个answer,那么选哪个位置的answer作为答案呢?因为训练的时候是按照answer的start和end位置作为监督信号的,以往的论文训练时一般直接选了第一个answer或者随机选一个answer的start和end位置作为监督信号。
图11 多个answer位置举例
如图12所示,论文A Discrete Hard EM Approach for Weakly Supervised Question Answering提出了一种Hard EM算法帮助模型在训练的时候选择最合适的answer作为。
笔者这样理解:
1、 假设一个passage在多个位置包含了question的答案,那么在训练初期,先鼓励模型选择预测概率最大(最大概率与Question和Document有关)的answer位置作为监督信号。
2、训练一定steps之后,改为Hard EM算法(最大概率与Question、Document一个记一个可学习的参数C有关)选择概率最大的answer 位置作为监督信号。学习reader模型的时候同时学习了选择answer位置有关的参数C。
代码基于Huggingface的transformers实现,还是很好看懂的。
图12 Hard EM学习过程
总结
本文主要包含了以下内容:
开放领域问答的基本背景,开放领域问答系统简化后的二阶段问答系统介绍。
原文标题:【问答】总结|开放领域问答梳理系列(1)
文章出处:【微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。
责任编辑:haq
全部0条评论
快来发表一下你的评论吧 !