视觉 - 语言建模综述:核心范式与评估实践
随着大型语言模型(LLM)的崛起,将视觉能力融入其中已成为研究热点。从辅助导航的视觉助手到基于文本描述生成图像的模型,视觉语言模型(VLM)正在重塑人机交互的方式。然而,由于语言的离散性与视觉的高维连续性之间的本质差异,构建可靠的 VLM 仍面临诸多挑战。本文旨在为研究者提供一份清晰的入门指南,涵盖 VLM 的定义、训练方法、评估体系以及向视频领域扩展的可能性。
1. 引言
近年来,语言建模取得了显著进展,LLM 已能处理多种任务。将这些模型扩展至视觉领域,能够解锁大量应用场景,这是当前 AI 技术革命的关键。尽管已有不少工作尝试连接视觉与语言,但问题尚未彻底解决。例如,缺乏额外标注时,模型在理解空间关系或计数方面往往表现吃力;许多 VLM 也缺乏对属性和顺序的理解,容易产生幻觉。因此,开发可靠的模型依然是活跃的研究方向。
本文不打算成为详尽的文献综述,而是侧重于介绍 VLM 的核心训练范式、有效实践方法以及评估策略,帮助新进入该领域的研究人员快速上手。
2. 视觉语言模型的家族
深度学习在计算机视觉和自然语言处理领域的进步,促使学界致力于连接这两个领域。我们重点关注基于 Transformer 的最新技术,将其归类为四种主要的训练范式。
对比训练是最常用的策略之一,利用正负样本对,训练模型预测相似表示并区分不同表示。掩码策略则通过重建被掩码的图像块或词语来学习表示。基于预训练主干的 VLM通常利用开源 LLM(如 Llama),学习图像编码器与 LLM 之间的映射,计算成本相对较低。而生成式 VLM能够直接生成图像或标题,训练成本最高,但表达能力更强。值得注意的是,这些范式并非互斥,许多现代方法混合使用了多种策略。
2.1 基于 Transformer 的早期工作
VisualBERT 和 ViLBERT 等早期模型将文本与图像 token 结合,通过掩码建模和句子 - 图像预测任务进行训练。它们证明了 Transformer 的注意力机制能够有效关联词语与视觉线索。
2.2 基于对比学习的 VLM
对比训练可视为基于能量模型(EBM)的视角,旨在为观测数据赋予低能量。InfoNCE 损失函数是其中的核心,它要求计算正样本对之间及所有负样本对之间的距离。CLIP 是这一范式的典型代表,它将视觉和语言整合到共享表示空间中,展示了卓越的零样本分类能力。SigLIP 则改进了损失函数,在较小批次下也能实现良好的性能。
2.3 掩码目标视觉语言模型
掩码技术在深度学习中广泛应用,如 BERT 的掩码语言建模和 MAE 的掩码图像建模。FLAVA 结合了多模态和单模态掩码建模损失,展现了强大的多功能性。MaskVLM 则直接在像素空间和文本 token 空间应用掩码,减少了对第三方模型的依赖。
从信息论角度看,VLM 可以理解为通过减少冗余信息和最大化预测信息来解决率失真问题。对比损失被视为没有数据重建的压缩,而自编码损失则通过重建确保信息保留。
2.4 基于生成的视觉语言模型
生成式范式考虑的是文本和/或图像的生成。CoCa 引入了生成式损失,无需额外适应即可执行视觉问答等任务。Chameleon 和 CM3leon 则是多模态生成模型,能够同时生成文本和图像,甚至处理交错的模态序列。此外,利用现有的文本到图像生成模型(如 Stable Diffusion)也可以解决判别性任务,通过贝叶斯定理估计条件似然。
2.5 基于预训练主干网络的 VLM
为了降低高昂的训练成本,许多工作选择利用现有的 LLM 和视觉提取器。Frozen 是首个利用预训练 LLM 的模型,通过轻量级映射网络连接冻结的语言模型。MiniGPT 系列则进一步扩展了输出能力,支持图像生成和多模态对话。Qwen-VL 和 BLIP-2 也是这一路线的代表,通过 Q-Former 等组件高效对齐视觉与语言空间。
3. 视觉语言模型训练指导
训练 VLM 需要关注多个关键因素,数据质量往往是决定性的。
3.1 训练数据
DataComp 基准表明,数据裁剪在训练高效且高性能 VLM 中至关重要。过滤策略包括启发式规则(如去除低分辨率图像)、基于预训练 VLM 的排序(如 CLIPScore)以及多样性采样。合成数据也被用于改善训练质量,例如使用扩散模型生成图像或 LLM 生成标题。
数据增强技术如 SLIP 和 CLIP-rocket 通过在视觉或跨模态上添加辅助损失项来提升表示学习。交织式数据筛选(Interleaved Data Curation)则允许模型在训练过程中接触文本和图像交错的内容,提升少样本性能。
3.2 软件与资源
现有公共库如 OpenCLIP 和 transformers 提供了丰富的工具。关于计算资源,从头训练类似 CLIP 的模型可能需要数百张 GPU,但若利用高质量数据和掩码策略,64 张 GPU 可能已足够。若利用预训练骨干,成本会大幅降低。加速训练方面,torch.compile、xformers 以及 FFCV 库都能显著提升效率。


