[0022] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0023] 本发明提出的基于多模态融合的视觉问答融合增强方法,如图1‑4所示,包括以下三个步骤:
[0024] 步骤1、利用GRU(Gated Recurrent Unit)结构构建时序模型,获得问题的特征表示学习、利用从Faster R‑CNN抽取的基于自底向上的注意力模型的输出作为图像的特征表示。本发明将句子中的每个单词都按照顺序时刻依次输入到GRU模型中,句子的最后一个单词的GRU输出可以表示整个句子。
[0025] 如图1所示,GRU中有两个门,一个是重置门rt,另一个是更新门zt,令句子q={x1,x2,…,xn},其中xi代表了第i个单词,重置门和更新门的公式如下所示:
[0026] rt=σ(Wrxt+Urht‑l)
[0027] zt=σ(Wzxt+Uzht‑1)
[0028] 然后计算候选隐含层ht':
[0029] ht'=tanh(Wxt+rtUht‑1)
[0030] ht'表示的是输入第t个单词之后得到的更新后的信息,rt则能控制保留多少前t个单词的相关记忆,如果rt=0,那么ht'就只有包含当前词xt的信息。
[0031] 更新门控制需要从前t‑1个单词中遗忘的信息,输入第t个单词之后,能够得到前t个词中的所有过滤好的信息:
[0032]
[0033] 问句s的特征表示为vq=hn{x1,x2,…,xn}。
[0034] 步骤2、基于注意力模型Transformer进行多模态推理,引入注意力模型对图片‑问题‑答案这个三元组进行多模态融合,并建立推理关系。
[0035] 在视觉问答任务中,注意力机制是一个很重要的部分,他能够使得我们在基于问题的基础上能够关注到图片中和问题更匹配的区域,比如问题是骑在自行车上的人穿什么颜色的衣服,那么基于注意力机制的模型就会将图片上的骑自行车的人的区域给予高度的关注,Google提出的transformer模型的主要思路就是只要依靠注意力,模型能学习到很好的信息,Google的一般化Attention思路也是一个编码序列的方案,因此我们也可以认为它跟RNN、CNN一样,都是一个序列编码的层,如图2所示:
[0036] 这是一般化的框架的描述,其attention的定义如下:
[0037]
[0038] 事实上Q,K,V分别是query,key,value的简写,K,V是一一对应的,它们就像是key‑value的关系,那么上式的意思就是通过Q这个query,通过与K内积,并softmax的方式,来得到Q与各个V的相似度,然后加权求和,得到一个向量。其中因子 起到调节作用,使得内积不至于太大。
[0039] Multi‑HeadAttention是Google提出的新概念,是Attention机制的完善。
[0040]
[0041] MultiHead(Q,K,V)=Concat(headi,...headh)
[0042] 不过从图中可以看到,它很简单,就是把Q,K,V通过参数矩阵映射一下,然后再做Attention,把这个过程重复做h次,结果拼接起来就行了。所谓“多头”(Multi‑Head),就是只多做几次同样的事情(参数不共享),然后把结果拼接。
[0043] Attention层的好处是能够一步到位捕捉到全局的联系,因为它直接把序列两两比较,代价是计算量变为 相比之下,RNN需要一步步递推才能捕捉到,不能并行运行,而CNN则需要通过层叠来扩大感受野,这是Attention层的明显优势,能在比较小的代价下学习到比较精炼和有用的信息。Google的论文结果表明将纯注意力机制用在机器翻译中,能取得目前最好的效果,这也反应了transformer的强性能。
[0044] 因此将transformer引入到我们的视觉问答中来,能够使得基于问题学习到更好的和为问题有关的图片信息。
[0045] 传统的视觉问答方法几乎都只考虑了问题和图像之间的关系,但是忽略了图像‑问题‑答案这个三元组之间的隐藏关系,但是答案在推理的过程中可能扮演了一个很重要的角色,当然也有一些的前人工作考虑到了答案的重要性,尝试通过将图像特征表示、问题特征表示、答案特征表示进行简单的拼接,或者把图像和问题进行融合之后再映射到答案特征上面去,但图像‑问题‑答案之间的复杂关系无法全面地被表达出来。因此我们将答案信息通过嵌入式表达之后,引入视觉问答任务。
[0046] 图4是本发明提出的视觉问答系统整体框架图,可以看到问题‑图片对经过transformer模块生成的向量与answer embedding又进行了一次融合,最后得到了带有答案信息的特征和只有图片‑问题信息的特征,这两部分进行结合之后,能够得到整个视觉任务的信息特征,再将这些信息送入带有线性变换和softmax模块的分类系统,最后我们可以看到,答案是大象的得分是最高的,也是我们最后需要的答案。
[0047] 步骤3、利用标签分布学习和KL散度损失函数和softmax回归方法来拟合真实答案分布情况。
[0048] 在生活中,当你对着一个图像提出一个问题的时候,正确的答案可能只有一个,但是也可能有多个相似的答案,比如当你问yes/no类型的问题时,只能回答yes或者no,但是当你问关于颜色的问题时,因为物体可能不全是同一种颜色,大部分红色夹杂着一点点的白色时,答案是红色或者红色和白色都是可以的。在像视觉问答常用的数据集VQA和VQA‑2.0中,每一对图像‑问题都是由很多人使用多个答案进行标注的。每个图像‑问题样本的答案可以被表示为一个与该样本对应的答案的概率分布向量 其中yi∈[0,1]表示候选答案 中第i个问题在该样本的人工标注的答案中出现的频率。由于视觉问答模型的输出是每个答案的得分,一个直接的做法是使用基于边界的损失函数(marginbased loss function)来最大化正确答案与其他错误答案之间的距离,代替传统的softmax+cross‑entropy的损失方式,有效提高不同关系类别之间的区分性。基于边界的损失函数为:
[0049]
[0050] 对于答案是开放型的视觉问答任务来说,一个问题‑图像对往往有数量庞大的候选答案,如果采用基于边界的损失函数,那么要考虑的负样本空间很大,对于难样本的选择要求较高,且训练、和采样的复杂度会很高。而且基于边界的损失函数通常只能考虑少量的负样本,这样对于视觉问答模型来说,增加了很多随机性,而且也会使模型在训练的时候需要更多的迭代次数。
[0051] 因此本发明将基于负样本采样的边界损失学习问题转变为面向所有候选答案分布y的标签分布学习(label distribution learning,简称LDL)问题。对于图像‑问题样本的每一个与之对应的候选答案ai都计算出一个相关度得分satt(q,I,ai)。然后用softmax回归方法来拟合真实答案分布的情况:
[0052]
[0053] 最后使用KL散度损失函数(KL‑divergence loss function)来对错误的答案预测进行惩罚,KL距离是两个随机分布间距离的度量。记为DKL(p||q)。它度量当真实分布为p时,假设分布q的无效性,其公式为:
[0054]
[0055]
[0056] 当p=q的时候,散度为0。
[0057] 我们通过最小化如下损失函数的方式进行模型训练:
[0058]
[0059] 其中N是所有被用来训练的图像‑问题对的数量。测试的时候,只需要将所有候选答案的特征表示输入模块,然后选择三元组相关度最高的答案satt(q,I,ai)最为最终预测的答案即可。