【自然语言处理】【多模态】BLIP:面向统一视觉语言理解和生成的自举语言图像预训练

BLIP: 面向统一视觉语言理解和生成的自举语言图像预训练
《BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation》

论文地址:https://arxiv.org/pdf/2201.12086.pdf

相关博客:
【自然语言处理】【多模态】多模态综述:视觉语言预训练模型
【自然语言处理】【多模态】CLIP:从自然语言监督中学习可迁移视觉模型
【自然语言处理】【多模态】ViT-BERT:在非图像文本对数据上预训练统一基础模型
【自然语言处理】【多模态】BLIP:面向统一视觉语言理解和生成的自举语言图像预训练
【自然语言处理】【多模态】FLAVA:一个基础语言和视觉对齐模型
【自然语言处理】【多模态】SIMVLM:基于弱监督的简单视觉语言模型预训练
【自然语言处理】【多模态】UniT:基于统一Transformer的多模态多任务学习
【自然语言处理】【多模态】Product1M:基于跨模态预训练的弱监督实例级产品检索
【自然语言处理】【多模态】ALBEF:基于动量蒸馏的视觉语言表示学习
【自然语言处理】【多模态】VinVL:回顾视觉语言模型中的视觉表示
【自然语言处理】【多模态】OFA:通过简单的sequence-to-sequence学习框架统一架构、任务和模态
【自然语言处理】【多模态】Zero&R2D2:大规模中文跨模态基准和视觉语言框架

一、简介

​ 近期,Visual-language预训练在各种多模态下游任务中取得了巨大的成功。然而,现有的方法存在着两个限制:

  1. 模型视角

    许多模型都采用基于编码器的架构或者编码器-解码器的架构。然而,基于编码器的模型并不能直接用于文本生成任务,而编码器-解码器架构并没有成功的应用于image-text检索任务。

  2. 数据视角

    许多的state-of-the-art方法(例如:CLIP,ALBEF,SimVLM)都在从网络上收集的image-text对数据上进行预训练。尽管通过扩大数据集的规模获得了性能增益,但本文也展示了带有噪音的web文本对于vision-language学习来说是次优解。

​ 为此,作者提出了BLIP: Bootstrapping Language Image Pre-training for unified vision-language understanding and generationBLIP是一个新的VLP(Vision-Language Pre-training)框架,其能够更加广泛的支持下游的任务。其从模型和数据视角做出了两个贡献

  1. 编码器-解码器的多模态混合 (MED) \text{(MED)} (MED):一个用于高效多任务预训练和灵活迁移的新模型架构。一个 MED \text{MED} MED可以是单模态的编码器,也可以是基于图像的文本编码器/解码器。模型通过三个vision-language目标函数进行预训练:image-text对比学习、image-text匹配和图像条件语言建模。
  2. CapFilt(Captioning and Filtering) \text{CapFilt(Captioning and Filtering)} CapFilt(Captioning and Filtering):用于从噪音image-text对中学习的新数据集boostrapping方法。微调预训练 MED \text{MED} MED为两个模块:一个用于为给定图像生成合成captions的captioner,以及一个从原始web文本和合成文本移除噪音captions的filter

​ 作者进行了大量的实验和分析,做出了如下的贡献:

  • 实验显示captionerfilter一起工作能够显著改善各种下游任务。此外,还发现更多样的captions会带来更大的收益。
  • BLIP在各种vision-language任务上都实现了state-of-the-art,包括image-text检索、image captioning、视觉问答、视觉推理和视觉对话。直接将本文的方法迁移至两个video-language任务:text-to-video检索和videoQA,实现了zero-shot的state-of-the-art表现。

二、相关工作

1. 视觉语言( Vision-language \text{Vision-language} Vision-language)预训练

​ 视觉语言预训练( VLP \text{VLP} VLP)的目标是通过在大规模image-text数据集上预训练模型来改善下游视觉和语言任务的表现。由于获取人类标注的文本成本非常高昂,许多方法使用从互联网上抓取的图像-文本数据,尽管使用了规则进行过滤,但这些网络文本中仍然普遍存在着噪音。然而,噪音的负面影响很大程度上被忽略了。本文展示了带有噪音的web文本是视觉语言学习的次优解,并提出了 CapFilt \text{CapFilt} CapFilt来更有效的利用数据集。

​ 已经有许多工作尝试将各种视觉和语言任务统一至单个框架。设计模型架构的最大挑战是同时执行基于理解的任务(例如 image-text retrieval \text{image-text retrieval} image-text retrieval)和基于生成的任务(例如 image captioning \text{image captioning} image captioning)。无论是基于编码器的模型或者是基于编码器-解码器的模型在两种类型的任务上都不是很好,而单个统一的编码器-解码器限制了模型的能力。本文提出的多模态混合编码器-解码器为下游任务提供了更多的灵活性和更好的表现。

2. 知识整理

​ 知识整理 KD \text{KD} KD的目标是,通过从教师模型中蒸馏知识来改善学生模型的表现。自蒸馏是知识整理中的特例,其学生和教师的尺寸相当。知识蒸馏在图像分类和 VLP \text{VLP} VLP上都证明了有效性。不同于现有知识蒸馏方法,简单的强制学生模型的类别预测与教师保持一致,本文提出的 CapFilt \text{CapFilt} CapFilt可以看作是在 VLP \text{VLP} VLP上下文中更高效的执行知识蒸馏。captioner通过语义丰富的合成captions来蒸馏知识,filter通过移除噪音captions来蒸馏知识。

3. 数据增强

​ 数据增强 (DA) \text{(DA)} (DA)已经被广泛的应用于计算机视觉,但是数据增强对于语言任务来说并不是很直接。最近,生成语言模型被用于各种 NLP \text{NLP} NLP任务的合成样本。不同于这些专注在低资源语言任务的方法,本文的方法证明了在大规模 VLP \text{VLP} VLP上合成captions的优势。

三、方法

1. 模型架构

【自然语言处理】【多模态】BLIP:面向统一视觉语言理解和生成的自举语言图像预训练_第1张图片

​ 这里使用视觉 Transformer \text{Transformer} Transformer作为图像编码器,其会将图像划分为patches并编码它们作为嵌入向量序列,添加额外的[CLS]来表示全局图像特征。相较于使用预训练目标检测器来进行视觉特征抽取,使用 ViT \text{ViT} ViT的计算效率更高并且已经被最近的方法所采用。

​ 为了能够预训练同时理解和生成的统一模型,本文提出了一个模态混合的编码器-解码器 (MED) \text{(MED)} (MED),其是一个能够执行三个任务之一的多任务模型:

  • Unimodal encoder

    该编码器会分别编码图像和文本。文本编码器与 BERT \text{BERT} BERT相同,[CLS]被添加至输入文本的开头作为整个矩阵的总结。

  • Image-grounded text encoder

    通过在文本编码器的每个 Transformer \text{Transformer} Transformer块的自注意力层 SA \text{SA} SA和前馈网络层 FFN \text{FFN} FFN添加交叉注意力层 CA \text{CA} CA来注入视觉信息。一个任务相关的[Encode] token被添加在文本后,[Encode]输入的嵌入向量被用于image-text pair的多模态表示。

  • Image-grounded text decoder

    使用级联自注意力层来替换文本编码器中的双向自注意力层。[Decode] token被用来表示序列的开始,且一个序列结束的token被用于表示结尾。

2. 预训练目标函数

​ 在预训练过程中联合优化三个目标函数,其中两个是用于理解的目标函数和一个用于生成的目标函数。对于每个image-text对,仅需要在计算量较大的视觉 Transformer \text{Transformer} Transformer上前向传播1次,并且在文本 Transformer \text{Transformer} Transformer前向传播3次,采用不同的函数计算下列三种损失函数:

2.1 图像-文本对比损失函数 ITC \text{ITC} ITC

​ 该损失函数会应用在单模态的编码器。它的目标是,通过鼓励正的image-text样本对具有相似的表示而负样本则相反,从而对齐视觉 Transformer \text{Transformer} Transformer和文本 Transformer \text{Transformer} Transformer的特征空间。该损失函数已经被证明了改善视觉和语言理解的能力。这里的 ITC \text{ITC} ITC同模型 ALBEF \text{ALBEF} ALBEF,一个动量编码器被用来产生特征,从动量编码器中创建的软标签来作为训练目标。

2.2 图像-文本匹配损失函数 ITM \text{ITM} ITM

​ 该损失函数会应用在图像相关文本的编码器。它的目标是,通过捕获图像和语言的细粒度对齐来学习image-text多模态表示。 ITM \text{ITM} ITM是一个二分类任务,模型用一个 ITM \text{ITM} ITM头来预测给定的image-text对是匹配或者不匹配。为了能够发现信息量更加丰富的负样本,采用了一种难负样本挖掘策略,即batch中具有较高对比相似度更有可能被选择来计算损失函数。

2.3 语言建模损失函数 LM \text{LM} LM

​ 该损失函数会应用在图像相关文本的解码器,其目标是对于给定的图像生成文本描述。它会优化一个交叉熵损失函数,其用以自回归的方式来最大化文本的似然来训练模型。这里应用一个0.1的标签平滑来计算损失函数。相比于MLM损失,其在VLP中的应用更加广泛, LM \text{LM} LM能够使模型转换视觉信息至连续captions的泛化能力。


​ 为了利用多任务来执行高效的预训练,文本编码器和文本解码器共享除 SA \text{SA} SA层的所有参数。原因就是编码任务和解码任务的不同最好通过 SA \text{SA} SA层捕获。特别地,编码器使用双向自编码器来建立当前输入token的表示,而解码器利用causal自注意力来预测下一个tokens。另一方面,编码和解码任务的嵌入层、 CA \text{CA} CA层和 FFN \text{FFN} FFN函数相似。因此,共享这些层能够改善训练效率并收益于多任务学习。

3. CapFilt \text{CapFilt} CapFilt

【自然语言处理】【多模态】BLIP:面向统一视觉语言理解和生成的自举语言图像预训练_第2张图片

​ 由于高昂的标注成本,现有的人类标注的高质量image-text对 { ( I h , T h ) } \{(I_h,T_h)\} {(Ih,Th)}的数量有限。近期的工作利用从web中自动收集的大量image-text对 { ( I w , T w ) } \{(I_w,T_w)\} {(Iw,Tw)}。然而,这种方式收集的文本并不能准确的描述对应的图片,这些噪音信号使得视觉-语言对齐学习次优解。

​ 作者提出了 CapFilt(Captioning and Filtering) \text{CapFilt(Captioning and Filtering)} CapFilt(Captioning and Filtering),一个改善文本质量的新方法。上图是 CapFilt \text{CapFilt} CapFilt的说明。其引入了两个模块:一个用于为给定图像生成合成captions的captioner,以及一个从原始web文本和合成文本移除噪音captions的filtercaptionerfilter都使用相同的预训练 MED \text{MED} MED进行初始化,并在 COCO \text{COCO} COCO数据集上单独微调。微调是一个轻量级的过程。

​ 具体来说,captioner是一个图像相关文本的解码器。其使用 LM \text{LM} LM目标函数微调来解码给定图像的文本。给定一个web图像 I w I_w Iwcaptioner生成一个合成的captions T s T_s Tsfilter是一个图像相关文本的编码器。其使用 ITC \text{ITC} ITC ITM \text{ITM} ITM损失函数微调来学习图像和文本是否匹配。filter会移除原始web文本 T w T_w Tw和合成 T s T_s Ts中的噪音文本,如果 ITM \text{ITM} ITM头预测文本与图像不匹配,则该文本被认为是噪音。最后,合并过滤后的image-text对和人工标注的数据形成一个新的数据集,并用于预训练新模型。

四、实验

​ 暂无

你可能感兴趣的:(自然语言处理,自然语言处理,深度学习,多模态,BLIP,CLIP)