资讯动态

多模态大模型的核心范本:深入解读 BLIP 的统一理解与生成架构

发布时间:2026/8/24 11:58:28 来源:尧图企业网站定制
论文标题BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation作者Salesforce Research2022核心思想用一套多模块共享权重的统一架构同时搞定理解与生成两类任务并首次将数据质量问题纳入预训练框架本身通过 CapFilt 机制实现数据的自我净化与自我扩充。本文涉及到的一些BLIP诞生之前的其他模型基础知识可参考我的其他博文有具体介绍。目录1. 诞生背景1.1 现有方法的两个未解问题1.2 BLIP 的回答2. 核心架构多模态混合编解码器MED2.1 整体结构四个模块一套权重2.2 图像编码器视觉特征的提取者2.3 文本编码器对齐任务的承担者ITC2.4 图文交叉编码器理解任务的承担者ITM2.5 图文交叉解码器生成任务的承担者LM3. 预训练策略三任务联合训练3.1 图文对比学习ITC3.2 图文匹配ITM3.3 语言模型任务LM4. CapFilt让模型自己净化数据4.1 问题的本质4.2 CapFilt 的完整流程5. 下游任务微调6. 实验结果7. 总结与延伸1. 诞生背景如果说 VLMo 解决的核心问题是用一个架构做多件事那么 BLIP 在继承这一思路的同时追问了一个更底层的问题我们拿来训练的数据是否足够干净、足够可靠1.1 现有方法的两个未解问题问题一理解与生成依然是两个世界。在 BLIP 之前多模态预训练模型大致分为两类。以 CLIP、ALBEF 为代表的理解型模型擅长图文检索、视觉推理这类判别性任务但它们的架构天然不具备生成能力无法完成图像描述Image Captioning这类需要逐词输出的任务。而以 SimVLM 为代表的生成型模型虽然引入了解码器却在判别性任务上表现平平因为编码阶段的图文交互被生成目标所主导。没有一个模型能真正做到两手都硬。问题二网络爬取的图文数据噪声极大。大规模多模态预训练高度依赖从网络自动爬取的图文对数据如 LAION、CC12M 等。然而这类数据中文本描述与图像内容往往存在严重的语义错位——图是一只猫配文却是电商促销话术图是风景照配文是无关的新闻标题。现有模型对这类噪声数据几乎没有任何过滤机制只能照单全收任由噪声侵蚀模型的对齐质量。1.2 BLIP 的回答BLIP 针对上述两个痛点分别给出了对应的解决方案针对理解与生成的割裂设计了一个包含四个功能模块的统一架构——多模态混合编解码器Multimodal Mixture of Encoder-DecoderMED通过参数共享机制让理解和生成在同一套权重下共存。针对网络数据的噪声提出了 CapFiltCaptioning Filtering机制——让模型自己生成高质量标注再用自己来过滤掉噪声实现数据的自举Bootstrapping。这两个设计共同构成了 BLIP 的完整框架下面我们分别深入拆解。2. 核心架构多模态混合编解码器MEDBLIP 的架构设计既有对前人工作的继承又有自己独到的创新。2.1 整体结构四个模块一套权重如图所示BLIP 的 MED 由四个功能模块组成图像编码器Image Encoder文本编码器Text Encoder图文交叉编码器Image-grounded Text Encoder图文交叉解码器Image-grounded Text Decoder乍看之下四个模块似乎意味着四倍的参数量。但 BLIP 的精妙之处在于右侧三个文本相关模块之间大量共享参数——它们共用同一套自注意力层Self-Attention和前馈网络Feed Forward的权重只在少数地方存在结构差异。这与 VLMo 用专家 FFN区分模态的思路有异曲同工之妙VLMo 的共享发生在注意力层BLIP 的共享则发生在更大粒度的模块级别。三个预训练任务与三个模块一一对应接下来我们逐模块拆解。2.2 图像编码器视觉特征的提取者图像编码器采用标准的 ViT 结构与 CLIP、ALBEF 的处理方式完全一致将输入图像切分成若干 patch经过线性投影和位置编码后送入若干层 Transformer 自注意力层。最终输出的是一系列 patch-level 的视觉特征向量序列作为后续文本模块进行交叉注意力的视觉记忆库。这里没有太多新意但 BLIP 选择了沿用 ViT-B/16 和 ViT-L/16 两种规格为后续与纯文本模块的对接提供了充分的特征维度。2.3 文本编码器对齐任务的承担者ITC文本编码器是一个标准的双向 Transformer以[CLS]开头的 token 序列作为输入。它的结构非常简洁只有双向自注意力Bi Self-Att和前馈网络Feed Forward没有交叉注意力模块。这意味着文本编码器在编码阶段完全不感知图像——它只负责纯文本的语义理解输出的[CLS]特征用于与图像编码器输出的视觉特征做图文对比学习ITC。这一设计延续了 ALBEF 的思路先用轻量的对比学习在特征空间拉近图文表示再用更重的融合模块完成细粒度理解。文本编码器在这里扮演的是 CLIP 里文本塔text tower的角色。2.4 图文交叉编码器理解任务的承担者ITM图文交叉编码器在文本编码器的基础上额外插入了一个交叉注意力层Cross Attention位于双向自注意力和前馈网络之间。这个交叉注意力层的作用是以文本 token 为 Query以图像编码器输出的视觉特征序列为 Key 和 Value让文本的每一个位置都能看见图像的每一个区域从而实现真正意义上的图文深度融合。这与 ViL-BERT 的交叉注意力模块在功能上完全等价但 BLIP 的创新在于它与文本编码器共享了自注意力层和 FFN 的参数——两个模块的差别只是多了一个交叉注意力层其余权重完全绑定。这大幅减少了参数冗余同时也让两个模块的语言理解能力可以相互促进。输入序列的开头换成了[Encode]标志区别于纯文本编码器的[CLS]最终取[Encode]对应的输出特征接二分类头完成图文匹配任务ITM的判别。这里有一个与 ALBEF 一脉相承的细节BLIP 同样采用了难负样本挖掘策略利用 ITC 学到的相似度分布有倾向性地采样那些语义相近却实际不匹配的混淆对作为 ITM 的负样本。VLMo 中也采用了这一策略并将其扩展到了跨 GPU 级别——可以看出难负样本挖掘已经成为这一时期多模态预训练的标配设计。2.5 图文交叉解码器生成任务的承担者LM图文交叉解码器是 BLIP 区别于 ALBEF 和 VLMo 最关键的一个模块也是它能够同时处理生成任务的根本原因。它的结构与图文交叉编码器极为相似同样包含自注意力、交叉注意力和前馈网络三层。但有一个关键差异自注意力层从双向Bi Self-Att替换为因果自注意力Causal Self-Att。所谓因果自注意力即经典的 GPT 式自回归掩码——每个 token 只能看见它前面的 token而不能看见后面的。这一改动使得解码器具备了自左向右逐词生成的能力从而可以完成图像描述Image Captioning等文本生成任务。输入序列的开头换成[Decode]标志交叉注意力层同样接受图像编码器的视觉特征作为 Key/Value以视觉信息为锚点引导文本生成。训练目标是经典的语言模型损失LM Loss即最大化在给定图像条件下生成正确文本序列的概率。同样地解码器的交叉注意力层和前馈网络与编码器侧共享参数只有自注意力层因为掩码机制的不同而独立存在。至此BLIP 的四模块架构完整呈现。我们可以用一句话总结它的设计哲学在一套共享的语言理解骨架上通过注意力掩码和不同的输入标志激活三种截然不同的工作模态——对齐、理解、生成。这与 VLMo 用专家 FFN 切换来激活不同模态的思路有着深刻的相似性区别在于 VLMo 的切换发生在参数层面不同专家拥有独立权重而 BLIP 的切换发生在结构层面相同权重不同的注意力掩码和输入信号。3. 预训练策略三任务联合训练对应三个功能模块BLIP 设计了三个预训练任务在同一批图文数据上同步训练。3.1 图文对比学习ITC由文本编码器和图像编码器承担。给定一批图文对ITC 拉近正样本对匹配的图文在特征空间的距离推开负样本对不匹配的图文。损失函数采用对称的 InfoNCE 损失与 CLIP 的训练目标完全一致。ITC 的主要价值在于提供一个轻量但语义对齐的特征空间这个特征空间随后被 ITM 的难负样本挖掘所利用。3.2 图文匹配ITM由图文交叉编码器承担。这是一个二分类任务——输入一对图文判断是否匹配。难负样本挖掘确保模型不只是学会区分一只猫和一首诗而是能够分辨坐着的猫和站着的猫这类细粒度差异。3.3 语言模型任务LM由图文交叉解码器承担。给定图像以自回归方式生成与图像匹配的文本描述。这个任务是 BLIP 相比 ALBEF 最大的增量——ALBEF 没有解码器因此完全无法完成这类生成任务。三个任务共同训练既保证了特征对齐的质量ITC又强化了细粒度图文理解ITM还赋予了模型语言生成的能力LM。4. CapFilt让模型自己净化数据如果说 MED 架构是 BLIP 在模型侧的创新那么 CapFilt 就是它在数据侧的核心贡献——也是Bootstrapping这个词出现在论文标题中的真正原因。4.1 问题的本质从网络爬取的图文数据如 CC12M、LAION 等规模巨大但质量堪忧。大量的配文与图像内容关联松散甚至完全无关。如果将这些噪声数据直接用于预训练模型学到的图文对齐其实是一种伪对齐——建立在错误标注之上的语义关联。人工标注的高质量数据如 COCO Captions质量极高但体量太小根本撑不起大规模预训练的需求。CapFilt 的核心思路是用少量高质量的人工数据微调模型再让微调后的模型回头处理海量的噪声数据——既生成新的标注又过滤掉不可信的旧标注。4.2 CapFilt 的完整流程如图所示整个流程分为两个并行分支最终汇合成一个更干净的训练集第一步初始预训练。用网络爬取数据含噪声的图文对和人工标注数据高质量图文对的混合集合对 MED 进行初始预训练得到一个基础模型。图中红色代表噪声数据绿色代表高质量数据。第二步派生两个专职模型。Captioner字幕生成器从基础模型的图文交叉解码器出发在人工标注数据上做 LM 任务的微调得到一个专门用于生成图像描述的模型。将网络图像输入 Captioner为每张图生成一条合成标注形成合成图文对。由于不知道生成质量依然有一些生成数据是低质量的。Filter噪声过滤器从基础模型的图文交叉编码器出发在人工标注数据上做 ITC ITM 任务的微调得到一个专门用于判断图文是否匹配的模型。将原始网络配文和合成标注分别与对应图像送入 Filter过滤掉 ITM 分类为不匹配的文本保留高置信度的配对。第三步构建自举数据集重新训练。将过滤后的网络图文对、过滤后的合成图文对以及原始人工标注合并形成一个比初始数据集更干净、信息更丰富的新训练集用于重新预训练最终的 BLIP 模型。下图中作者展示了一些示例的字幕与对应的图片。是直接从网络上爬取的原始字幕是字幕器生成的字幕。图4中的红色文本是 Filter 删除的文本绿色文本是 Filter 保留下来的文本。可以看出几张图片里面红色的文本不是不好只是没有绿色的文本对图片的描述更加贴切。这个结果说明了 CapFilt 方法确实是能够提升图文对数据集的质量。这个流程的精妙之处在于它的自洽性Captioner 和 Filter 都来自同一个预训练模型生成与过滤形成了一个闭环——模型用自己的理解能力去改善自己的训练数据再用更好的数据训练出更强的模型。这正是Bootstrapping自举一词的精确含义。5. 下游任务微调得益于 MED 架构兼顾理解与生成的设计BLIP 在下游任务的覆盖范围上远超此前的大多数模型。理解类任务——图文检索Image-Text Retrieval、视觉问答VQA、自然语言视觉推理NLVR2直接利用 ITC 和 ITM 的输出特征微调图像编码器 文本编码器 / 图文交叉编码器即可。生成类任务——图像描述Image Captioning、视觉对话Visual Dialog利用图文交叉解码器在下游数据上继续做语言模型微调。这里有一个细节值得关注在图文检索任务中BLIP 同样采用了 VLMo 的两阶段检索策略——先用文本编码器和图像编码器做轻量的特征检索召回 Top-K 候选再用图文交叉编码器对这 K 个候选做精细的 ITM 重排序。这既保留了检索的速度又提升了最终的精度是业界在这类任务上已经相对成熟的工程范式。6. 实验结果如下图所示作者比较了在不同数据集上预训练的模型是一个 CapFilt 的消融实验结果。Retrieval 代表检索任务的结果Caption 代表生成任务的结果。当使用 14M 的数据集设置时联合使用字幕器 Captioner 和过滤器 Filter 可以观察到性能改进而且它们的效果相互互补证明了 CapFilt 方法能够从嘈杂的原始数据中提炼出有用的数据。当使用更大的数据集 129M 的设置或者更大的模型 ViT-L 时CapFilt 可以进一步提高性能这验证了它在数据大小和模型大小方面的可扩展性。而且仅仅增加字幕器和过滤器的模型尺寸时也可以提高性能。7. 总结回顾 BLIP 的整体设计它的贡献可以从两个维度来理解在架构层面MED 完成了多模态模型从只能理解到又能理解又能生成的跨越。共享参数 不同注意力掩码的设计用极其优雅的方式将三种功能统一在一套权重之下继承并超越了 ALBEF 和 VLMo 的统一架构思路。在数据层面CapFilt 第一次将数据质量作为一等公民纳入预训练框架的设计中开创了多模态数据自举的新范式。这一思路在此后的 BLIP-2、InstructBLIP 等工作中得到了持续延伸。如果说 VLMo 的核心贡献是解决了一个架构多种姿态的问题那么 BLIP 的核心贡献则是同时解决了一套架构和一套数据两个维度的问题。而 BLIP 并没有就此结束。它的继任者BLIP-2将进一步追问既然视觉编码器和语言模型都已经各自足够强大我们是否还需要从头预训练一个多模态模型还是说只需要一个轻量的桥梁模块把冻结的视觉编码器和冻结的大语言模型连接起来就足以激发出强大的多模态能力

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价