论文地址: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
预训练在各种多模态下游任务中取得了巨大的成功。然而,现有的方法存在着两个限制:
模型视角
许多模型都采用基于编码器的架构或者编码器-解码器的架构。然而,基于编码器的模型并不能直接用于文本生成任务,而编码器-解码器架构并没有成功的应用于image-text
检索任务。
数据视角
许多的state-of-the-art
方法(例如:CLIP
,ALBEF
,SimVLM
)都在从网络上收集的image-text对
数据上进行预训练。尽管通过扩大数据集的规模获得了性能增益,但本文也展示了带有噪音的web文本对于vision-language
学习来说是次优解。
为此,作者提出了BLIP: Bootstrapping Language Image Pre-training for unified vision-language understanding and generation
。BLIP
是一个新的VLP(Vision-Language Pre-training)
框架,其能够更加广泛的支持下游的任务。其从模型和数据视角做出了两个贡献
vision-language
目标函数进行预训练:image-text
对比学习、image-text
匹配和图像条件语言建模。image-text对
中学习的新数据集boostrapping
方法。微调预训练 MED \text{MED} MED为两个模块:一个用于为给定图像生成合成captions的captioner
,以及一个从原始web文本和合成文本移除噪音captions的filter
。 作者进行了大量的实验和分析,做出了如下的贡献:
captioner
和filter
一起工作能够显著改善各种下游任务。此外,还发现更多样的captions会带来更大的收益。BLIP
在各种vision-language
任务上都实现了state-of-the-art,包括image-text
检索、image captioning
、视觉问答、视觉推理和视觉对话。直接将本文的方法迁移至两个video-language
任务:text-to-video
检索和videoQA
,实现了zero-shot
的state-of-the-art表现。 视觉语言预训练( 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)。无论是基于编码器的模型或者是基于编码器-解码器的模型在两种类型的任务上都不是很好,而单个统一的编码器-解码器限制了模型的能力。本文提出的多模态混合编码器-解码器为下游任务提供了更多的灵活性和更好的表现。
知识整理 KD \text{KD} KD的目标是,通过从教师模型中蒸馏知识来改善学生模型的表现。自蒸馏是知识整理中的特例,其学生和教师的尺寸相当。知识蒸馏在图像分类和 VLP \text{VLP} VLP上都证明了有效性。不同于现有知识蒸馏方法,简单的强制学生模型的类别预测与教师保持一致,本文提出的 CapFilt \text{CapFilt} CapFilt可以看作是在 VLP \text{VLP} VLP上下文中更高效的执行知识蒸馏。captioner
通过语义丰富的合成captions来蒸馏知识,filter
通过移除噪音captions来蒸馏知识。
数据增强 (DA) \text{(DA)} (DA)已经被广泛的应用于计算机视觉,但是数据增强对于语言任务来说并不是很直接。最近,生成语言模型被用于各种 NLP \text{NLP} NLP任务的合成样本。不同于这些专注在低资源语言任务的方法,本文的方法证明了在大规模 VLP \text{VLP} VLP上合成captions的优势。
这里使用视觉 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被用于表示结尾。
在预训练过程中联合优化三个目标函数,其中两个是用于理解的目标函数和一个用于生成的目标函数。对于每个image-text对
,仅需要在计算量较大的视觉 Transformer \text{Transformer} Transformer上前向传播1次,并且在文本 Transformer \text{Transformer} Transformer前向传播3次,采用不同的函数计算下列三种损失函数:
该损失函数会应用在单模态的编码器。它的目标是,通过鼓励正的image-text
样本对具有相似的表示而负样本则相反,从而对齐视觉 Transformer \text{Transformer} Transformer和文本 Transformer \text{Transformer} Transformer的特征空间。该损失函数已经被证明了改善视觉和语言理解的能力。这里的 ITC \text{ITC} ITC同模型 ALBEF \text{ALBEF} ALBEF,一个动量编码器被用来产生特征,从动量编码器中创建的软标签来作为训练目标。
该损失函数会应用在图像相关文本的编码器。它的目标是,通过捕获图像和语言的细粒度对齐来学习image-text
多模态表示。 ITM \text{ITM} ITM是一个二分类任务,模型用一个 ITM \text{ITM} ITM头来预测给定的image-text
对是匹配或者不匹配。为了能够发现信息量更加丰富的负样本,采用了一种难负样本挖掘策略,即batch
中具有较高对比相似度更有可能被选择来计算损失函数。
该损失函数会应用在图像相关文本的解码器,其目标是对于给定的图像生成文本描述。它会优化一个交叉熵损失函数,其用以自回归的方式来最大化文本的似然来训练模型。这里应用一个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函数相似。因此,共享这些层能够改善训练效率并收益于多任务学习。
由于高昂的标注成本,现有的人类标注的高质量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的filter
。captioner
和filter
都使用相同的预训练 MED \text{MED} MED进行初始化,并在 COCO \text{COCO} COCO数据集上单独微调。微调是一个轻量级的过程。
具体来说,captioner
是一个图像相关文本的解码器。其使用 LM \text{LM} LM目标函数微调来解码给定图像的文本。给定一个web图像 I w I_w Iw,captioner
生成一个合成的captions T s T_s Ts。filter
是一个图像相关文本的编码器。其使用 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对
和人工标注的数据形成一个新的数据集,并用于预训练新模型。
暂无