视觉问答VQA之通过提问题获取知识

Knowledge Acquisition for Visual Question Answering via Iterative Querying

这篇论文是斯坦福李飞飞团队做的工作,发表在CVPR2017上。论文通过迭代的查询(问问题query)来获取额外知识和信息,从而更好的解决VQA问题(关于VQA的纵览可以看我的另一篇文章——一文带你了解视觉问答VQA)。相比于其它获取额外知识的方法,这篇论文是通过提问与问题和图片相关的问题的方式来获取相关知识/信息,就像人类会问问题获取信息一样,论文也是基于这个启发。例子如下图所示,通过问那个是平底锅,然后得知里面食物的颜色。(然而这篇论文距离这种类型的目标还差之甚远,论文也算是提出了一种问问题的框架,还是有待改善。)

模型


模型的总框架,分为

  1. core network
    核心网络根据图像和问题,额外知识,得到最终答案,具体包含四个部分:
  • question encoder: 输入为图片特征和问题特征,经过MLP,输出编码;
  • answer decoder:输入为memory bank的所有向量sum和question encoder的编码,经过MLP,输出answer;
  • memory encoder:输入为提问query得到的response,经过encoder编码为固定长度的向量,因为response有多种格式,所以memory encoder需要能处理不同类型的response;
  • memory bank:存储memory encoder编码得到的memory,以队列保存每次查询得到的response的memory。
    迭代查询的方式如下图所示,论文没有提到查询是什么时候,怎么终止的,所以应该是固定查询次数的。


  1. query generator
    查询生成器用来生成query,输入为图像,问题,当前的memory bank,输出下一个问题。
    因为问题空间大,所以论文使用了四种类型的问题/模板,与固定的objects(主要是因为哲四种有标注好的数据集),所以模型有两个softmax,一个问题类型,一个object:


Training

query generator的训练因为没有数据,不能进行有监督的训练,但是可以有core network的反馈/回报。所以一种方式是使用增强学习RL的方法,然而因为action空间,也就是问题空间很大,所以论文没有使用RL。而是使用mento-carlo来采样问题空间,扩展问题树,通过得到的答案的准确性来给问题打分score:



seed set是词的集合,用来生成相关性强的问题。训练sample来自当提的问题能够使网络得到正确答案时,那么这个问题是正确的,相关的,将用来训练query网络。
两个网络使用交替更新的方式来训练,就是固定一个网络然后训练另一个网络:


实验

实验在两个数据集上做验证:

  • Visual7W数据集,知识源是Visual Genome的标注,包含object,position,relationship等;
  • VQA数据集,知识源是一个训练好的detector。
    结果:



    从结果看,Visual7W的提升还是较大的,毕竟相比于那两个方法多了额外的信息,也就是Genome的标注。不过在VQA数据集上,优势就体现不出来了,可能是得到的额外信息少了,因为只有detector作为知识源,也有模型的问题,比如没有attetion的运用,数据增强等。
    论文给出的一些query例子:



Discussion

这篇论文本质上是通过query来得到额外知识/信息来提高回答的准确性,给我们提供了一个问问题的思路,然而也存在很多缺陷,留给大家思考:

  1. 提问问题可以得到额外信息,但是没有转化为内在知识表示,只是当作记忆;(每次都要问,需要一个庞大的知识源,相比于数据增强训练能转化为内在表示);
  2. 提问不知道何时停止,何时得到准确信息,这是一个可以改进的地方,比如增加一个判断啥的;
  3. 太依赖知识源的回答,本质还是视觉基础问题,只有当视觉基础解决得好,与NLP的融合问题也可以迎刃而解;
  4. 学习方法,问的问题还是比较蠢的,从上面给出的例子可以看出,同时也受限于问题类型等。

你可能感兴趣的:(视觉问答VQA之通过提问题获取知识)