ViLBERT——BERT多模态开山之作

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处理文本序列,这一部分仍然没有发生改变。(如上图)
在这里插入图片描述
接着我们要考虑加入图像部分,但是思考一个问题——我们应该怎样加入,加入图像的什么数据?
既然我们无论如何都要讲文本-图像数据结合到一起,作者就说,那我们就要设计一种最能挖掘文本-图像关系的架构!
在这里插入图片描述

于是作者提出先把图像的序列信息也提取出来,那么该如何提取?术业有专攻——当然是用CNN系列来提取(论文中作者使用的是Fast-RNN)!我们把图像分割成一张张子图像,这样我们能得到浓缩的图像序列向量(即用向量表示每一个区域)。(如上图)
在这里插入图片描述
接下来就是极为关键的一步,作者引入了Co-Attention的概念,目的是计算与另外一个分支的重要性关联性分数(比如图像分支要算和文本分支的关联性分数,反过来亦如此)。
在这里插入图片描述
紧接着,那必然是深度学习的专属叠深度环节了,基本思路就是一层自注意力的Transformer+共同注意力的Transformer,如此迭代。
但现在的问题不在于深度和参数的提升,而在于我们的输出是什么?怎么样得到输出?
答案是这要根据不同的任务不同对待:如果任务是视觉问答,那么我们可以把视觉流向量和语言流向量拼到一起(或者其他方式)输入到Classifier中得到num_classes的概率分布并输出概率最大的答案;但如果是其他任务,开头以及最后的处理可能会不同。

4. 作者的训练方式与任务是什么?

本文中共有两大训练方式:分别是多模态的掩码建模和多模态对齐预测,分别对应(a)和(b)
在这里插入图片描述
多模态的掩码建模:与标准BERT一样,对词和图像输入大约15%进行mask,通过余下的输入序列对mask掉的元素进行预测。对图像进行mask时,0.9的概率是直接遮挡,另外0.1的概率保持不变。文本的mask与BERT的一致。ViLBERT并不直接预测被mask的图像区域特征值,而是预测对应区域在语义类别上的分布,使用pre-train的object-detection模型的输出作为ground-truth,以最小化这两个分布的KL散度为目标。
多模态对齐预测任务:其目标是预测图像-文本对是否匹配对齐,即本文是否正确的描述了图像。以图像特征序列的起始IMG token和文本序列的起始CLS token的输出作为视觉和语言输入的整体表征。借用vision-and-language模型中另一种常见结构,将IMG token的输出和CLS token的输出进行element-wise product(元素级乘积)作为最终的总体表征。再利用一个线性层预测图像和文本是否匹配。

作者完成的任务:视觉问答,视觉常识推理,指示表达,基于字幕的图像检索,零样本的基于字幕的图像检索


接下来我们进入文章部分(如果您理解了我上面大致在说什么,那么下面的部分完全可以随便看看)

Abstract

我们提出了VILBERT(视觉-语言BERT的简称),这是一个用于学习图像内容和自然语言之间无任务依赖的联合表示的模型。我们将流行的BERT架构扩展到一个多模态的双流模型,它分别在独立的流中处理视觉和文本输入,并通过共注意力(co-attention)的Transformer层进行交互。我们在大型自动采集的概念性字幕(Conceptual Captions)数据集上通过两个代理任务对模型进行预训练,然后通过对基础架构进行少量修改,将其迁移到多个已建立的视觉-语言任务上——视觉问答、视觉常识推理、指代表达和基于字幕的图像检索。我们观察到与现有任务特定模型相比在各个任务上都有显著提升——在所有四个任务上实现了最先进的水平。我们的工作代表了从仅在任务训练中学习视觉和语言之间的关联转向将视觉定位视为一种可预训练和可迁移能力的转变。

一.Introduction

自那个著名的雄心勃勃的夏季项目以来,人们已经在构建能够通过生成或响应自然语言来展示视觉理解的系统方面取得了稳步进展,无论是在图像、视频,甚至是完整的3D环境中。这些方法及其相应的任务都被通称为“视觉-语言”。然而,尽管需要将自然语言和视觉刺激对齐——即执行视觉基础(visual grounding),视觉-语言任务的方法却缺乏一个统一的基础来获得这一能力。相反,主流策略是从分别预训练的语言和视觉模型开始,然后在任务训练中学习基础知识,这经常导致在视觉语言数据有限或有偏见时泛化能力差的结果。

这种先预训练再迁移学习的方法对视觉-语言任务来说是自然的,它在计算机视觉和自然语言处理中已经变得非常普遍,因为它易于使用且具有强大的表征能力,已经成为事实上的标准。在这些领域,预训练的模型是在大规模数据源上训练的,可以为目标任务提供有用的信息,例如对狗品种敏感的图像特征或精确校准的单词间语义距离。当然,这样的视觉和语言理解对于视觉-语言任务来说是必不可少的,但同样重要的是它们如何关联到一起——例如,如果下游视觉-语言模型不能将完美的狗品种视觉表示与像“比格犬”或“牧羊犬”这样的短语正确关联,那么这种表示就没什么用。因此,我们有兴趣开发一个视觉基础的通用模型,可以学习这些联系并利用它们在广泛的视觉-语言任务上——即,我们寻求为视觉基础预训练模型。

为了学习这些视觉-语言联合表示,我们参考了最近在自监督学习中的成功案例。自监督学习通过训练模型执行所谓的“代理”任务,从大规模未标记的数据源中捕获丰富的语义和结构信息。这些代理任务利用数据内的结构自动生成监督任务(例如为图像着色[20]或在文本中重构遮蔽单词[12])。虽然视觉领域的工作已经显示出越来越多的希望[21–23],但到目前为止,自监督学习最大的影响是通过像ELMo[13]、BERT[12]和GPT[14]这样的语言模型,它们在许多NLP任务上设立了新的高标准。为了通过类似的方法学习视觉基础知识,我们必须确定一个合适的数据源,其中包含可用的视觉和语言之间的对齐信息。在这项工作中,我们考虑了最近发布的概念性字幕(Conceptual Captions)[24]数据集,该数据集由大约330万幅图片组成,这些图片带有从网络上启用了alt-text的图像自动收集的弱关联描述性字幕。

我们提出了一个联合模型,用于从成对的视觉语言数据中学习与任务无关的视觉基础知识,我们称之为视觉和语言BERT(简称ViLBERT)。我们的方法扩展了最近开发的BERT[12]语言模型,使其能够联合推理文本和图像。我们的关键技术创新是引入了用于视觉和语言处理的独立流,它们通过共注意力变换层进行通信。这种结构可以适应每种模态不同的处理需求,并在不同的表示深度上提供模态间的交互。我们证明这种结构在我们的实验中优于单流统一模型。

类似于[12]中的训练任务,我们在概念性字幕数据集上训练我们的模型,执行两个代理任务:在给定未遮蔽输入的情况下预测遮蔽单词和图像区域的语义,以及预测图像和文本片段是否对应。我们将预训练好的模型作为四项已建立的视觉-语言任务的基础——视觉问答[3]、视觉常识推理[25]、指代表达[2]和基于字幕的图像检索[26]——在所有四项任务上都设定了最新的水平。与使用分别预训练的视觉和语言模型的最新任务特定基线相比,我们在这些任务上发现了2到10个百分点的提升。此外,我们的结构便于针对这些任务进行修改——作为跨多个视觉-语言任务的视觉基础知识的共同基础。

二.Approach

在本节中,我们首先简要总结 BERT 语言模型(第 2.1 节),然后描述我们如何扩展它来共同表示视觉和语言数据(第 2.2 节)。

2.1 Preliminaries: Bidirectional Encoder Representations from Transformers (BERT)

BERT模型由[12]引入,是一个基于注意力的双向语言模型。当在大型语料库上预训练时,BERT已经被证明对多种自然语言处理任务非常有效。

BERT模型操作在单词tokens的序列上,从w0到wT。这些tokens被映射到学习到的编码并通过L个“编码器风格”的Transformer块[27]来生成最终表示h0到hT,对应于l层后的中间表示。我们在图2a中描述了一个单一编码器风格的Transformer块的计算,该块由一个多头注意力块后接一个小型的全连接网络组成,两者都包裹在残差连接中。值得注意的是,中间表示H^(l)被用来计算三个矩阵——Q、K和V——分别对应于查询、键和值,它们推动多头注意力块的运作。具体来说,查询和键之间的点积相似性决定了对值向量的注意力分布。由此产生的加权平均值向量构成了注意力块的输出。正如我们稍后描述的,我们修改了这种查询条件下的键值注意力机制来发展一个多模态共注意力Transformer模块用于ViLBERT(见图2b)。

Text Representation:BERT模型是由文献[12]中介绍的一种基于注意力的双向语言模型。当在大型语料库上预训练时,BERT在多个自然语言处理任务上证明了其有效性。BERT模型处理由词汇表单词和少量特殊标记组成的离散token序列:SEP、CLS和MASK。对于给定的token,输入表示是token特定的学习嵌入[28]和位置编码(即token在序列中的位置)以及片段(如果存在多个句子,则为token句子的索引)的总和。
Training Tasks and Objectives:BERT模型在大型语言语料库上进行端到端训练,包括两项任务:掩蔽语言建模和下一句预测。
在掩蔽语言建模任务中,任务将输入token随机划分为不连续的集合,对应于被掩蔽的X_M和被观察到的X_O token(大约15%的token被掩蔽)。被掩蔽的token有80%的时间被一个特殊的MASK token替换,10%的时间被一个随机单词替换,剩余的10%保持不变。然后BERT模型被训练来重建这些掩蔽的token,给定观察到的集合。具体来说,学习一个线性层将每个索引处的最终表示(例如h_i)映射到词汇表上的分布,并且模型在交叉熵损失下进行训练。在下一句预测中,BERT模型传递了两个文本段落A和B,遵循格式{CLS, w_A1, …, w_AT, SEP, w_B1, …, w_BT, SEP},并且被训练来预测B是否紧随A出现在源文本中。具体来说,操作最终表示为CLS token(即h_CLS)的线性层被训练来最小化这个标签上的二元交叉熵损失。

2.2 ViLBERT: Extending BERT to Jointly Represent Images and Text

受BERT在语言建模方面成功的启发,我们希望开发类似的模型和训练任务来学习语言和视觉内容的联合表示。具体来说,我们考虑共同表示静态图像和相应的描述性文本。

一种直接的方法是对BERT做最小的改动——简单地对视觉输入进行离散化,将这些视觉“token”就像文本输入一样对待,并从预训练的BERT模型开始。这种架构有很多缺点。首先,初始聚类可能导致离散化错误并丢失重要的视觉细节。其次,它对两种模态的输入进行了相同的处理,忽略了它们可能需要不同的处理层次,或者它们输入表示的初始抽象层次。例如,图像区域可能与句子中的单词相比关联性更弱,而视觉特征本身通常已经是一个非常深层网络的输出。最后,强行使预训练的权重适应大量额外的视觉“token”可能会损害学到的BERT语言模型。相反,我们开发了一个两流架构,分别对每种模态进行建模,然后通过一小组基于注意力的交互将它们融合。这种方法允许每种模态有可变的网络深度,并在不同的深度上实现跨模态连接。

我们的模型被称为ViLBERT,如图1所示,它由两个平行的BERT风格模型组成,分别操作图像区域和文本片段。每个流是一系列变换器块(TRM)和我们引入的新颖共注意力变换器层(Co-TRM),以促进模态间的信息交换。给定一个图像I,表示为一组区域特征v1, …, vT,和一个文本输入w0, …, wT,我们的模型输出最终表示h_v0, …, h_vT和h_w0, …, h_wT。请注意,视觉和文本数据流之间的信息交换被限制在特定的层之间进行。这样的设计是基于一个直觉,即选择的视觉特征本身已经是相对高级别的,与句子中的单词相比,它们需要较少的上下文聚合来理解。
Co-Attentional Transformer Layers:给定中间层输出Hv和Hw,共注意力模块计算查询、键和值矩阵,如同标准变换器块一样。然而,来自每种模态的键和值作为输入传递给另一模态的多头注意力块。顺序地,注意力块为每种模态产生了通过注意力汇集的特征——实际上执行了在视觉流中的图像条件语言注意力和在语言流中的语言条件图像注意力。后者模仿了视觉-语言模型中常见的注意力机制[30]。变换器块的其余部分像之前一样进行,包括与初始表示的残差相加——结果产生了一个多模态特征。一般来说,视觉-语言的共注意力并不是一个新想法(最初在[31]中提出),并且并行工作[32,33]已经展示了类似的共注意力变换器结构在视觉问题回答[3]任务上的有效性。

Image Representations:我们通过提取边界框和它们的视觉特征从预训练的目标检测网络(见第3.1节)生成图像区域特征。与文本中的单词不同,图像区域没有自然的排序。我们编码空间位置,构建一个由区域位置(从归一化的左上和右下坐标)和区域面积的分数组成的5维向量。生成的图像空间向量需要进行投影操作,以便和其他视觉特征相加。我们用一个特殊的IMG标记来标记图像区域序列的开始,代表整个图像(即,具有代表整个图像的空间编码的平均池化视觉特征)。

Training Tasks and Objectives:类似于上一节中描述的,我们考虑两个预训练任务:掩蔽多模态建模和多模态对齐预测。
掩蔽多模态建模任务(如图3a所示)遵循标准BERT中的掩蔽语言建模任务——掩蔽大约15%的单词和图像区域输入,并让模型在给定剩余输入的情况下重建它们。被掩蔽的图像区域在大约90%的时间里它们的图像特征被归零,剩余的10%时间保持不变。被掩蔽的文本输入被标记为BERT标记但不直接重建它们的掩蔽特征值,而是预测相应图像区域的语义类别的分布。为了监督这一过程,我们取同一预训练检测模型用于特征提取的区域的输出分布,并计算这两个分布之间的KL散度。我们训练模型以最小化KL散度。这个选择反映了这样一种观点:语言通常只识别高级视觉内容并不太可能关注到视觉特征的具体细节。因此,应用回归损失可能会使平衡掩蔽图像和文本输入所产生的损失变得困难。

在多模态对齐任务中(如图3b所示),模型被呈现一对图像-文本,格式为{IMG, v1, …, vT, CLS, w1, …, wT, SEP},并必须预测图像和文本是否对齐,即文本是否描述了图像。我们取IMG和CLS的输出h_IMG和h_CLS作为整体表示,借鉴视觉-语言模型的另一种常见结构。我们在一个element-wise product之间训练h_IMG和h_CLS,并学习一个线性层来做出图像和文本是否对齐的二元预测。然而,Conceptual Captions数据集[24]只包含对齐的图像-字幕对。为了生成负样本,我们随机替换图像或字幕中的10%。

三.Experimental Settings

3.1 Training ViLBERT

pretrain在Conceptual Captions数据集上进行,用BERT_base模型对ViLBERT中的语言流进行初始化。使用基于Visual Genome数据集预训练的Faster R-CNN模型抽取图像区域特征。选用类别探测概率高于自信度阈值的区域,并保持10~36个的高分值的bounding boxe。视觉流中的Transformer和共注意力transformer blocks的隐含层大小为1024,注意力头为8个。

3.2 Vision-and-Language Transfer Tasks

  • 视觉问答(VQA),使用VQA 2.0数据集
  • 视觉常识推理(VCR),使用Visual Commonsense Reasoning (VCR)数据集
  • 指示表达(referring expressions),所谓的指示表达是对给定的自然语言指代找到对应的图像区域。本文使用的是RefCOCO+数据集
  • 基于字幕的图像检索,使用Flickr30k数据集
  • 零样本的基于字幕的图像检索。上述任务都是由特定下游数据集微调,在零样本任务中,直接将预训练的ViLBERT应用于Flickr30k数据集中的多模态对齐预测。

四. Results and Analysis

对比试验(其中带十字符号的是没有经过预训练的模型):
在这里插入图片描述
伴随数据集大小增加的实验效果对比
在这里插入图片描述

  • 18
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
嗨!对于BERT情感分类实战,您可以按照以下步骤进行: 1. 数据准备: - 收集和整理情感分类的训练数据集,一般包含文本和对应的情感类别(如正面、负面、中性等)。 - 划分数据集为训练集和测试集,确保数据集的均衡性和随机性。 2. BERT模型介绍: - BERT(Bidirectional Encoder Representations from Transformers)是一种预训练的自然语言处理模型,通过双向Transformer编码器学习语义表示。 - 可以选择使用基于TensorFlow或PyTorch实现的BERT模型,或者直接使用已经训练好的BERT模型进行微调。 3. 模型微调: - 使用训练集对BERT模型进行微调,即在预训练的BERT模型基础上,通过训练集进行进一步的学习。 - 这里的微调过程包括输入数据的预处理、构建分类任务的模型结构、定义损失函数和优化算法等。 4. 模型评估: - 使用测试集对训练好的BERT模型进行评估,计算分类准确率、精确率、召回率等指标,评估模型在情感分类任务上的性能。 5. 预测与应用: - 使用训练好的BERT模型对新的文本进行情感分类预测,得到情感类别的预测结果。 - 可以将该模型应用于各种情感分析任务,如舆情监测、评论情感分析等。 以上是BERT情感分类实战的一般流程,您可以根据具体需求和数据特点进行相应调整和优化。希望能对您有所帮助!如有更多问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光诺言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值