出发点
当前的视觉问答主要是在给定答案的情况下进行的,虽然已经取得了一定的效果,但是也存在比较大的问题,首先是当前主流的方法都将视觉问答变成了一个分类的问题,使用的数据集也假定的大家用分类模型做视觉问答,虽然我们在强调要正确的回答一个问题,需要对问题和图像有更深入的理解,因此出现了多模态信息融合和注意力机制这些方法,希望能更好地理解图像和语义内容。
但是把视觉问答作为一个分类问题其实是很不符合人类的直觉的。思考一下,我们人类执行视觉问答任务的时候是怎样的一个过程,我们根据问题和图像可以直接生成一个答案,这个答案是根据问题和图像还有我们已有的知识生成的,没有候选答案。我们人类可以这样做是因为我们有语言,并且可以将图像信息重新用语言进行描述,继而再生成一个答案。计算机的问题在于它们没有一套通用的语言,但是随着语言模型和词嵌入模型的进步,我们是不是可以将向量作为计算机的语言,计算机自己会学习到如何使用这些语言,我们不需要了解计算机语言的规则,只需要了解如何对计算机的语言进行解码。
设想的新任务和解决方案
首先,我们将数据集中的答案和问题使用相同的语言模型进行编码,再将这些数据传递给模型,让模型进行学习。训练好的模型的输出是一个词向量,也就是根据问题和视觉信息产生的答案,我们将这个词向量使用语言模型进行解码,就得到我们人类可以理解自然语言。这种方法的好处在于问题的答案不再限定在候选答案之中,而是可以根据任何问题和视觉信息千变万化的,即使是我们在训练集中未给定的答案,计算机也可以生成。但是这种方法也存在以下几个难点和疑问:
- 现有的语言模型可以对多少词汇进行编码,如时间这种形式的数据语言模型是否可以对其进行编码,以及对多个词汇的短语如何进行编码
- 在视觉问答任务中,答案有时并不是一个单独的词汇,而是几个词组合得到的,在这种情况下,一个词向量是否可以表示这种答案,以及如果可以表示这种答案,需要多大的训练集
- 我们似乎无法穷尽所有的有多个单词组合而成的答案,这样,解码计算机语言的时候就会出现问题
- 是否可以让模型按照词汇输出不同长度的向量,例如一个视觉问题的答案是on right,那么模型的输出是N1和N2,分别表示on和right的词向量,也就是说模型的输出是不定长的,这在当前的神经网络中难以实现,尤其是这和程序学习的过程相关。
即使存在以上的几个问题,我们还是可以降低我们的标准去完成一个相对简单的任务,我们限定一个计算机语言的词汇和词汇组合集合,计算机只能学会这些语言,当然这个集合的设定会比当前的VQA的答案候选集要大得多,集合中的每一个元素均可以用一个固定的N维词向量表示,我们也相当于拥有了一个计算机语言的解码器。在这些约束下,我们可以描述一个具体的零样本视觉问答任务以及解决方案:
假定现在有一个计算机语言集合S(由人类语言定义,再使用语言模型对这些人类语言进行编码),我们从中取出一部分作为训练集的答案集合A,再取出一部分作为测试集的答案集合TA,A和TA的交集为空集。我们使用训练集让模型进行学习,可以认为模型在学习中一定会学习到根据图片回答一个问题的能力,换句话说,模型会学习到语言与视觉特征的联系和利用视觉和语言信息共同进行推理的能力,例如用语言描述一个视觉信息,就像我们人类一样。训练完成之后,我们使用测试集去测试模型联系语义特征和视觉特征的能力。形式化的描述如下图:
需要做的工作
- 选择一个语言模型对词汇和词组进行编码,需要了解语言模型的使用方法
- 定义计算机语言集合和问题答案集合(简单的做法是直接在当前的VQA上进行划分,可以不需要自己制作数据集,但是VQA的测试集标签并不公开,所以只能在训练集和验证集上进行操作),完整的操作应该是收集图片和问题以及答案,根据答案进行划分,如何制作一个数据集以及对数据集应该有统计信息.
- 定义一个模型,这个模型需要学会如何利用问题和视觉信息结合自身已有的知识(学到的权重)生成一个答案.
- 评价指标的定义.
意义
- 提出了一种新思路,常识让模型自己学习语言和图像的联系,推理的学习融入到了语言和图像的交互的学习之中.
- 图像的标签是由人类定义的,使用我们人类的语言,所以我们天然对视觉和语言的关联有更强的捕捉能力,但是计算机无法使用我们的语言逻辑进行思考,它难以捕捉到视觉和语言的关联.
- 零样本视觉问答,让模型可以回答没有见过答案的问题.
- 更符合人类思考问题的过程,思考与推理的同时是需要伴随着对语言的理解,根据多方信息经过推导之后直接得出一个答案.我们认为计算机需要有语言(广泛意义上的语言,即使我们人类理解不了计算机是如何利用语言进行交流的,那是属于它们自己的语言,理想的情况是计算机在经过大量的学习之后可以自己学习到一套语言的规则和内涵,这种语言天然的和图像有关系)才能实现真正的人工智能,