Model
Entity-Focused Dense Passage Retrieval for Outside-Knowledge Visual Question Answering
解决问题:
由于大多数检索模型将查询和段落知识作为一个整体进行编码,因此无法显式的发现对于问题Q至关重要的实体,这通常导致检索无法注意到特定的知识。
其次,在监督方面,以往的文章通常是使用包含正确答案的文章,这些答案通常拥有最高的稀疏检索分数,然而这一标准不足以保证问题的相关性,文章认为一个好的Positive Passage 应揭示图像中的关键实体支持正确答案的事实
本文贡献:
- 提出了Entity-Foused Retrieval (EnFoRe) model 在训练和检索时更注重实体类,从而更容易关注到与实体类相关的specific Knowledge,在一定程度上解决了所检索的文章和知识过于笼统的问题
- 使用top Passages 将重要的实体与正确答案作为正向监督来训练,用更强的监督提高了与实体类相关联的Positive Passage 的质量
采用方法:
- EoFoRe自动识别问题的关键实体,然后检索与之相关的知识
- 若实体已经被强调为关键实体,则关注能提高稀疏检索器性能的实体
- 使用包含关键实体和正确答案的top Passage 作为正监督
- 模型学习两个分数:1)给定问题和图像的每个实体的重要性,2)衡量每个实体与每个候选段落上下文的匹配程度。
Passage Retrieval
Sparse Retrieval:使用加权词匹配来度量搜索查询和候选文章之间的相似性,稀疏检索不需要文章相关性的训练信号,但也表现出了可靠的基线性能,但精确词语匹配无法捕获到同义词和释义,也无法理解查询和段落的语义
Dense Retrieval:为了更好的表示语义信息,密集检索使用大型预训练的Transformer模型来提取查询和候选段落的深层表示,大多数密集检索器都使用对比目标进行训练,该目标鼓励查询的表示与相关段落更加相似。在训练过程中,包含答案的稀疏检索分数高的段落作为Positive Passage。然而,稀疏检索中的Positive Passage可能并不符合问题的背景,只起到非常弱的监督作用,此外,查询和段落通常被编码为单个向量导致大多数的密集检索器不能显式地发现和利用问题的关键实体,最后导致知识过于泛化而缺乏重点。
Pharase-Based Dense Passage Retrieval:
与本文检索方式最相关的工作是基于短语的密集通道检索,该检索器使用一个单独的词法模型经过训练以模仿稀疏检索器的性能,该检索器更擅长匹配短语。以及Lee 提出的Dense Phrase模型也同样是提取短语使用最相关的短语来表示问题和文章之间的相似度。然而这种训练信号仍是来自精确匹配后的答案,且短语是从候选段落中提取的,因此限制了搜索的范围。相比之下,本文的检测器从多个方面来搜索实体类,包括目标检测、属性识别、OCR、图像字幕等。
Entity Set Construction
Question
基于问题的实体:使用constituency Parser来解析问句,并在解析树的叶子节点中提取名词短语,并使用预训练的ViLBERT模型作为对象连接器将其连接到图像,提取被引用的对象和其属性。
基于子问题的实体:将收集到的名字短语附加常见问题如 What is…和How …来收集一组子问题,当预训练的ViLBERT模型产生的答案置信度超过0.5时,它将被添加到实体集。
来自候选答案的实体:对ViLBERT进行微调并提取了TOP-5答案作为实体
Image
基于Auzre标记的实体:文章使用OCR以及Brand tagging 对使用Mask R-CNN检测到的目标进行注释。
基于Wiki的实体:使用CLIP从wiki数据中提取图像的相关实体,保留具有最高CLIP分数的18个实体
来自于图像描述/字幕的实体:caption提供了图像中突出实体的自然来源,并且不受目标检测器有限词汇的影响。
Oracle Critical Entity Detection
引入一种自动查找关键实体和包含它们的段落的方法,然后在训练期间使用这些实体和段落提供更强的监督,文章认为强调关键实体可以提高检索性能。给定一个问题q使用BM25作为稀疏检索器检索初始段落Pinit,并使用SRR来计算K个段落的分数
对于每个实体e,再检索另一组段落Pe,并计算SRR分数,最后的S(e)则为两次SRR分数之差,然后将超过阈值的S(e)视为关键实体,Eoracle = {e ∈ E|S(e) > θ}.本文将包含正确答案以及关键实体的段落视为Positive passage
Encoders
Query encoder:文章认为多模态Transformer对于问题和视觉内容的编码优于单模态Transformer,因此作者使用LXMERT对查询进行编码,并将最后一层的Pooled_output投影为特征向量fq
Passage encoder:使用BERT作为段落编码器,使用BERT中CLS表示来计算每个段落的向量特征(使用CLS计算整个段落的表示特征是否有局限性,能否改为依然使用token来计算?或者token embedding加cnn然后max pooling?)
Entity-encoder:为了为每个实体提供查询上下文,文章在每个实体之后附加了问题和生成的图像描述(Image Caption),其输入是[CLS] Entity [SEP] question [SEP] caption,同样使用CLS计算实体特征
Retrieval Scores
EnFoRe的相似度度量由两个标准组成:问题相关性以及实体焦点项
Modeling question relevancy:问题相关性Sqp使用查询q和段落p的内积计算而得,Sqp=fTqfp。在推理工程中,由于Query和Passage的特征可分解性,可以使用MIP来高效的检索查询的top passage
Modeling entity focus:分别计算查询和实体的内积 以及 段落与实体的内积:
然后将他们组合起来作为Entity-Focus的分数:
(个人理解是分别计算出问题和文章对某个实体的分数,然后将他们综合起来进行比较)
对上式另一种理解是将其看作对条件分布Pr(p|q)的建模并将实体作为隐藏变量,查询q和段落p的最终的分是
Train
- 训练实例由一个视觉问题的查询Q、一个positive passage、一个negative passage和一组实体组成。
- 训练时采用R-Net+IB-All设置,该设置将检索到的negative passage 以及 other in-batch passage都视作 negative samplings。
- 使用交叉熵损失函数做大化Sqp和Sqpe
- 将Oracle entities作为正面实体,其他作为负面实体,并使用交叉熵损失监督Sqe
- 使用学习率为1e-5的AdamW对模型训练了8个epoch,并使其中的10%作为模型预热,阈值设置为0.8
- 模型包括一个BERT编码器和一个LXMERT编码器,共430M参数
- 由于问题的相关性可分解,文章再次使用MIPS检索top-80 passages 然后评估每个段落的实体焦点项,并用综合得分S(q,p)对段落重新排序
模型架构图:
VQA-Reader
文章使用KAT作为VQA 阅读器,它是一个基于生成的阅读器,可以根据检索到的知识生成相应的答案,KAT采用FiD架构,结合GPT-3生成的显式知识和隐性知识
- GPT-3生成的隐式输入格式:question:ques? candidate:cand. evidence:expl
- GPT-3生成的显式输入格式:question:ques? Entity: ent. description: desc.
文章将原始的显式知识改为EnFoRe模型检索到的知识,由于检索到的文章包含多个句子但并非所有句子都是与问题或实体相关的,因此文章将问题和候选答案转换为一组语句,并对文章进行拆解,计算拆解后的句子与语句之间的的bertscore,最后提取出得分最高的句子。
本文仅作个人阅读笔记使用,其中部分内容同样参考了其他文章,如有侵权,请联系删除