ViLBERT论文理解
个人理解(写在前面,其实也只用看这部分)
作为BERT早期多模态中最有代表性的论文之一,我们有必要汲取其中的设计理念以及新的构思想法。
1.作者们在解决什么问题?
在过往vision-language的任务中,无论是图像还是自然语言任务通常做法是先用大量的数据集pre-train,之后再把预训练好的模型直接用在子任务中,但是这样的做法太依靠于pre-train数据集的质量,所以导致这类方法训练出的模型的泛化能力较低。并且,作者们要解决的核心问题在于试图要让模型学会如何将图片内容与文字解释强关联到一起,比如说提供图片内容和文字注释作为训练,那么在以后的任务中输入图片也能够精准与我们想要的短语相关联,比如,视觉模型对狗的品种分类,其视觉特征是100%可靠的,但是下游的“vision-and-language”任务无法将之与”小猎犬”或”牧羊人”这样的近似短语进行关联时,再怎么完美的特征,其作用也是近乎于无。因此,这边论文提出一种通用的可以学习到此类联系,并在vision-and-language任务中运用视觉基础模型。即,VLBERT是面向视觉基础的pre-train。这是作者想要解决的。
2.本文创新点是什么?
- 虽然这是一个vision-language联合训练的模型,但是是主要面向vision做预训练的
预训练的Part 1:文本部分仍然是直接采用BERT的训练后的参数进行初始化,图像部分使用的是Fast-CNN模型进行大量数据的预训练。
预训练的Part 2:作者采用的是概念字幕数据集来进行训练。将image-text向量整合到一起并理解他们之间的关系。(通过多模态的掩码建模和多模态对齐预测两种方式来实现)
预训练的Part 3:接受具体任务。 - 作者引入的多模态框架是开山之作(见下文介绍)
- 除了之前就出现的self注意力,cross注意力机制,作者引入了co-attention机制
具体来说,每个流(视觉和语言)不仅处理自己模态的信息(通过自注意力机制),而且还能够参与到另一个模态的信息处理中。这是通过使用来自另一模态的键(K)和值(V)来实现的,而查询(Q)则来自于当前模态。例如,在图 (b) 中,视觉流使用语言流中的键和值进行注意力计算,反之亦然。这样,每个模态都能在自己的处理流程中集成另一模态的信息,从而使模型能够更好地理解和整合跨模态的数据。
3.整体架构
这是论文中给出的整体架构图,但是我觉得不是特别通俗易懂。所以借鉴了B站的一组图:
首先是我们熟悉的transformer处理文本序列,这一部分仍然没有发生改变。(如上图)
接着我们要考虑加入图像部分,但是思考一个问题——我们应该怎样加入,加入图像的什么数据?
既然我们无论如何都要讲文本-图像数据结合到一起,作者就说,那我们就要设计一种最能挖掘文本-图像关系的架构!