如上图所示,语言先验对于答案分布不同数据集会产生较大的影响。但是对于某些样本即使受语言先验也是可以正确分类的,本文称为偏差最大的样本,反之,称为较小偏差的样本。本文要做的就是如何提高模型对偏差较小样本的关注,降低对偏差最大样本的关注(因为其已经预测正确了),从而学习到偏差。
主要贡献
提出了一种RUBi训练策略,以减少VQA模型学习的偏差量。通过VQA模型反向传播的梯度减少偏差大的样本重要性,增加偏差小的样本重要性。
网络框架
左图为普通VQA学习策略,右图为RUBi学习策略。其中红色区域即为本文对模型的添加内容,其将在训练结束时删除,最后使用输出的作为预测值。 本文的RUBi策略可以分为两部分:仅问题分支、合并掩码产生新预测。
普通VQA模型产生预测值的形式函数为:,m函数表示多模态融合,c函数表示分类器。
仅问题分支
仅问题分支用于捕获问题偏差,使VQA模型专注于仅使用问题模态回答错误的样本。仅问题分支的形式化函数fQ()为:
其中为一个神经网络,用于根据问题模态来产生预测值向量,为分类器。最后该分支给出一个预测答案的概率分布,再经由交叉熵损失函数计算出损失。反向传播过程优化和的参数,但不会传播到问题编码器中,以防止它直接学习问题偏差。
合并掩码产生新预测
在VQA模型的预测传递给损失函数之前,将它们与长度为|A|(2274)的掩码合并,以产生一个新的预测值。该掩码是将神经网络的输出通过sigmoid函数得到的,目的是修改VQA模型的预测值来改变损失值,即。如以下公式所定义。
该部分由交叉熵产生的主损失即为VQA模型损失,其反向传播优化VQA模型、编码器和的参数,同时,作者将VQA模块和仅问题分支的参数共享,其仅接受VQA模块的参数更新。
RUBi的最终损失为上述两个损失相加,即
总结
我认为本文可以用一句话来总结:让VQA错的更错,对的更对。首先,仅问题分支是单模态预测,受语言先验影响,那么对于同一个问题,其答案遵循一个固定的(或变化不大)分布。然后,如果仅问题分支预测的答案是正确的,那么掩码合并后就会让VQA模型的新预测值中G-T答案所对应的预测概率更大,那么损失就会减小。反之,如果仅问题分支预测错误,由于其答案分布不变,这就使得掩码合并后的新预测值中,错误答案的总概率增大,损失就会增大。这样就可以做到降低了偏差较大(仅用问题即可正确分类)的样本的重要性,提高偏差较小样本的重要性。
下图第一行为预测正确,第二行为预测错误。其中target中1表示G-T答案。
实验结果
上图为在VQA-CP v2数据集测试的结果。