近些年,语言建模领域进展非凡。Llama 或 ChatGPT 等许多大型语言模型(LLM)有能力解决多种不同的任务,它们也正在成为越来越常用的工具。
这些模型之前基本都局限于文本输入,但现在也正在具备处理视觉输入的能力。如果能将视觉与语言打通,那么势必能造就多种多样的应用 —— 这实际上也正是当前 AI 技术革命的关键方向。
即便现在已有不少研究将大型语言模型扩展到了视觉领域,但视觉与语言之间的连接尚未被彻底打通。举些例子,大多数模型都难以理解空间位置关系或计数 —— 这还需要复杂的工程设计并依赖额外的数据标注。许多视觉语言模型(VLM)依然难以理解属性和顺序。它们往往会忽略输入 prompt 的某些部分,因此为了得到理想结果,用户常常需要在提示工程上费心费力。还有些模型会产生幻觉,产出无用或不相关的内容。因此,人们依然在大力开发稳定的模型。
如果你是有志这一行业的学生或爱好者或想要从其它 AI 领域转战此方向,那么请一定不要错过我们今天要介绍的这篇《视觉语言模型导论》。
- 论文标题:An Introduction to Vision-Language Modeling
- 论文地址:https://arxiv.org/pdf/2405.17247
这篇导论来自 Meta 和蒙特利尔大学等多所研究机构的数十位研究者,将解释 VLM 是什么、它们是如何训练的以及如何基于不同研究目标有效地评估它们。
该团队表示,这篇论文的目标是帮助读者轻松理解 VLM 并着重说明这一领域的有效实践,而不是提供 VLM 研究成果的详尽综述或完整指南。
多种多样的 VLM
得益于深度学习的发展,计算机视觉和自然语言处理领域都取得了令人瞩目的进展,也因此已经有不少研究团队尝试过将这两个领域连接到一起。
这篇论文关注的重点是最近期的基于 Transformer 的技术。
该团队将尝试打通这两大领域的研究成果,按训练范式分成了四类,见图 1。
第一类是对比式训练(contrastive training),这是一种使用正例和负例对来训练模型的常用策略。VLM 的训练目标是为正例对预测相似的表征,为负例对预测不同的表征。
第二类是掩码(masking),其方法是根据某些未被遮掩的文本来重建被遮掩的图块。类似地,通过遮掩描述中的词,也可以让 VLM 根据未被遮掩的图像来重建这些被遮掩的词。
另一类是基于预训练骨干网络来训练 VLM,这往往是使用 Llama 等开源 LLM 来学习图像编码器(也可能是预训练的)和 LLM 之间的映射关系。相比于从头开始训练文本和图像编码器,学习预训练模型之间的映射关系的计算成本往往更低。
大部分这类方法都是使用中间表征或部分重建,而生成式 VLM 则能生成图像或描述。有鉴于这类模型的性质,它们的训练成本通常是最高的。
需要说明:这些范式并不是互斥的,很多方法都混合使用了对比、掩码和生成范式。文中为每种范式都提供了一两个模型进行说明,以帮助读者了解这些模型的设计思路。
基于 Transformer 的 VLM 早期研究
通过使用 Transformer 架构,BERT(使用 Transformer 的双向编码器表征)一诞生,就超过了当时所有的语言建模方法。之后不久,BERT 就被扩展用来处理视觉数据。visual-BERT 和 ViLBERT 是其中两个代表,它们的做法是将文本与图像 token 组合到一起。
这些模型有两个训练目标:1) 经典的掩码建模任务,目标是预测给定输入中缺失的部分;2) 句子 - 图像预测任务,目标是预测图像标注是否描述了图像内容。
通过利用这两个目标,这些模型在多种视觉 - 语言任务上表现出色,这主要是得益于 Transformer 模型有能力学会通过注意力机制将词与视觉线索关联起来。
基于对比的 VLM
基于对比的训练往往能通过基于能量的模型(EBM)更好地解释,即模型的训练目标是为观察到的变量分配低能量,为未被观察到的变量分配高能量。来自目标分布的数据的能量应该较低,其它数据点的能量应该较高。
使用掩码目标的 VLM
在深度学习研究中,掩码是一种常用技术。它可被视为一种特定形式的去噪自动编码器,其中的噪声有一种空间结构。它也与修复(inpainting)策略有关,该策略曾被用于学习强大的视觉表征。BERT 也在训练阶段使用了掩码式语言建模(MLM)来预测句子中缺失的 token。掩码方法非常适合 Transformer 架构,因此输入信号的 token 化使得随机丢弃特定的输入 token 变得更容易。
已经有一些研究在图像方面探索这一方法,即掩码式图像建模(MIM),具体案例包括 MAE 和 I-JEPA。
很自然地,也有人将这两者组合起来训练 VLM。其一是 FLAVA,其使用了掩码在内的多种训练策略来学习文本和图像表征。另一个是 MaskVLM,这是一种独立模型。
基于生成的 VLM
上面的训练范式主要是操作隐含表征来构建图像或文本抽象,之后再在它们之间映射,生成范式则不同,它考虑文本和 / 或图像的生成。
CoCa 等一些方法会学习一个完整的文本编码器和解码器来描述图像 Chameleon Team 和 CM3leon 等另一些方法则是多模态的生成模型,其训练目标就包括生成文本和图像。最后,还有些模型的目标是基于文本生成图像,比如 Stable Diffusion、Imagen 和 Parti。但是,即便它们是为生成图像而生的,它们也能被用于解决一些视觉 - 语言理解任务。
用预训练骨干网络构建的 VLM
VLM 的一个缺点是从头开始训练的成本很高。这通常需要成百上千台 GPU,同时还必须使用上亿对图像和文本。因此,也有很多研究者探索使用已有的 LLM 和 / 或视觉提取器,而不是从头开始训练模型。
这种做法的另一个优势是可以利用现在很多开源且易用的 LLM。
通过使用这样的模型,有可能学习到仅在文本模态和图像模态之间的映射。通过学习这样的映射,仅需要少量计算资源就可让 LLM 有能力回答视觉问题。
该团队在论文中说明了这类模型的两个代表:一是首个使用预训练 LLM 的模型 Frozen,二是 Mini-GPT。详见原论文。
VLM 训练指南
有一些研究揭示了进一步扩大深度神经网络规模的重要性。受这些 scaling law 的激励,最近不少项目都在通过增加计算量和扩大模型规模来学习更好的模型。这就催生了 CLIP 等模型 —— 其训练使用了 4 亿张图像,计算预算自然也非常高。就算是其开源实现 OpenCLIP,根据模型大小的不同,训练也使用了 256 到 600 台 GPU,耗时数天到几周。
但是,又有一项研究表明通过精心的数据整编,有可能战胜 scaling law。这一节首先将讨论训练模型时数据的重要性,并会给出一些用于构建 VLM 训练数据集的方法。
然后会讨论常用的软件、工具和技巧,它们可帮助实践者更高效地训练 VLM。
由于训练 VLM 有多种不同方法,所以文中还会讨论特定情形下应该选用什么类型的模型。
之后,该团队还会给出一些提升定基(grounding,即正确映射文本与视觉线索的能力)的技巧,并介绍使用人类偏好提升对齐的技术。
VLM 常被用于阅读和翻译文本,所以他们也会分享一些用于进一步提升 VLM 的 OCR 能力的技术。
最后是一些常用的微调方法。
训练数据
为了评估预训练数据集的质量,DataComp 提出了一个基准,其中 CLIP 的模型架构和预训练超参数都是固定的。其评估重点是设计出能在 38 个下游任务上取得优良零样本和检索性能的图像 - 文本数据集。DataComp 提供了多个有噪声网页数据集池,规模从小型(1.28M)到超大型(12.8B)不等。针对每个池,都有多个过滤策略被提出和评估。DataComp 表明:为了训练出高效高性能的 VLM,数据剪枝是一个关键步骤。
用于 VLM 的数据剪枝方法可以分为三大类:(1) 启发式方法,可以清除低质量数据对;(2) bootstrapping 方法,使用预训练的 VLM 评估图像和文本的多模态对齐程度,然后丢弃其中对齐较差的数据对;(3) 用于创建多样化和平衡数据集的方法。具体的措施包括:
- 使用合成数据来提升训练数据
- 使用数据增强
- 交错式的数据整编
- 评估多模态数据质量
- 利用人类专业知识:数据标注的力量
软件
这一小节讨论了现有的可用于评估和训练 VLM 的软件以及训练它们所需的资源。
- 使用现有的公共软件库
- 我需要多少台 GPU?
- 为训练加速
- 其它超参数的重要性
使用什么模型?
前面已经提到,训练 VLM 的方法有好几种。一些是使用简单的对比训练方案,一些则是使用掩码策略来预测缺失的文本或图块,还有一些模型使用的是自回归或扩散等生成范式。也有可能使用 Llama 或 GPT 等预训练的视觉或文本骨干网络。在这种情况下,构建 VLM 模型仅需学习 LLM 和视觉编码器表征之间的映射。
那么,应该如何选择这些方法呢?我们需要像 CLIP 一样从头开始训练视觉和文本编码器,还是像 Flamingo 或 MiniGPT 一样从预训练的 LLM 开始训练?
- 何时使用 CLIP 这样的对比模型?
- 何时使用掩码?
- 何时使用生成模型?
- 何时使用 LLM 作为预训练骨干网络?
提升定基
在 VLM 和生成模型文献中,定基(grounding)是一个关键难题。定基的目标主要是解决模型不能很好理解文本 prompt 的问题,这个问题既可能导致模型忽视 prompt 中的某些部分,也可能导致其产生幻觉,想象出 prompt 中没有的内容。
解决这些难题需要理解关系,比如确定一个物体是在左边还是右边、否定、计数、理解属性(如颜色或纹理)。
提升定基这个研究领域很活跃,而目前还尚未出现一种能解决此难题的单一简单方法。尽管如此,在提升定基性能方面,还是有一些技巧可用:
- 使用边界框标注
- 否定描述
提升对齐
受语言领域指令微调的成功的启发视觉语言模型也开始整合指令微调和根据人类反馈的强化学习(RLHF)来提升多模态聊天能力以及将输出与期望响应对齐。
指令微调涉及到在一个包含指令、输入和期望响应的监督式数据集上对视觉语言模型进行微调。通常来说,指令微调数据集的规模远小于预训练数据集 —— 指令微调数据集的规模从少量到数十万不等。整合了指令微调的视觉语言模型包括 LLaVa、InstructBLIP、OpenFlamingo。
RLHF 的另一个目标是对齐模型输出与人类偏好。使用 RLHF 时,需要训练一个奖励模型来匹配人类偏好 —— 即人类认为一个模型响应是好是坏。尽管指令微调需要监督训练样本(收集成本较高),但 RLHF 则可使用辅助式奖励模型来模拟人类偏好。然后再使用该奖励模型来微调主模型(不管是语言模型还是视觉语言模型),使其输出与人类偏好对齐。LLaVa-RLFH 就是一个视觉语言模型整合 RLHF 的突出案例,其能通过事实信息来提升模型的输出对齐。
提升对富含文本的图像的理解
在我们的日常生活中,视觉感知中有一大关键部分:理解文本。多模态大型语言模型(MLLM)的成功可让 VLM 以零样本方式应用于多种应用,并且其中许多已经可用于真实世界场景。
有研究表明 MLLM 具备卓越的零样本光学字符识别(OCR)能力,无需专门使用特定于 OCR 领域的数据进行训练。但是,当涉及到数据类型之间的复杂关系时,这些模型往往难以解读图像中的文本,原因是它们的训练数据中包含大量自然图像。
下面列出了一些在文本理解方面的常见难题以及试图解决该难题的模型:
- 使用细粒度的富含文本的数据进行指令微调:LLaVAR
- 处理高分辨率图像中的细粒度文本:Monkey
- 分立式场景文本识别模块和 MM-LLM:Lumos
参数高效型微调
事实已经证明,在跨领域视觉和语言任务上,VLM 的效果很好。但是,随着预训练模型大小持续增长,由于计算限制,微调这些模型的全体参数集将变得不切实际。
为了解决这一难题,参数高效型微调(PEFT)方法诞生了,其目标是解决与微调大规模模型相关的高计算成本问题。这些方法关注的重点是训练部分参数来使模型适应下游任务,而不是重新训练全体模型。现有的 PEFT 方法可以分为四大类:
- 基于低秩适配器(LoRa)的方法
- 基于 prompt 的方法
- 基于适应器的方法
- 基于映射的方法
实现负责任 VLM 评估的方法
VLM 的主要能力是实现文本与图像的映射,因此度量其视觉语言能力就非常关键了,因为这能确保词与视觉线索真正实现了映射。
在评估 VLM 方面,早期的评估任务包括图像描述和视觉问答(VQA)。
现在还有以文本为中心的 VQA(text-centric VQA)任务,其评估的是模型理解和阅读图像中的文本的能力。
Radford et al. [2021] 也提出了一种常用的评估方法,该方法是基于零样本预测,比如 ImageNet 分类任务。这样的分类任务可以评估 VLM 是否具备足够的世界知识。
Winoground 是一个更近期的基准,其度量的是模型的视觉 - 语言组合推理能力。
另外,我们已经知道 VLM 会表现出偏见和幻觉,因此对这两方面进行评估也非常重要。
将 VLM 扩展用于视频
之前谈到的 VLM 基本都是在静态视觉数据(图像)上训练和评估的。但是,视觉数据还有动态的,即视频。
对 VLM 而言,视频数据既能带来新挑战,也有望为其带来新能力,比如理解物体的运动和动态或在空间和时间中定位物体和动作。用文本检索视频、视频问答和视频生成正在快速成为基础的计算机视觉任务。
视频的时间属性对存储、CPU 内存来说都是一个巨大挑战(如果把每一帧都视为一张图像,那么帧率越高,成本就越高)。于是对于处理视频的 VLM 而言,就需要考虑多个权衡因素,比如数据加载器中动态视频解码器的压缩格式、基于图像编码器来初始化视频编码器、为视频编码器使用时空池化 / 掩码机制、非端到端 VLM。
与图像 - 文本模型类似,早期的视频 - 文本模型也是使用自监督指标来从头开始训练视觉和文本组件。但不同于图像模型,对比式视频 - 文本模型并非首选方法,早期时人们更喜欢融合和时间对齐方法,因为相比于计算视频的全局表征,让表征中有更多时间粒度更重要。
近段时间,视频 - 语言模型领域出现了图像 - 语言模型领域类似的趋势:使用预训练 LLM 并将其与视频编码器对齐,从而增强 LLM 的视频理解能力。视觉指令微调等现代技术也被广泛使用并被适配用于视频。