资讯动态

视觉语言预训练全解:从数据架构到工程实践

发布时间:2026/10/26 13:47:56 来源:尧图企业网站定制
最近两个月我前后把微信AI团队那篇《视觉语言预训练基础、最新进展和未来趋势》读了不下两遍每次划重点都会发现新的东西。先别管“102页”这个数字吓不吓人这类综述其实是多模态预训练领域少见的“全链路地图”从数据怎么来、模型怎么设计、任务怎么定到下游怎么评测、未来还有哪些路没走通把视觉语言预训练VLP的完整框架摊开在你面前。如果你正准备入局多模态方向或者刚跑通一个图文检索项目却不知道怎么往深处迭代这篇综述值得读而且值得带着问题读。我写这篇博客就是想帮大家把里面的骨架抽出来再结合我自己踩过的一些坑做一个便于消化的转述。1. 为什么会有“视觉语言预训练”这个词以及这份综述好在哪先抛一个很反直觉的事实视觉语言预训练这个方向并不是因为“多模态很火”才火起来的。它火起来的底层原因是单模态预训练已经走到了“数据故事”的尽头——文本数据的互联网存量接近天花板图像数据的标注成本又一直降不下来而**图文对image-text pair**是互联网上唯一一种海量存在、天然带语义对应关系的免费标注。所谓VLP就是在这种图文对数据上让模型同时学习“看懂图像”和“理解文本”最终得到一个通用的视觉语言底座。这个底座可以在下游任务上做微调也能直接做零样本推理。这份102页综述的内涵比我预想的大得多。它没有只讲某个模型怎么工作而是把VLP拆成四层来看数据层哪些数据能用来预训练噪声如何处理规模和数据质量之间怎么取舍模型层单流、双流、生成式这些架构各自的适用边界任务层对比学习、掩码建模、图文匹配、条件生成这些预训练任务背后的设计逻辑评测与应用层VQA、图文检索、图像描述等下游任务到底在测模型的什么能力评测本身又有什么局限。这种拆法非常有助于建立系统认知。我见过不少同学拿了一个开源模型就开始调参结果连模型在预训练阶段见过什么数据都不知道下游bad case出现时完全没法归因。读了这份综述之后你会发现自己突然能看懂多模态大模型“为什么这样做”了。另外我想特别夸一下它的文献脉络。虽然102页听上去厚重但它不是流水账式罗列几百篇论文而是按照“从判别式到生成式、从结构化理解到自由生成、从单任务到多任务统一”的演化主线来讲的。如果你是个新入行的同学照着这条主线去追踪经典模型比从一个一个Arxiv页面刷下去要高效得多。2. 四个地基数据、骨架、任务、训练策略VLP模型无论多大本质上都是在四件事上做文章数据、骨架、任务、训练策略。很多人只看模型结构其实后面两者才是决定效果上限的关键。2.1 图文对数据是最大的瓶颈文本预训练有万亿token图像预训练有几亿张图但可用的图文对数据远没有大家想象中那么多。截至这份综述撰写的时间点学术界常用的公开数据集里像SBU Captions大概只有百万级Conceptual CaptionsCC也只有三百万左右规模稍大的CC12M是1200万。直到后来LAION这类互联网级数据集出现图文对规模才冲到几十亿。这个数据量级意味着什么对比一下GPT系列的预训练语料都是以千亿token计算的CLIP在训练时用掉4亿图文对已经算“奢侈”。VLP模型想啃下更多数据只能靠自研数据管道。我在实际项目中最大的感受是数据清洗的时间往往比调模型结构的时间还长。一份来自网页的图文对可能图里有说明文字、有水印、有低分辨率缩略图文本可能是随机抓取的导航栏文字这些噪声必须靠规则清洗、指纹去重、CLIP分数过滤等手段先处理一遍。综述里也强调了一个观点不要昧着良心堆数据量数据质量不好的情况下增大规模反而会让模型学到更多偏见和噪声。尤其是涉及敏感内容、重复图像和图文不对齐的样本时在预训练阶段做一次负样本过滤比在下游阶段做无数次调参都有效。2.2 模型骨架视觉塔、文本塔、融合层VLP模型骨架可以朴素地理解为三个部件视觉编码器把图像变成语义向量、文本编码器把文本变成语义向量、跨模态融合模块把两者信息交互起来。早期做法非常像搭积木视觉塔用Faster R-CNN从图像里抽取“区域特征”文本塔用BERT抽取词特征然后再接一个跨模态Transformer去学习区域和文本之间的对齐。这种设计很直观但问题也很明显——Faster R-CNN是目标检测模型抽到的特征偏“物体”对颜色、材质、空间关系这些细粒度语义无能为力而且推理速度很慢。后续模型逐渐把视觉塔从“检测器”换成“Vision TransformerViT”直接用patch级别的特征做输入。这是VLP能上大模型的一个关键前提检测器并不可学习地预训练而ViT可以用纯粹的自监督方式和大规模图文对齐一起优化。2.3 预训练任务别只看对比学习很多人一提到视觉语言预训练就想到CLIP那种“图文对比学习”拿image/text相似度做目标。实际上对比学习只是预训练任务家族里的一员。综述里系统整理了三大类任务对齐类任务图文对比学习ITC、图文匹配ITM。核心是拉近配对图文特征推远负样本特征。适合做检索、零样本分类。理解类任务掩码语言建模MLM、掩码图像建模MIM。让模型根据另一模态的提示还原被遮住的文本或图像片段本质是在学“跨模态推理”。适合做VQA、推理类任务。生成类任务条件语言建模LM、图像生成。给定图像生成描述文本或者给定文本生成图像。这类任务决定了模型能不能真正“说人话”。一个高质量VLP模型不是只押注某一个任务而是把多个任务混合在一起预训练。比如面世较早的UNITER用的是MLMITMALBEF和BLIP则把ITC也加了进来。多任务混合的本质是让模型同一个底座同时具备检索、理解和生成的能力而不是只在某一个评测集上刷分。2.4 训练策略大体上的两个阶段训练策略上综述里一个很容易被忽略但特别重要的点是VLP很少直接从随机初始化跑到最终状态而是普遍采用“先用单模态预训练再跨模态对齐”的路线。具体来讲第一阶段的文本塔直接继承BERT/LLM的权重视觉塔继承CLIP/ViT的权重这是常规操作。这么做的原因很实际从头训练一个多模态模型需要同时处理两种模态的数据分布收敛极慢且不稳定。先用成熟单模态权重初始化等于让模型先掌握了“看懂中文”和“看懂图像”的基本功预训练阶段只需要学“图文如何对应”这一件事。第二阶段再引入大规模图文对做跨模态训练此时可以分几种策略全量微调所有参数一起更新效果好但是贵冻结部分塔冻住视觉塔或文本塔只训练融合层速度快很多参数高效微调只插入Adapter、LoRA类模块保留底座通用性。我在实践中通常会这样取舍如果资源充裕且下游任务比较专一就全量微调如果要做一个通用底座、还要频繁适配不同下游冻结塔参数高效微调是更稳妥的做法。这个经验放在今天多模态大模型遍地走的语境下依然适用。3. 单流、双流、生成式VLP架构是怎么演进到今天的如果你去翻不同时期的VLP模型会发现大家争来争去本质是在回答一个问题图像和文本的token应该什么时候混在一起早融合和晚融合各有各的得失没有标准答案。3.1 双流让CV和NLP各干各的双流架构two-stream/two-tower的代表是CLIP、ALIGN。它把视觉编码器和文本编码器完全分开各自的feature在最后一层才对齐。这种架构的优势是推理高效图文表征可以预计算并缓存起来做检索时不用实时交叉两次工程上非常友好。但它的短板也同样明显双塔只在编码末端用对比学习拉近距离缺乏细粒度的跨模态注意力交互面对VQA、推理这些需要“揪出图中某一块区域并和文本逐词对齐”的任务表现往往不如单流。CLIP做零样本分类很强但你让它数一数图里有几只猫它就经常犯傻这也是双塔的天花板所在。3.2 单流把特征尽早混合单流架构的代表是UNITER、ViLT。这类模型把所有视觉token和文本token拼成一个长序列扔进同一个Transformer里做self-attention。好处是图像区域之间、文本词之间、图文跨模态之间都能双向交互融合得非常充分。代价呢序列长度直线上升。一张224×224的图像切出196个patch再加几十个文本tokenself-attention的矩阵就直接爆炸。所以单流模型普遍对高分辨率不友好VQA这类需要细看图像的任务往往依赖更高分辨率这就很尴尬。3.3 生成式模型把一切变成sequence to sequence再往后学界逐渐发现“判别式”和“生成式”的界限其实是人为制造的。于是一批模型开始把所有任务统一成“序列到序列”生成代表是SimVLM、OFA、Unified-IO。这套思路的精神是你要做图文检索好那就让模型生成一个“候选项编号”。要做VQA让模型直接生成答案文本。要做图像描述让模型生成一句话。一切任务都被翻译成“根据输入模态tokens预测输出tokens”。好处是框架极其统一一个模型可以覆盖十几种任务而且能用语言模型的生成能力去处理开放问题。我实际用下来觉得生成式模型的最大红利是**“任务边界模糊化”**。以前做VQA要设计分类头做caption要设计解码器现在不用了所有下游任务都被模板化成“问一句答一句”。这也是后来大规模多模态对话模型能跑通的底层逻辑。3.4 我的架构选型建议三类架构不是替代关系而是各占山头。我做选型时会按这个标准来判断架构类型代表模型强项弱项适合场景双流编码器CLIP, ALIGN检索效率高零样本分类强训练稳定缺细粒度跨模态推理图文检索、特征抽取、分类单流编码器UNITER, ViLT跨模态融合充分下游微调上限高序列长、吃显存、推理慢VQA、视觉推理、细粒度理解生成式Seq2SeqSimVLM, OFA, Unified-IO多任务统一支持开放式生成训练成本高需要更强的解码能力多任务底座、图像描述、对话、生成网上很多争论“单流比双流好”或“双流就该被淘汰”其实离开场景谈优劣都是耍流氓。你如果只是做一个商品图文搜索双流足够你要是想做一个能踩图片细节的智能助手单流或生成式才是正路。4. 最近几年的关键进展数据工程、噪声鲁棒和“冻结适配”综述的“最新进展”部分延续了从2021年到2023年这段时间多模态领域最关键的几条线。我觉得其中有三个进展无论你是玩家还是研究者都值得反复咀嚼。4.1 规模上去了问题也来了第一个进展是图文对数据规模从百万级跃升到数十亿级。LAION这类数据集把训练数据总量一下子拉高两个数量级VLP模型的性能也出现明显跃升。但规模不是免费午餐随之而来的是一堆新问题重复和近似重复同一张图在互联网上出现几十次训练时会反复强化导致模型对某些样本过拟合图文不同步图片是表情包配字截图文本却是网页页面的随机标题这种样本会把模型教坏语言分布偏斜英文语料占绝大多数中文等小语种的图文对齐质量远差于英文稍不留神就做出一个“英文专精”的模型。综述强调大规模预训练时代数据工程本身已经变成一个研究课题。我自己在处理千万级图文数据时会同时跑几条清洗流程去重感知哈希CLIP特征聚类、质量过滤分辨率、清晰度、人脸比例、文本对齐度过滤用一个小CLIP模型打分。这听起来不像科研但效果往往比换模型结构大得多。4.2 掩码图像建模和统一token第二个进展来自视觉侧的预训练方法变革。经典的MAE、BEiT这类掩码图像建模教会了模型“看到一部分像素脑补出其余部分”这种能力迁移到图文任务上让模型不再单纯依赖文本线索去看图而是真正理解图像的内在结构。综述里很聪明的一个总结是视觉语言预训练的核心正在从“跨模态对齐”走向“跨模态推理”。仅仅让图文表征相似已经不够了模型必须学会在缺失信息时做出合理推断。掩码建模恰好提供了这种训练信号。再往后BEiT-3、VLMO这类模型直接把图像和文本都切成统一长度的离散token放进同一个Transformer里做掩码预测。视觉和语言在token层面完全打通预训练效率显著提升。这个思想也为后来的多模态大模型铺了路。当视觉侧能力和语言侧能力都变强模型才不是“一个会认图的文本模型”而是真正意义上的统一多模态模型。4.3 冻结大模型BLIP-2和Flamingo的玩法第三个进展是我个人最感兴趣的冻结预训练模型轻量适配模块。BLIP-2通过一个Q-Former一组可学习的query把冻结的视觉编码器特征“翻译”给冻结的LLMFlamingo则往LLM中间插入门控交叉注意力层让语言模型“边读文本边看图”。这种做法精妙在哪里它把预训练的成本彻底分流了视觉编码器用CLIP/ViT的已有权重冻结语言模型用ChatGLM/LLaMA这类大模型冻结只有中间的少量适配模块参与训练成本骤降几个量级。我见过很多小团队用这招在单卡或者双卡显存下就训出了能看图的对话模型。你不再需要几十亿图文对从头训练只需要适量高质量指令数据就能打通视觉和语言。这个思路可以说直接把多模态的门槛拉低了。当然它的局限也很明显冻结的视觉塔可能残留下游并不关心的视觉偏见语言模型也可能说胡话。综述里对此提了一个谨慎的建议核心底座尽量选能力更强的模型适配模块要设计得更能保留底座的通用能力别把适配层做成了瓶颈。4.4 从对比对齐到多模态对话最后一个进展虽然综述里涉及不多但我认为它是VLP演化的自然顶点多模态对话模型。以LLaVA、InstructBLIP为代表它们本质上是在生成式VLP底座上用“视觉指令数据”做微调让模型听懂“你看看这张图告诉我哪里有异常”这类自然语言指令。这条路的出现把VLP从“预训练-微调”范式推向“预训练-指令微调”范式。模型不再针对单一任务训练而是学会理解指令本身。结果就是你给它一个没见过的任务描述它也能凭预训练阶段积累的视觉语言知识去尝试执行。我在做实际业务时感受到这种模型在多轮交互场景里的可用性远超以前那种“固定任务格式”的模型。5. 复现VLP时最容易踩的坑数据、评估和细节读综述是一回事动手复现又是另一回事。这一节我不完全转述综述内容而是把自己在预训练和微调实践中踩出来的经验揉进去。说得直接一点很多VLP项目失败不是模型结构选错而是数据、评估和训练细节上犯了软错误。5.1 数据清洗远比模型结构重要预训练数据里最大的坑是“你以为洗干净了其实没有”。我做清洗时基本会按这条链路来抽帧/去模糊/去低分辨率用感知哈希和CLIP特征做去重过滤NSFW、水印、截图、文字密集图用一个小型CLIP模型算每个图文对的相似度过滤低于阈值的脏样本最后人工抽检5000条统计剩余噪声比例再决定是否提高阈值。这个流程跑下来往往能砍掉40%-60%的数据量。很多人舍不得删总觉得“数据多是好的”但实践证明脏样本多到一定比例后模型学到的就不是通用语义而是数据噪声的模式。宁可要3000万干净样本不要1亿脏样本。5.2 评测基准有自己的“审美”评测是第二个大坑。VLP领域的常用基准VQAv2评估细粒度视觉问答COCO Caption评估生成能力Flickr30K/COCO评估检索性能NLVR2评估推理能力。但是——VQAv2里的问题往往不需要真正“看图”就能回答语言先验太强COCO Caption的评估指标CIDEr对句型重复很敏感模型学会模板套话就能拿高分图文检索里如果用in-batch负样本batch size不同指标波动很大。综述里也提醒**模型在单一基准上分数高不代表通用能力强。**我后来养成了一个习惯至少要挑两到三个语义跨度足够大的下游任务做交叉验证再加一个人工构造的“对抗样本集”专门测试模型对真实世界中那些“绕弯子”情况的理解。否则你永远不知道模型的真实水平。5.3 训练细节决定成败训练过程中的坑更多我列几个最典型、影响最大的学习率调度VLP预训练通常用warmup线性衰减warmup步数占全流程的1%-5%比较稳。学习率设太大会直接让loss震荡设太小又训不动尤其多模态任务loss比较多混合比例要慢慢调到平衡。冻结策略如果你在已有底座上加融合模块前几个epoch尽量冻结单模态塔的权重让适配模块先收敛。一上来就全量更新很容易把已经预训练好的视觉/文本语义搞坏。负样本选择ITM任务需要构造“图文不匹配”的负样本最简单的做法是随机替换文本或图像但这很容易给出模型一眼识破的sample。更好的做法是“hard negative mining”用语义相近但不对齐的图文对逼模型捕捉细粒度区别。Batch size对比学习要吃大batch。CLIP原文用3.2万batch size小显卡跑不了那么大时会掉点严重。这时候可以用gradient accumulation把有效batch size撑上去再配合momentum distillation来缓解小batch带来的不稳。我在做小规模预训练时最深刻的教训是多任务loss不能简单地相加。ITC、ITM、MLM、LM这四个目标的梯度尺度差异很大直接相加会被某个大头主导。需要为每个loss设权重并且观察各自loss的收敛曲线来动态调整。综述里没有详细给配方但这个调整过程往往是效果提升最大的环节。6. 从综述里看到的五个未来方向综述的“未来趋势”部分其实写得比较克制没有狂吹某个具体技术而是理性地点了几个开放问题。结合后来的发展看这五个方向大概率是VLP接下来十年的主线。6.1 从分任务走向统一接口第一个趋势是多任务统一。前面提到的生成式模型已经验证了“所有任务都是seq2seq”的可行性未来一定会有更多模型把视觉、语言、音频甚至结构化数据统统转成统一的离散token或连续特征用同一个底座解决。我自己的感受是统一接口最大的价值不在刷榜而在工程效率。一个模型维护、多个任务复用比给每个任务各训一个模型要经济太多了。6.2 视觉指令微调与人机对齐第二个趋势是从“任务准确率”转向“人机对齐”。预训练模型的目标函数是下一token预测或对比损失但你希望它输出的答案要符合用户偏好、说话语气、遵循指令。这需要引入指令微调Instruction Tuning和人类反馈强化学习RLHF。落到VLP上就是让模型学会“看图并回答问题”时不只追求字面正确还要知道用户想知道什么、回答要多简洁、哪些细节值得强调。我在做视觉对话类产品时发现同一个底座做了视觉指令微调之后用户体验的提升比换一个大10倍的底座还明显。6.3 更丰富的时间、音频和3D模态第三真正的多模态不应该局限于“静态图片文本”。视频、音频、3D点云这些时间序列和空间结构数据会给模型带来更强的物理世界理解能力。视频里有动作的连贯性音频里有情绪和节奏3D数据里有空间拓扑关系。综述虽然没有给出成熟方案但它明确指出了目前的VLP“过于二维静态”这个短板。视频VLP、音频视频文本三模态联合预训练是接下来很大的一片增量空间。6.4 可控性、幻觉与评测缺口第四个方向是模型可信度。视觉语言模型最让人头疼的是它会一本正经地“胡说八道”——图里明明没有的东西它能给你描述得头头是道这就是模态幻觉。综述对这种生成式模型的风险着墨不少还提到需要更完备的评测体系来检验模型的跨模态一致性。我的实践经验是幻觉问题不能指望微调完全解决。更有效的做法是在训练数据里加入“无法从图中确定”这类拒绝回答样本推理阶段接入外部知识或工具让模型不硬答给模型的回答附上“置信度”或“依据来源”降低对用户的误导风险。6.5 预训练重构给视觉一个更大的“语境”第五个趋势稍微抽象一点VLP正在从“借语言理解视觉”走向“用多模态语料重构视觉表示”。像BEiT-3、CoCa这类模型视觉编码器已经不再只是背CLIP/MoCo的现成结果而是在跨模态预测任务中直接学习视觉token的语义关系。这意味着未来视觉预训练可能不再需要ImageNet时代的监督信号图文语料本身就是足够的监督源。这件事如果做成了视觉表示学习会彻底摆脱人工标注的桎梏。7. 写在最后这类综述要怎么读读完这一百多页我最想分享的不是某个具体模型的参数而是一种阅读方法。技术综述动辄上百页逐字读完不现实建议分三遍第一遍看骨架先看引言、分类体系表和未来展望搞清楚作者对技术演进的主线划分第二遍看对照挑选你最关心的两个模型比如单流和双流各一个对照阅读它们的结构图、损失函数和评测表格第三遍看数据重点阅读数据工程和评测细节这一部分虽然最枯燥却往往隐藏着论文里的真正增量。如果只看一份资料就足够获得系统认知那一定是在白嫖前人的时间。视觉语言预训练已经从一个学术概念长成了新一轮AI应用的基础设施无论你以后是做搜索、做内容理解、做智能交互绕不开这套逻辑。希望这篇梳理能和你手头那些跑通的模型、那些报错的日志、那些迟迟不下降的loss串成一张完整的图。至少对我自己来说读完没有“追不完了”的焦虑反而有一种“原来地图长这样”的踏实感。

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

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

免费获取报价 →
↑