当前位置: 首页 > news >正文

InstructBLIP:迈向具备指令微调能力的通用视觉语言模型

温馨提示:
本篇文章已同步至"AI专题精讲" InstructBLIP:迈向具备指令微调能力的通用视觉语言模型

摘要

大规模的预训练与instruction tuning在构建通用语言模型方面已取得显著成效。然而,构建通用的视觉-语言模型仍然具有挑战性,因为附加的视觉输入带来了丰富的输入分布和任务多样性。尽管视觉-语言预训练已经被广泛研究,视觉-语言instruction tuning仍然缺乏深入探索。本文基于预训练的BLIP-2模型,开展了一项系统而全面的视觉-语言instruction tuning研究。我们收集了26个公开可用的数据集,涵盖多种任务和能力,并将其转换为instruction tuning格式。此外,我们引入了一个instruction-aware的Query Transformer,用于提取与给定指令相匹配的信息特征。在13个held-in数据集上训练后,InstructBLIP在13个held-out数据集上实现了最先进的zero-shot性能,显著优于BLIP-2和更大的Flamingo模型。我们的模型在个别下游任务上进行finetune时也达到了最优性能(例如,在带图像上下文的ScienceQA问题上达到了90.7%的准确率)。此外,我们通过定性分析展示了InstructBLIP相比同时期多模态模型的优势。所有InstructBLIP模型均已开源。

1 引言

人工智能(AI)研究的一个长期愿景是构建一个能够解决用户指定的任意任务的单一模型。在自然语言处理(NLP)领域,instruction tuning [46, 7]被证明是实现这一目标的有希望的方法。通过在由自然语言指令描述的多种任务上对大型语言模型(LLM)进行finetune,instruction tuning使得模型能够遵循任意指令。近年来,instruction-tuned的LLM也被应用于视觉-语言任务。例如,BLIP-2 [20]有效地将冻结的instruction-tuned LLM适配于理解视觉输入,并展现了初步的图像到文本生成任务中的指令遵循能力。

相比NLP任务,视觉-语言任务由于来自不同领域的附加视觉输入而更加多样化。这对一个旨在泛化至多种视觉-语言任务(包括训练中未见任务)的统一模型提出了更大挑战。以往的大多数工作可以归为两类方法。第一类方法是多任务学习 [6, 27],将各种视觉-语言任务统一为相同的输入-输出格式。然而,我们通过实验证明(见表4),缺少指令的信息会导致这种方法在未见数据集和任务上的泛化能力较差。第二类方法 [20, 4]是在预训练LLM基础上扩展视觉组件,并利用图像字幕数据训练这些视觉组件。然而,这类数据过于有限,难以实现对超越视觉描述的视觉-语言任务的广泛泛化。

在这里插入图片描述

为了解决上述挑战,本文提出了InstructBLIP,这是一种视觉-语言instruction tuning框架,使得通用模型可以通过统一的自然语言接口解决多种视觉-语言任务。InstructBLIP使用多样化的instruction数据对多模态LLM进行训练。具体而言,我们以预训练的BLIP-2模型为起点,该模型由图像编码器、LLM以及连接两者的Query Transformer(Q-Former)组成。在instruction tuning过程中,我们对Q-Former进行finetune,而保持图像编码器和LLM冻结。

本论文的关键贡献如下:

  • 我们对视觉-语言instruction tuning进行了系统而全面的研究。我们将26个数据集转换为instruction tuning格式,并将其分为11类任务。我们使用13个held-in数据集进行instruction tuning,使用13个held-out数据集进行zero-shot评估。此外,我们在任务级别上保留了4个完整的任务类别用于zero-shot评估。详尽的定量和定性结果展示了InstructBLIP在视觉-语言zero-shot泛化方面的有效性。

  • 我们提出了一种instruction-aware视觉特征提取机制,这是一种新的机制,可以根据给定的指令进行灵活且信息丰富的特征提取。具体而言,文本指令不仅被传递给冻结的LLM,也被输入给Q-Former,从而Q-Former可以从冻结的图像编码器中提取与指令相关的视觉特征。此外,我们提出了一种平衡采样策略,以在不同数据集之间同步学习进度。

  • 我们基于两类LLM评估并开源了一系列InstructBLIP模型:1)FlanT5 [7],一种从T5 [34] finetuned而来的encoder-decoder型LLM;2)Vicuna [2],一种从LLaMA [41] finetuned而来的decoder-only型LLM。InstructBLIP模型在多种视觉-语言任务上实现了最先进的zero-shot性能。此外,作为下游任务的模型初始化,InstructBLIP模型在finetuning时也达到了最优性能。

2 视觉-语言指令调优

InstructBLIP 旨在应对 vision-language instruction tuning 中的独特挑战,并对模型在未见数据和任务上的泛化能力提升进行系统研究。本节首先介绍 instruction tuning 数据的构建方式,然后阐述训练与评估协议。接着,从模型和数据两个角度出发,详细说明两种提升 instruction tuning 效果的技术。最后,给出实现细节。

2.1 任务与数据集

为了在保证 instruction tuning 数据多样性的同时兼顾其可获取性,我们收集了一套全面的、公开可用的 vision-language 数据集,并将其转化为 instruction tuning 格式。如图 2 所示,最终的集合涵盖了 11 个任务类别和 26 个数据集,包括图像描述(image captioning)[23, 3, 51],图像描述与阅读理解结合任务(image captioning with reading comprehension)[38],视觉推理(visual reasoning)[16, 24, 29],图像问答(image question answering)[11, 12],基于知识的图像问答(knowledge-grounded image question answering)[30, 36, 28],结合阅读理解的图像问答(image question answering with reading comprehension)[31, 39],图像问题生成(image question generation,改编自 QA 数据集),视频问答(video question answering)[47, 49],视觉对话问答(visual conversational question answering)[8],图像分类(image classification)[18],以及 LLaVA-Instruct-150K [25]。我们在附录 C 中提供了每个数据集的详细描述和统计信息。

针对每个任务,我们精心设计了 10 到 15 个不同的自然语言 instruction 模板。这些模板作为构建 instruction tuning 数据的基础,明确描述了任务及其目标。对于那些本身偏向生成简短回答的公开数据集,我们在其对应的部分 instruction 模板中加入了“short”、“briefly”等词语,以降低模型固定生成简短输出的过拟合风险。对于 LLaVA-Instruct-150K 数据集,我们没有额外加入 instruction 模板,因为其本身已是 instruction 格式。全部 instruction 模板列表见附录 D。
在这里插入图片描述

2.2 训练和评估协议

为了确保训练和 zero-shot 评估中有足够的数据和任务,我们将这 26 个数据集划分为 13 个 held-in 数据集和 13 个 held-out 数据集,分别在图 2 中以黄色和白色标注。我们使用 held-in 数据集的训练集进行 instruction tuning,并利用其验证集或测试集进行 held-in 评估。

对于 held-out 评估,我们的目标是理解 instruction tuning 如何提升模型在未见数据上的 zero-shot 表现。我们定义了两种类型的 held-out 数据:1)训练过程中模型未接触的数据集,但其任务类型在 held-in 集合中出现过;2)训练过程中完全未接触的数据集及其相关任务。第一类 held-out 评估面临的挑战在于 held-in 与 held-out 数据集之间的数据分布偏移。对于第二类情况,我们完全保留了一些任务未用于训练,包括视觉推理(visual reasoning)、视频问答(video question answering)、视觉对话问答(visual conversational QA)和图像分类(image classification)。

为避免数据污染,我们对数据集进行了精心筛选,确保任何评估数据不会出现在 held-in 训练集合中。instruction tuning 过程中,我们将所有 held-in 训练集混合,并对每个数据集均匀采样其 instruction 模板。模型使用标准的语言建模损失进行训练,以根据 instruction 直接生成响应。此外,对于包含场景文字的任务数据集,我们在 instruction 中加入 OCR tokens 作为补充信息。

2.3 基于指令的视觉特征提取

现有的 zero-shot 图像到文本生成方法(包括 BLIP-2)在提取视觉特征时不考虑 instruction,因此无论任务为何,输入到 LLM 的都是一组静态视觉表示。相比之下,instruction-aware 的视觉模型可以根据任务指令调整自身,从而生成更有利于当前任务的视觉表示。如果我们期望对于同一张图像的任务指令会有显著变化,那么这种方式显然更具优势。

我们在图 3 中展示了 InstructBLIP 的架构。类似于 BLIP-2 [20],InstructBLIP 使用一个 Query Transformer(即 Q-Former)从冻结的图像编码器中提取视觉特征。Q-Former 的输入包括一组 K 个可学习的查询嵌入(query embeddings),这些嵌入通过交叉注意力与图像编码器的输出进行交互。Q-Former 的输出是一组 K 个编码后的视觉向量(每个查询嵌入对应一个),这些向量经过线性投影后被送入冻结的 LLM。与 BLIP-2 一样,Q-Former 在 instruction tuning 之前需通过图像-文本数据完成两阶段预训练。第一阶段中,Q-Former 与冻结图像编码器一同用于 vision-language 表示学习;第二阶段中,将 Q-Former 的输出适配为用于文本生成的软视觉提示(soft visual prompts),此时 LLM 仍处于冻结状态。在预训练完成后,我们在 instruction tuning 阶段对 Q-Former 进行微调,此时 LLM 接收来自 Q-Former 的视觉编码和任务指令作为输入。
在这里插入图片描述

在 BLIP-2 的基础上,InstructBLIP 提出了一个 instruction-aware 的 Q-Former 模块,该模块将指令文本 token 作为额外输入。指令通过 Q-Former 的自注意力层与查询嵌入进行交互,从而促进任务相关图像特征的提取。由此,LLM 接收到有助于执行指令的视觉信息。我们通过实验证明(见表 2),instruction-aware 的视觉特征提取在 held-in 和 held-out 的评估中都带来了显著的性能提升。

2.4 平衡训练数据集

由于训练数据集数量众多,且各数据集规模差异显著,若直接对它们进行均匀混合,可能导致模型对小数据集过拟合、对大数据集欠拟合。为缓解该问题,我们提出按数据集大小的平方根比例进行采样。一般地,设有 DD 个数据集,大小为 { S 1 , S 2 , … , S D } \{ S _ { 1 } , S _ { 2 } , \ldots , S _ { D } \} {S1,S2,,SD},训练期间从数据集 dd 采样的概率为: p d = S d ∑ i = 1 D S i . \begin{array} { r } { p _ { d } = \frac { \sqrt { S _ { d } } } { \sum _ { i = 1 } ^ { D } \sqrt { S _ { i } } } . } \end{array} pd=i=1DSi Sd .

在此基础上,我们对某些数据集的权重进行了手动调整以优化训练过程。这种调整是合理的,因为尽管一些数据集规模相近,但由于任务本身的差异,其训练难度和所需训练强度也不相同。具体来说,我们降低了包含多项选择题的 A-OKVQA 的权重,同时提高了需要生成开放式文本答案的 OKVQA 的权重。表 2 显示,该平衡数据集采样策略在 held-in 评估和 held-out 泛化方面均提升了整体性能。

2.5 推理方法

在推理阶段,我们针对不同数据集采用了两种略有不同的生成方法。在大多数数据集(如图像描述和开放式 VQA)上,我们直接用指令微调后的模型进行生成,然后将其输出与真实答案对比以计算指标。而对于分类和多项选择的 VQA 任务,我们遵循以往工作的方法 [46, 22, 21],采用词汇排名的方式。具体来说,我们仍然提示模型生成答案,但将其输出词汇限制在候选列表中。然后计算每个候选答案的对数似然值,选择值最大的作为最终预测结果。

该排名方法应用于 ScienceQA、IconQA、A-OKVQA(多项选择)、HatefulMemes、Visual Dialog、MSVD 和 MSRVTT 数据集。此外,对于二分类任务,我们将正负类别扩展为一组更通用的 verbalizer(语言标记),以利用自然文本中的词频(例如,将正类扩展为 yestrue,负类扩展为 nofalse)。

对于视频问答任务,我们从每段视频中均匀采样四帧图像。每帧图像分别通过图像编码器和 Q-Former 处理,提取出的视觉特征再拼接后输入到 LLM。

在这里插入图片描述

温馨提示:
阅读全文请访问"AI深语解构" InstructBLIP:迈向具备指令微调能力的通用视觉语言模型

http://www.dtcms.com/a/270089.html

相关文章:

  • Go语言标识符命名规则详解:工程化实践
  • Spring的依赖注入(xml)
  • RISC-V:开源芯浪潮下的技术突围与职业新赛道 (一)为什么RISC-V是颠覆性创新?
  • 安装 asciidoctor-vscode 最新版
  • 针对 SSD 固态硬盘的安全擦除 Secure Erase
  • Kotlin协程中的Job详解
  • 如何用Python编程计算权重?
  • Anolis OS 23 架构支持家族新成员:Anolis OS 23.3 版本及 RISC-V 预览版发布
  • 数据库设计精要:完整性和范式理论
  • 去掉长按遥控器power键后提示关机、飞行模式的弹窗
  • 数据提取之lxml模块与xpath工具
  • 基于Java+SpringBoot 协同过滤算法私人诊所管理系统
  • 系统架构设计师论文分享-论系统安全设计
  • IoTDB:专为物联网场景设计的高性能时序数据库
  • 把word中表格转成excle文件
  • 基于GeoTools的根据Shp文件生成完全包围格网实战
  • Oracle 存储过程、函数与触发器
  • AI标注平台label-studio之二添加机器学习后端模型辅助标注
  • vue3官方文档学习心得
  • SpringCloud系列 - Gateway 网关功能(五)
  • 人体坐姿检测系统开发实战(YOLOv8+PyTorch+可视化)
  • 本地部署 R 语言环境运行软件 RStudio Server 并实现外部访问
  • 玩具语音方案选型决策OTP vs Flash 的成本功耗与灵活性
  • window wsl 环境下编译openharmony,HarmonyOS 三方库 FFmpeg
  • VLLM 调用有哪些超参数; clean_up_tokenization_spaces是什么
  • ubuntu24.04安装NFS网络文件系统/ARM开发板NFS挂载
  • 20250708-03-string结构及命令详解_笔记
  • CI/CD — DevOps概念之实现k8s持续交付持续集成(一)
  • NumPy-统计函数详解
  • UE5内置插件 AnimToTexture 简单入门