☰
视觉语言预训练全解:从数据架构到工程实践
2026/10/26 13:47:54 网站建设 项目流程

最近两个月我前后把微信AI团队那篇《视觉语言预训练:基础、最新进展和未来趋势》读了不下两遍,每次划重点都会发现新的东西。先别管“102页”这个数字吓不吓人,这类综述其实是多模态预训练领域少见的“全链路地图”:从数据怎么来、模型怎么设计、任务怎么定,到下游怎么评测、未来还有哪些路没走通,把视觉语言预训练(VLP)的完整框架摊开在你面前。

如果你正准备入局多模态方向,或者刚跑通一个图文检索项目却不知道怎么往深处迭代,这篇综述值得读,而且值得带着问题读。我写这篇博客,就是想帮大家把里面的骨架抽出来,再结合我自己踩过的一些坑,做一个便于消化的转述。

1. 为什么会有“视觉语言预训练”这个词,以及这份综述好在哪

先抛一个很反直觉的事实:视觉语言预训练这个方向,并不是因为“多模态很火”才火起来的。它火起来的底层原因是,单模态预训练已经走到了“数据故事”的尽头——文本数据的互联网存量接近天花板,图像数据的标注成本又一直降不下来,而**图文对(image-text pair)**是互联网上唯一一种海量存在、天然带语义对应关系的免费标注。

所谓VLP,就是在这种图文对数据上,让模型同时学习“看懂图像”和“理解文本”,最终得到一个通用的视觉语言底座。这个底座可以在下游任务上做微调,也能直接做零样本推理。

这份102页综述的内涵比我预想的大得多。它没有只讲某个模型怎么工作,而是把VLP拆成四层来看:

  • 数据层:哪些数据能用来预训练,噪声如何处理,规模和数据质量之间怎么取舍;
  • 模型层:单流、双流、生成式这些架构各自的适用边界;
  • 任务层:对比学习、掩码建模、图文匹配、条件生成这些预训练任务背后的设计逻辑;
  • 评测与应用层:VQA、图文检索、图像描述等下游任务到底在测模型的什么能力,评测本身又有什么局限。

这种拆法非常有助于建立系统认知。我见过不少同学拿了一个开源模型就开始调参,结果连模型在预训练阶段见过什么数据都不知道,下游bad case出现时完全没法归因。读了这份综述之后,你会发现自己突然能看懂多模态大模型“为什么这样做”了。

另外我想特别夸一下它的文献脉络。虽然102页听上去厚重,但它不是流水账式罗列几百篇论文,而是按照“从判别式到生成式、从结构化理解到自由生成、从单任务到多任务统一”的演化主线来讲的。如果你是个新入行的同学,照着这条主线去追踪经典模型,比从一个一个Arxiv页面刷下去要高效得多。

2. 四个地基:数据、骨架、任务、训练策略

VLP模型无论多大,本质上都是在四件事上做文章:数据、骨架、任务、训练策略。很多人只看模型结构,其实后面两者才是决定效果上限的关键。

2.1 图文对数据是最大的瓶颈

文本预训练有万亿token,图像预训练有几亿张图,但可用的图文对数据远没有大家想象中那么多。截至这份综述撰写的时间点,学术界常用的公开数据集里,像SBU Captions大概只有百万级,Conceptual Captions(CC)也只有三百万左右,规模稍大的CC12M是1200万。直到后来LAION这类互联网级数据集出现,图文对规模才冲到几十亿。

这个数据量级意味着什么?对比一下,GPT系列的预训练语料都是以千亿token计算的,CLIP在训练时用掉4亿图文对已经算“奢侈”。VLP模型想啃下更多数据,只能靠自研数据管道。我在实际项目中最大的感受是:数据清洗的时间往往比调模型结构的时间还长。一份来自网页的图文对,可能图里有说明文字、有水印、有低分辨率缩略图,文本可能是随机抓取的导航栏文字,这些噪声必须靠规则清洗、指纹去重、CLIP分数过滤等手段先处理一遍。

综述里也强调了一个观点:不要昧着良心堆数据量,数据质量不好的情况下,增大规模反而会让模型学到更多偏见和噪声。尤其是涉及敏感内容、重复图像和图文不对齐的样本时,在预训练阶段做一次负样本过滤,比在下游阶段做无数次调参都有效。

2.2 模型骨架:视觉塔、文本塔、融合层

VLP模型骨架可以朴素地理解为三个部件:视觉编码器(把图像变成语义向量)、文本编码器(把文本变成语义向量)、跨模态融合模块(把两者信息交互起来)。

早期做法非常像搭积木:视觉塔用Faster R-CNN从图像里抽取“区域特征”,文本塔用BERT抽取词特征,然后再接一个跨模态Transformer去学习区域和文本之间的对齐。这种设计很直观,但问题也很明显——Faster R-CNN是目标检测模型,抽到的特征偏“物体”,对颜色、材质、空间关系这些细粒度语义无能为力,而且推理速度很慢。

后续模型逐渐把视觉塔从“检测器”换成“Vision Transformer(ViT)”,直接用patch级别的特征做输入。这是VLP能上大模型的一个关键前提:检测器并不可学习地预训练,而ViT可以用纯粹的自监督方式和大规模图文对齐一起优化。

2.3 预训练任务:别只看对比学习

很多人一提到视觉语言预训练就想到CLIP那种“图文对比学习”,拿image/text相似度做目标。实际上,对比学习只是预训练任务家族里的一员。综述里系统整理了三大类任务:

  • 对齐类任务:图文对比学习(ITC)、图文匹配(ITM)。核心是拉近配对图文特征,推远负样本特征。适合做检索、零样本分类。
  • 理解类任务:掩码语言建模(MLM)、掩码图像建模(MIM)。让模型根据另一模态的提示还原被遮住的文本或图像片段,本质是在学“跨模态推理”。适合做VQA、推理类任务。
  • 生成类任务:条件语言建模(LM)、图像生成。给定图像生成描述文本,或者给定文本生成图像。这类任务决定了模型能不能真正“说人话”。

一个高质量VLP模型不是只押注某一个任务,而是把多个任务混合在一起预训练。比如面世较早的UNITER用的是MLM+ITM,ALBEF和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,再加几十个文本token,self-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)把冻结的视觉编码器特征“翻译”给冻结的LLM,Flamingo则往LLM中间插入门控交叉注意力层,让语言模型“边读文本边看图”。

这种做法精妙在哪里?它把预训练的成本彻底分流了:

  • 视觉编码器用CLIP/ViT的已有权重,冻结;
  • 语言模型用ChatGLM/LLaMA这类大模型,冻结;
  • 只有中间的少量适配模块参与训练,成本骤降几个量级。

我见过很多小团队用这招在单卡或者双卡显存下,就训出了能看图的对话模型。你不再需要几十亿图文对从头训练,只需要适量高质量指令数据,就能打通视觉和语言。这个思路可以说直接把多模态的门槛拉低了。

当然,它的局限也很明显:冻结的视觉塔可能残留下游并不关心的视觉偏见,语言模型也可能说胡话。综述里对此提了一个谨慎的建议:核心底座尽量选能力更强的模型,适配模块要设计得更能保留底座的通用能力,别把适配层做成了瓶颈。

4.4 从对比对齐到多模态对话

最后一个进展,虽然综述里涉及不多,但我认为它是VLP演化的自然顶点:多模态对话模型。以LLaVA、InstructBLIP为代表,它们本质上是在生成式VLP底座上,用“视觉指令数据”做微调,让模型听懂“你看看这张图,告诉我哪里有异常”这类自然语言指令。

这条路的出现,把VLP从“预训练-微调”范式推向“预训练-指令微调”范式。模型不再针对单一任务训练,而是学会理解指令本身。结果就是,你给它一个没见过的任务描述,它也能凭预训练阶段积累的视觉语言知识去尝试执行。我在做实际业务时感受到,这种模型在多轮交互场景里的可用性,远超以前那种“固定任务格式”的模型。

5. 复现VLP时最容易踩的坑:数据、评估和细节

读综述是一回事,动手复现又是另一回事。这一节我不完全转述综述内容,而是把自己在预训练和微调实践中踩出来的经验揉进去。说得直接一点:很多VLP项目失败,不是模型结构选错,而是数据、评估和训练细节上犯了软错误。

5.1 数据清洗远比模型结构重要

预训练数据里最大的坑是“你以为洗干净了,其实没有”。我做清洗时基本会按这条链路来:

  1. 抽帧/去模糊/去低分辨率;
  2. 用感知哈希和CLIP特征做去重;
  3. 过滤NSFW、水印、截图、文字密集图;
  4. 用一个小型CLIP模型算每个图文对的相似度,过滤低于阈值的脏样本;
  5. 最后人工抽检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串成一张完整的图。至少对我自己来说,读完没有“追不完了”的焦虑,反而有一种“原来地图长这样”的踏实感。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询