Visual Instruction Tuning
目录
0. 摘要
使用机器生成的指令跟随数据对大语言模型(LLMs)进行指令微调已被证明能够提高其在新任务上的零样本能力,但在多模态领域的探索较少。我们首次尝试利用仅基于语言的 GPT-4 来生成多模态语言-图像指令跟随数据。通过对这些生成的数据进行指令微调,我们提出了 LLaVA(Large Language and Vision Assistant),这是一种端到端训练的大型多模态模型,将视觉编码器与语言模型(LLM)连接起来,实现通用的视觉和语言理解。
为了促进视觉指令跟随领域的未来研究,我们构建了两个评估基准,其中包含多样且具有挑战性的应用导向任务。实验表明,LLaVA 展现了令人印象深刻的多模态对话能力,在未见过的图像/指令上,有时表现出类似多模态 GPT-4 的行为,并在合成多模态指令跟随数据集上获得了 85.1% 的相对得分。当在 Science QA 数据集上进行微调时,LLaVA 和 GPT-4 的协同效果达到了 92.53% 的全新最先进准确率。
2. 相关工作
多模态指令跟随代理。在计算机视觉领域,现有构建指令跟随代理的工作大致可分为两类:
- 端到端训练模型:这类模型针对每个具体的研究主题分别进行探索。例如,视觉-语言导航任务 [3, 19] 和 Habitat [47] 需要具身(embodied) AI 代理按照自然语言指令,在视觉环境中采取一系列动作以完成目标。在图像编辑领域,给定输入图像和描述任务的书面指令,InstructPix2Pix [6] 能够按照人类指令编辑图像。
- 通过 LangChain [1] / LLMs [35] 协调多个模型的系统:例如 Visual ChatGPT [53]、X-GPT [63]、MM-REACT [55]、VisProg [18] 和 ViperGPT [46]。
尽管这些方法共享构建指令跟随代理的目标,我们的重点是开发一种能够处理多任务的端到端训练语言-视觉多模态模型。
指令微调。在自然语言处理(NLP)社区,为使大型语言模型(LLMs),如 GPT-3 [7]、T5 [41]、PaLM [10] 和 OPT [60],能够遵循自然语言指令并完成现实任务,研究者们探索了针对 LLM 的指令微调方法 [37, 52, 51],并衍生出如 InstructGPT [37] / ChatGPT [35]、FLAN-T5 [11]、FLAN-PaLM [11] 和 OPT-IML [22] 等指令微调模型。事实证明,这种简单的方法可以有效提升 LLM 的零样本和小样本泛化能力。因此,从 NLP 借鉴这一思路到计算机视觉领域是自然的延续。更广泛地说,使用基础模型进行师生蒸馏的想法已在图像分类 [14] 等其他领域中得到研究。
Flamingo [2] 因其在零样本任务迁移和上下文学习中的强大表现,可被视为多模态领域的 GPT-3。其他基于图像-文本对训练的大型多模态模型(LMMs)包括 BLIP-2 [28]、FROMAGe [24] 和 KOSMOS-1 [20],PaLM-E [13] 是一款面向具身 AI 的 LMM。基于最近 “最优” 开源 LLM LLaMA 的 OpenFlamingo [5] 和 LLaMA-Adapter [59] 是使 LLaMA 支持图像输入的开源尝试,为构建开源多模态 LLM 奠定了基础。
尽管这些模型在任务迁移泛化性能上表现出潜力,它们并未明确使用视觉-语言指令数据进行微调,其在多模态任务中的表现通常不及语言任务。在本文中,我们旨在填补这一空白,并研究其效果。最后需要注意的是,视觉指令微调不同于视觉提示微调 [23]:前者旨在提升模型的指令跟随能力,而后者旨在提高模型适配的参数有效性。
【视觉指令微调和视觉提示微调的相同点在于,它们都通过向预训练的模型注入新的信息(例子),来微调模型的一部分参数,从而教模型完成相应的任务。
不同点在于它们输入例子的差异。例如在分类任务中,
- 视觉提示微调(Visual Prompt Tuning)输入的是 <图像,标签> 对,通过匹配图像和相应标签来完成分类。
- 视觉指令微调(Visual Instruction Tuning)除了输出 <图像,标签> 对之外,还会明确的输入问题(指令),例如,对输入的图像分类,问题的答案就是图相对应的标签。即,输入的是三元组 <问题:输入图像是什么类别,图像,答案:图像对应的标签>
因此,在我看来,视觉指令微调应该是包含视觉提示微调的。】
3. GPT 协助的视觉指令数据生成
近年来,社区涌现出大量公开的多模态数据,例如 CC [8] 和 LAION [45] 中的图像-文本对。然而,多模态指令跟随数据的可用数量仍然有限,这部分是因为通过人工众包(human crowd-scouring)创建此类数据的过程耗时且定义不明确。受近年来 GPT 模型在文本标注任务中成功的启发 [17],我们提出利用 ChatGPT/GPT-4 基于广泛存在的图像-文本对数据收集多模态指令跟随数据。
对于图像 X_v 及其相关标题 X_c,自然可以创建一组问题 X_q,旨在指导助手描述图像内容。我们提示 GPT-4 生成这样一系列问题(详细内容见附录)。因此,将图像-文本对扩展为指令跟随版本的简单方法是:Human: X_q X_v<STOP> Assistant: X_c<STOP>。虽然这种简单的扩展方式构造成本较低,但在指令和响应中缺乏多样性和深度推理。
为解决此问题,我们利用仅支持文本输入的 GPT-4 或 ChatGPT 作为强大的教师模型,生成包含视觉内容的指令跟随数据。具体而言,为了将图像编码为可供仅支持文本的 GPT 识别的视觉特征,我们使用两种符号表示方式:
- 标题(Captions):从不同角度描述视觉场景;
- 边界框(Bounding boxes):定位场景中的对象,每个框编码对象的概念及其空间位置。
- 一个示例见表 1 顶部块。
这种符号表示方法使我们能够将图像编码为 LLM 可识别的序列。我们使用 COCO 数据集中的图像 [31],生成三种类型的指令跟随数据。每种类型的示例如表 1 底部块所示。在数据收集中,我们首先手动设计少量示例,这些是唯一需要人工标注的数据,作为 GPT-4 查询时的上下文学习种子示例。
-
对话(Conversation)。我们设计了助手与人之间关于图片的对话。回答的语气类似于助手正在 “观察” 图像并回答问题。提问涵盖图像内容的多样化问题,包括对象类型、对象数量、对象动作、对象位置及对象之间的相对位置。仅包含有明确答案的问题(详细提示见附录)。
-
详细描述(Detailed description)。为了包含丰富且全面的图像描述,我们创建了一个问题列表,以实现该目标。我们通过提示 GPT-4 创建问题列表并进行筛选(详见附录中的提示和筛选过程)。对于每张图像,从列表中随机抽取一个问题让 GPT-4 生成详细描述。
-
复杂推理(Complex reasoning)。在上述两种类型的基础上,我们进一步创建需要深入推理的问题。这些答案通常需要遵循严格逻辑的逐步推理过程。
我们共收集了 158K 个独特的语言-图像指令跟随样本,其中包括 58K 条对话、23K 条详细描述和 77K 条复杂推理样本。我们在早期实验中对比了 ChatGPT 和 GPT-4 的使用,发现 GPT-4 在指令跟随数据的质量(如空间推理能力)方面始终表现更佳。
4. 视觉指令微调
4.1 架构
我们的主要目标是有效利用预训练的 LLM 和视觉模型的能力。网络架构如图 1 所示。我们选择 Vicuna [9] 作为我们的 LLM f_ϕ(⋅),其参数由 ϕ 表示。Vicuna 因其在公开可用的检查点中 [48, 9, 38] 在语言任务上的指令跟随能力最佳而被选用。
对于输入图像 X_v,我们使用预训练的 CLIP 视觉编码器 ViT-L/14 [40] 提取视觉特征 Z_v = g(X_v)。在实验中,我们考虑了最后一个 Transformer 层之前和之后的网格特征。
为了将图像特征连接到语言模型的词嵌入空间,我们采用了一个简单的线性层。具体来说,使用一个可训练的投影矩阵 W 将视觉特征 Z_v 转换为语言嵌入 token H_v,该token的维度与语言模型的词嵌入空间相同:
通过此方式,我们获得了一系列视觉 token H_v。
我们的方法采用了轻量级的简单投影方案,支持快速迭代以进行数据驱动的实验。然而,也可以探索更复杂的图像与语言表示连接方案,例如:Flamingo [2] 中的门控交叉注意力(Gated Cross-Attention)和 BLIP-2 [28] 中的 Q-former。
我们计划在未来研究可能更高效和复杂的架构设计,以进一步提升 LLaVA 的性能。
4.2 训练
对于每个输入图像 X_v,我们生成多轮对话数据 (X^1_q, X^1_a, ⋯ , X^T_q, X^T_a),其中 T 是对话轮数。我们将这些对话数据组织成一个序列,所有答案都被视为助手的响应,且在第 t 轮的指令 X^t_instruct 被定义为:
这种方式形成了用于多模态指令跟随的统一序列格式,示例如表 2 所示。我们对 LLM 的预测 token 进行指令微调,使用其原始的自回归训练目标。
具体来说,对于一个长度为 L 的序列,我们计算目标答案 X^a 的概率:
其中,θ 表示可训练参数,X_{instruct,<i} 和 X_{a,<i} 分别是当前预测 token x_i 之前所有轮次的指令和答案 token。为了简化可读性,我们忽略了系统消息 X_{system-message} 和所有先前的 <STOP>
,但明确添加了 X_v 以强调图像是所有答案的基础。详细的预测token见表 2。
阶段 1: 特征对齐预训练。为在概念覆盖和训练效率之间取得平衡,我们从 CC3M 数据集中筛选出 595K 图像-文本对(详细筛选过程见附录)。这些数据通过第 3 节所述的简单扩展方法转换为指令跟随数据,每个样本可视为单轮对话。
- 构造公式 (2) 的输入 X_instruct: 对于图像 X_v,随机采样一个问题 X_q,作为请求助手简要描述图像的语言指令。原始图像描述 X_a 则作为预测答案。
- 训练策略: 在训练中,视觉编码器和语言模型 (LLM) 的权重保持冻结,仅优化投影矩阵参数 θ=W。通过最大化公式 (3) 的似然,图像特征 H_v 被对齐到预训练的 LLM 词嵌入空间。
- 效果: 此阶段可以视为为冻结的 LLM 训练一个兼容的视觉 tokenizer。
阶段 2: 端到端微调。在此阶段,视觉编码器的权重仍然冻结,同时继续更新投影层和 LLM 的预训练权重;即公式 (3) 中可训练参数为 θ={W,ϕ}。
我们考虑以下两种具体的应用场景:
-
多模态聊天机器人 (Multimodal Chatbot)。使用第 3 节中生成的 158K 语言-图像指令跟随数据进行微调。三种类型的响应中,只有对话是多轮的,其余两种是单轮的。在训练中,这些数据均匀采样。
-
科学问答 (Science QA)。我们在 ScienceQA 基准数据集 [34] 上评估方法。该数据集是首个大规模多模态科学问答数据集,并为答案提供详细的讲解与解释。每个问题都包含上下文(形式为自然语言或图像),助手以自然语言提供推理过程并从多个选项中选择答案。我们将问题与上下文作为 X_instruct,将推理过程与答案作为 X_a,构造成单轮对话数据进行公式 (2) 中的训练。
5. 实验
我们评估了 LLaVA 在指令跟随和视觉推理能力上的表现,采用了两种主要的实验设置:多模态聊天机器人和 ScienceQA 数据集。我们使用 8× A100 显卡训练所有模型,遵循 Vicuna 的超参数 [9]。我们在过滤后的 CC-595K 子集上预训练模型 1 个 epoch,学习率为 2e-3,批量 大小为 128,并在提出的 LLaVA-Instruct-158K 数据集上进行 3 个 epoch 的微调,学习率为 2e-5,批量 大小为 32。更多训练细节请参见附录。
5.1 多模态聊天机器人
LLaVA-Bench(COCO)。我们从 COCO-Val-2014 中随机选择了 30 张图片,对于每张图片,我们使用第 3 节中提出的数据生成管道生成三种类型的问题(对话、详细描述、复杂推理),总共生成了 90 个问题。这个基准测试研究了模型在一致视觉输入下的对齐行为和能力。我们通过变化训练数据集来研究不同类型指令跟随数据的有效性,并在表 4 中展示了结果。首先,通过指令微调,模型在跟随用户指令的能力上显著提升,超过 50 个百分点。其次,增加少量的详细描述和复杂推理问题使模型的整体能力提升了 7 个百分点。此外,这也提高了模型在对话问题上的表现,表明推理能力的提高有助于对话能力的提升。最后,我们展示了包含所有三种类型数据时,模型取得最佳成绩(85.1%)。
LLaVA-Bench(In-the-Wild)。为了评估模型在更具挑战性的任务中的能力及其对新领域的泛化能力,我们收集了 24 张多样化的图片,总共包含 60 个问题,包括室内和室外场景、表情包、画作、素描等,并为每张图片提供了详细的手工描述和适当选择的问题。我们在表 5 中比较了LLaVA、BLIP 和 OpenFlamingo。得益于视觉指令微调,LLaVA 相比于 BLIP-2(+29%)和OpenFlamingo(+48%)在表现上有显著提升。与仅使用文本的 GPT-4(能够访问真实标签)相比,LLaVA 在复杂推理问题上取得了 81.7% 的优秀成绩,整体得分为 67.3%。
局限性。LLaVA-Bench(In-the-Wild)具有挑战性从而揭示模型的弱点。我们在表 6 中提供了两个示例,附有相关的标题和问题。对于拉面示例(左侧),要正确回答餐厅的名称,模型需要具备广泛的知识覆盖和多语言理解能力;要正确描述配菜,模型可能需要从互联网检索相关的多模态信息。对于冰箱示例(右侧),感知酸奶的正确品牌要求模型处理高分辨率图像并具备广泛的知识覆盖。我们还观察到 LLaVA 的一个有趣的失败,当被问及是否有草莓口味的酸奶时,它回答 “是”,尽管冰箱里只有酸奶和草莓。这表明,LLaVA 有时将图像视为一个 “patch 包”,未能抓住图像中的复杂语义。我们希望 LLaVA 能够作为基准提供可靠的基础,在此基础上我们的发现能激发未来开发更强大 LMM 的工作。
5.2 科学问答
消融实验。我们在表 8 中对 ScienceQA 进行了一些设计选择的消融实验。
- 视觉特征。我们尝试使用 CLIP 视觉编码器的最后一层特征,结果为 89.96%,比倒数第二层特征低 0.96%。我们推测这是因为CLIP的最后一层特征可能更多地关注全局和抽象的图像属性,而倒数第二层则更多地关注局部属性,这些局部属性对于理解图像的具体细节更为有用。
- 思维链。为了决定答案和推理过程在模型预测中的顺序,我们运行了两种变体,并观察到答案优先的策略在 12 个 epoch 后报告了最佳结果 89.77% 的准确率,而推理优先则在 6 个 epoch 内快速达到 89.77% 的准确率,但经过更多训练后没有进一步的提升。训练模型 24 个 epoch 也没有提高性能。我们得出结论,类似 CoT 的推理优先策略可以大幅改善收敛速度,但对最终性能的贡献相对较小。
- 预训练。我们跳过预训练,直接从头开始在 ScienceQA 上进行训练,结果性能降至 85.81% 的准确率。5.11% 的绝对降幅表明了预训练阶段在对齐多模态特征并保留大量预训练知识方面的重要性。
- 模型大小。我们将所有配置保持与我们最佳的 13B 模型相同,并训练了一个 7B 模型。该模型的准确率为 89.84%,比 90.92% 低 1.08%,这表明模型规模的重要性。
6. 结论
本文展示了视觉指令微调的有效性。我们提出了一种自动化管道来创建语言-图像指令跟随数据,基于此我们训练了 LLaVA,一个多模态模型,能够遵循人类意图完成视觉任务。在 ScienceQA 上微调时,LLaVA 实现了新的最先进准确率,在多模态聊天数据上微调时,展现了出色的视觉对话能力。此外,我们还提出了第一个 benchmark,用于研究多模态指令跟随能力。本文是视觉指令微调的初步工作,主要聚焦于现实生活中的任务。有关 LLaVA 在学术基准上的更多定量结果,请参考通过视觉指令微调所改进的基准 [32]。我们希望我们的工作能够激发未来在构建更强大的多模态模型方面的研究。
论文地址:https://arxiv.org/abs/2304.08485
项目页面:https://llava-vl.github.io/