Dealing with Missing Modalities in the Visual Question Answer-Difference Prediction Task through Knowledge Distillation 论文笔记
- 一、Abstract
- 二、引言
- 三、相关工作
-
- 1、Answer Difference in VQA Datasets
- 2、Generalized Knowledge Distillation
- 四、Methodology
-
- 1、Problem Definition
- 2、Proposed Training Method
- 3、Individual Modality Teacher Models
- 4、“Big” Teacher Model
- 5、Student Model
- 6、Teaching the Student
- 五、实验
-
- 1、Implementation Details
- 2、VizWiz VQD Dataset Setup
- 3、Answer Difference Baselines
- 4、Results of Knowledge Distillation
- 5、Testing on the VQA 2.0 Dataset
- 六、总结
- 结语
写在前面
这是 CVPR2021 Workshop 第四篇,从题目可以瞅一眼,关于 知识蒸馏,以及解决 VQ A-Difference 中 模态缺失 的问题。
说实话,笔者也是第一次看这种文章, 知识蒸馏 的概念倒是听过,但不知道怎么操作的。至于 答案差异性,也算是不知所云,期待这篇文章能给我们普及一下这方面的知识。
论文地址: Dealing with Missing Modalities in the Visual Question Answer-Difference Prediction Task through Knowledge Distillation
代码:无~
槽点: 参考文献 太老,清一色17.18.19,少有几篇20的。看着确实方法有点老,这种文章咋选入的workshop?
一、Abstract
摘要里面对文章标题做了详细的解释:采用 知识蒸馏 的方法解决 模态缺失 的问题。
方法:采用 三输入(image/question/answer)+ 模型的联合,蒸馏 出 knowledge 到目标网络(student),student 输入为 image/question pairs
数据集采用 VizWiz VQA-V2 Answer difference datasets。
二、引言
VQA的发展产生了 VQD(Visual Question Answer-Diffenence任务),也就是在 VQA 之上再进一步的任务:尝试理解为什么 VQA 模型可能 产生不同答案 的原因。
借此引入VizzWiz数据集,然后以另外一篇参考文献为依托,讲述现有一些模型 未能考虑答案的轻微差异性 甚至是 答案的主观性,因此对应产生了 VQD 任务。
VQD 定义如下: 给出 问题+图像+10个可能的答案,模型需要回答 不同类型答案 产生的 10种类别/原因,即 在所给图像和问题的情况下,为什么会有 10个可能的答案。
另外由于 VQD 挑战仍在进行,测试集并未公开,意味着在 测试时 需要使用 不同的答案 作为 输入 。所以 实际上VQD的定义 为:给一对图像+问题,模型需要 理解图像+问题,从而不仅仅 输出 正确答案,而且还能 推理 为什么会有 不同的答案。
所以,作者的打算:
1、使用 3 个 modalities (图像+问题+答案) 训练网络
2、知识蒸馏 出缺失的模态;
3、去训练另外一个 只有图像+问题 作为输入的模型
本文 主要贡献 如下:
1、回顾了 VQD,设计出方法解决 测试时模态缺失 的问题
2、设计了 新 的network,“Big” teacher
3、新方法?
三、相关工作
作者一开始表明了数据集存在的一些 问题,重点关注于 数据集中的答案差异。
1、Answer Difference in VQA Datasets
之前的研究该问题的工作:基于性能指标一致性 ?
现有文献对 问题差异性 的研究:subjective, ambiguous, or containing synonymous answers。具体来说,在 VQA & VizWiz 数据集中,明确地标出了每个视觉问题——指出 九个选项 中 哪一个 是 导致 观察到的 答案差异 的原因。
2、Generalized Knowledge Distillation
一般的 蒸馏 :采用两种流行的 “机器-教导-机器” 框架:知识蒸馏和私有信息,
接下来分别讲述哪个人 第一次引入“学生-教师” 策略,主要思想就是 教师 在 训练过程中 可以的得到 额外的信息,学生在 测试时 知识 不提供全部知识 的情况。
引入的 知识蒸馏:动机来源于 迁移教师的知识到学生,通过 匹配 教师的 输出 和学生的 输出 表示来 提升学生模型。
在作者提出的模型中:有一个 三种单模态的模型+3输入(教师), 目标(学生)模型 为仅采用visual/question对的模型。
吹牛皮的时候到了:是 第一个 引入一般的蒸馏计划 到 VQD 任务中。
四、Methodology
主要包含 “教师”模型 和 “Big”教师模型 + 知识蒸馏 的框架:
1、Problem Definition
开始讲了 VQA 的定义,这里不啰嗦。然后讲 VQD的定义:给出图问对,目标是 从 10种原因(为什么有不同的答案,本文第三张图片所示)中给出 真实的 binary ground truth vector(也就是 每个原因的概率 )。
其中,数据集的标签 情况:每一个 原因 被打上标签:
1 :出现
0 :未出现。
作者模型框架 通用结构:
说实话,确实有点过时了huo~
2、Proposed Training Method
上来介绍所用的 数据集,ViWiz VQD 数据集包含了真实的 目标标签,以及含有不同答案原因的标签,注意一下,只有 测试集和测试集 提供这些,测试集 是 不提供标签 的。
所以作者 在测试时 的数据集是 无法提供答案标签 的。
直观上来说,依赖三个模态 的模型和 只依赖问题和图像 的模型相比,依赖少的 表现得 更糟。
另外:
鉴于此,作者根据 “教师-学生” 框架设计出多种模型,再加上 知识蒸馏。尽管 最佳的模型 有着所有的模态,由于当前数据集的限制,作者认为采用 不同教师模型的联合 同样是最佳解决方案。
3、Individual Modality Teacher Models
首先是对作者提出的模型进行描述:
视觉 教师: Resnet50 + mlp 产生 class logit
问题 教师:Glove embedding + GRU backbone + mlp 产生 class logit
Big Teacher: 使用 所有模态(V+Q+A),是 最复杂 的模型,超出了Baseline model。
接下来 重点强调 了 答案 教师:采用 不同标签答案 作为输入,尝试去 理解 这种答案差异分布的原因;
和 其他教师 模型有 轻微不同 的地方在于:在 没有任何其他线索的情况下,直接利用答案 猜测为什么会有 不同的答案。对于答案词表,官方采用了 6250 个 词频大于5次 的单词。
而作者则选择了 独一无二的 58789 个 词表,原因 是有很多 独一无二的答案被舍弃掉 之后,模型可能 不会在意微小的差别,因此 导致混乱 或者 颗粒状的推理 产生。如果 除去测试集 外,使用了 45304 个单词。
4、“Big” Teacher Model
大教师 模型:res50+glove embedding +gru + attentionn 送入 MLP 产生 class logit
5、Student Model
ResNet50+Glove embeddings + GRU,采用 Q+V 作为输入+ MLP 产生中间特征 + FC classifier 输出 class logit 送入 Sigmoid 进行归一化 输出
6、Teaching the Student
教师 模型需要通过 预训练 才能教导学生( “预训练”,你在开玩笑?),采用 BCE损失
每一个教师模型采用 三个输入,通过 L2损失 来 匹配 教师模型和学生模型的输出。另外还采用了 不同教师模型 里面的 中间视觉和问题特征,Figure3 上面很详细。理论上来说是强迫学生模型 学习 另一个模态存在时 而不能学到的 特征表示。
大教师 模型可以 学习答案的模态,通过 蒸馏 中间层的 特征表示,学生 模型可以 模仿 其需要 遵循的特征 表示规律,从而可以 预测出 问题+图像对 产生答案 的 差异类型。(emmmm, 感觉有点牵强?)
最终模型,采用 7个L2损失 在学生模型上,以及自身的 BCE损失,还采用了 中间特征 以及 预测特征 + 大教师 模型 蒸馏学生模型 的损失,最终损失如下:
五、实验
1、Implementation Details
ResNet50+ GRU 45304 个单词表,采用一个 word embedding 嵌入答案到特征里面,原因是:答案是单词而不是句子,所以 并未采用 RNN (啊,方法太老了吧?现在的 Transformer 完全无缘呀)
参数设置:1024 隐藏层维度
MLP 2层 全连接层 + relu 激活函数
adam 优化器 r=0.1
学习率 lr 0.01
教师模型 5 个 epoch
学生模型 20 个 epoch
2、VizWiz VQD Dataset Setup
一些对该数据集的介绍,由于 测试集未公开,所以采用 训练集训练,验证集进行测试,每个问题有 10个答案 以及 10个答案为什么不同 的 原因标注(正确的原因为1,其他为0)
3、Answer Difference Baselines
Q、I、A、 模型是单独训练的 教师 模型,Q+I+A 模型是 基础 模型,以及 大教师 模型
总结:单个模型 效果好,联合 起来效果更好,组合 更牛皮,归因于 知识蒸馏 至学生模型
4、Results of Knowledge Distillation
消融 实验:每一个蒸馏方法是 如何影响 学生模型的性能。Basline 是 没有 任何知识蒸馏的损失的 Q+I 模型。
这个 翻车 的结果表明:蒸馏 单个模态 到 基础 模型 并未对 学生模型 产生帮助,表4红色的 参数表明,教师 模型中的 视觉线索 并未 真正影响 基础模型;同时表明了:单个 教师 模型 发生退化 了。
原因 分析:学生模型 似乎 没有 从答案教师得到 更多的知识,可能的原因 是 答案 教师预测是==基于 并未出现 在学生模型上的不同模态 ==,所以单个 教师 模型 并不能帮助 学生模型。
然后作者 继续改进:单单 联合 所有教师模型 无用,最佳模型为 大教师+视觉+问题教师+所有中间特征的模型
原因 是由于 大教师 模型 (联合V、Q、A、+中间特征) 太 依赖于 答案,并未超过最佳模型。
为了 更加伟大,作者运用 V+Q教师的损失+中间特征,使得 模型最伟大
5、Testing on the VQA 2.0 Dataset
VQA2.0 数据集在测试集中有 真实的答案 可以 提供,所以作者使用 trainval 训练,test 进行评估:
在 VizWiz 数据集上,和其他数据集 差异 的存在使得更 容易认错 在 LQI 上,但其他类似 AMB、SBJ 这种并未受到影响,但是 DFF & SBJ 分数较高。
通过比较 视觉 教师 or 单独的视觉 模型,很难通过 仅观察 来得出 答案差异(在 LQL 上的性能下降)。
在 VQAv2 数据集上,表4 中 单个模态 显著提升了模型性能,但是 最佳模型 仍然需要 大教师 模型的 参与(变相说明作者提出的模型好?)
接下来是 可视化 部分:
基础模型 是 没有任何知识蒸馏 的模型,学生模型 是 有蒸馏 的模型。
基础 模型在 学错 之后通过 蒸馏 学对了。
但是一个 显著缺陷 是: 学生模型 易受到 教师 错误的 影响:如果教师模型答案全错,那么 学生 容易受到 教师的影响 将 正确的改成错误的 (emmm, 理论上来说是这样,但是人类会出现大佬,反驳 老师,但 机器却不会 ),这表明了 教师模型 是很 plausible 的。
六、总结
设计模型 提高 对 所给模态模型 的性能:大教师 模型,蒸馏知识 到 学生模型。
结语
终于,这篇博客算是写完了,这也是笔者第一次接触到这种类型的文章,研究答案的差异性,但是我很好奇的一点是,文中出现的 “reason” 真的是模型拥有的“推理”能力,而不是模板匹配吗?