论文链接:arxiv.org/pdf/2304.08485
参考视频:LLAVA讲解_哔哩哔哩_bilibili
[论文速览]LLaVA: Visual Instruction Tuning[2304.08485]_哔哩哔哩_bilibili
标题:Visual Instruction Tuning 视觉指令微调
背景引言
大模型的Instruction Tuning (指令微调)是一种微调技术,它通过在由(指令,输出)对组成的数据集上进一步训练大型语言模型(LLMs),以提高模型的能力和可控性。这种方法有助于弥合LLMs的下一个词预测目标与用户让LLMs遵循人类指令的目标之间的差距。
优点是: Instruction Tuning允许更可控和可预测的模型行为。指令的作用是约束模型输出,使其响应特征或领域知识符合预期,为人类干预模型提供一个通道。此外,它具有计算效率,可以帮助LLMs快速适应特定领域,而无需大量的再训练或架构更改。
举例:
{
"instruction":将温度从华氏度调整到摄氏度
"input":94F
"output":34.4摄氏度
}
其中,instruction 和 input 这两个是模型的输入。
instruction vs prompt
大语言模型的指令微调已经被证明具有提高新任务的零样本学习能力。但该想法在多模态领域的探索较少。本工作首次尝试使用仅语言的GPT-4来生成多模态语言图像指令跟随数据。
通过对这些生成的数据进行微调,我们成功的构造了LLAVA。视觉编码器和LLM连接起来,用于通用的视觉和语言理解。(打通多模态之间的联系,才能更好的构建通用的人工智能)
主要贡献:
1.多模态指令跟随数据Multimodal instruction-following data。一个关键的挑战是缺乏视觉语言指令跟随数据。我们利用ChatGPT/GPT-4提出了一个数据转换视角和pipeline,将图像-文本对转换为适当的指令遵循格式。(社区贡献)
2.通过将CLIP的视觉编码器部分与语言解码器Vicuna[9]连接,开发了一个大型多模态模型(LMM)。并对我们生成的视觉语言数据进行端到端的微调。(科学贡献,验证了部分想法)
我们的实证研究验证了使用生成数据进行LMM指令调优的有效性,并提出了构建通用指令遵循视觉代理的实用技巧。当与GPT-4集成时,我们的方法在Science QA[34]多模态推理数据集上实现了SoTA。
3.多模态指令Benchmark。我们现在的LLaVA-Bench有两个具有挑战性的基准,后续介绍。(重要性:现在发表工作)
4.我们向公众发布了以下资产:生成的多模态指令数据,代码库、模型检查点和可视聊天演示。(社区贡献)
GPT辅助视觉Iinstruction数据的生成
社区见证了公共多模态数据(如图像-文本对)量的激增,从CC到LAION等数据集。然而,在多模态指令跟随数据方面,现有的数据量有限,部分原因是创建此类数据的过程耗时且不够明确,尤其是在考虑人类众包的情况下。
(图像-文本对)的公开数据集不少,但是Instruction-following数据集不多,原因:
- 创建数据集耗时;
- 考虑人勒在搜索时定义不明确。
受到最近GPT模型在文本注释任务中成功的启发,我们提出利用ChatGPT/GPT-4进行多模态Instruction-following数据的收集,基于广泛存在的图像配对数据。
对于图像 Xv及其相关的标题 Xc,创建一组旨在指导 助理GPT 描述图像内容的问题 Xq。
我们提示prompt GPT-4策划这样一组问题。
因此,一个简单的方法是将图像-文本对扩展为其Instruction-following版本:
人类:Xq Xv<STOP>
助理:Xc<STOP>
尽管这种扩展版本的构建成本低廉,但在指令和回应的多样性与深度推理上却存在不足。
简要的图像描述指令
详细的图像描述指令
为了缓解这一问题,我们利用仅接受文本输入的语言模型GPT-4或ChatGPT作为强大的教师,创造涉及视觉内容的Instruction-following数据。
具体而言,为了将图像编码为其视觉特征以提示文本模型,我们使用两种类型的符号表示:
(i) Captions:标题通常从不同角度描述视觉场景;
(ii) Boxes: 边界框通常用于定位场景中的物体,每个框编码了物体概念及其空间位置。
以下是表14顶部块中的一个示例。
这种符号表示允许我们将图像编码为LLM可识别的序列。
我们使用COCO图像,生成三种类型的Instruction-following数据。每种类型中各有一个示例,显示在表14的底部块中。
对于每种类型,我们首先手动设计一些示例。这些是我们在数据收集过程中的唯一人工注释,用作上下文学习中的种子示例,以查询GPT-4。
1. 对话VQA。我们设计了助理与提问者之间关于照片的问题对话。答案以助理仿佛在看图像并回答问题的语气进行。对图像的视觉内容提出了一系列多样化的问题,包括物体类型、物体数量、物体动作、物体位置、物体之间的相对位置。仅考虑具有明确答案的问题。
这个prompt的构建是通过明确的角色和内容来引导对话,使得AI能够在视觉内容的上下文中提供准确的回答。
系统消息:这部分是输入给GPT的,用于设置模型的角色和任务。
{"role": "system","content": "You are an AI visual assistant..." }
用户消息:用户的问题也是输入的一部分,告诉GPT需要回答什么。
{"role": "user","content": "What objects are visible in the image?" }
助手回应:这是基于前面的系统和用户消息,GPT生成的内容。助手的回答是对用户问题的直接回应。
{"role": "assistant","content": "The image contains a cat sitting on a rug..." }
2. 详细描述。为了为图像提供丰富而全面的描述,我们创建了一组带有此意图的问题。我们提示GPT-4并策划这个列表。对于每个图像,我们从列表中随机抽取一个问题,询问GPT-4生成详细描述。
3. 复杂推理base on 1 and 2。上述两种类型专注于视觉内容,基于此我们进一步创建深入的推理问题。答案通常需要遵循严格的逻辑进行逐步推理。
我们总共收集了158K个独特的语言-图像指令跟随样本,其中包括58K个对话样本、23K个详细描述样本和77K个复杂推理样本。我们在早期实验中对ChatGPT和GPT-4的使用进行了消融实验,发现GPT-4始终提供更高质量的指令跟随数据,例如空间推理。
视觉指令微调
架构
核心目标是有效融合预训练大语言模型(LLM)与视觉模型的能力。网络架构如图1所示。
语言模型:采用Vicuna作为参数化的LLM fϕ(·),因其在公开模型中展现出最佳指令跟随能力。
视觉编码器:对于输入图像Xv,我们考虑使用预训练的CLIP视觉编码器ViT-L/14,它提供视觉特征Zv = g(Xv)。实验中考虑了最后一层Transformer前后的网格特征。
我们使用简单的线性层将图像特征连接到词嵌入空间。具体来说,我们应用可训练投影矩阵W将Zv转换为语言嵌入标记Hv,其维度与语言模型中的词嵌入空间相同:
这样就得到了一系列视觉标记Hv。
请注意,我们的简单投影方案是轻量级的,这使我们能够快速进行以数据为中心的实验迭代。也可以考虑更复杂的方案来连接图像和语言表示,如Flamingo中的门控交叉注意力和BLIP-2中的Q-former。我们将探索可能更有效和复杂的LLaVA架构设计留作未来工作。
训练
对于每张输入图像 X_v,我们生成多轮对话数据 ,其中 T 表示总对话轮数。我们将其组织为一个序列,将所有答案视为助手的响应 assistant's response,第 t 轮的指令
为:
该形式产生了如表2所示的多模态nstruction-following sequence的统一格式。
我们采用原始自回归训练目标对LLM进行预测标记的指令调优。
具体而言,对于长度为L的序列,我们通过以下方式计算目标答案X_a的概率:
其中 θ 表示可训练参数,X_instruct,{<i} 和 X_a,{<i} 分别代表当前预测标记 x_i 之前所有轮次的指令和答案标记。预测标记的具体示例参见表2。
在公式(2)的条件项中,我们显式添加 X_v 以强调图像特征的基础作用,并省略了 X_system-message 及所有历史 <STOP> 标记以提升可读性。
LLaVA模型训练采用两阶段指令调优流程:
第一阶段:特征对齐预训练
为平衡概念覆盖率与训练效率,我们将CC3M数据集筛选至595K个图像-文本对。
CC3M 数据集处理
我们使用Spacy对整个CC3M数据集的每个标题提取名词短语,并统计每个独特名词短语的频率。
对于频率小于3的名词短语,我们予以跳过,因为它们通常是已经被其他标题覆盖的稀有组合概念和属性。
接着,我们从剩余频率最低的名词短语开始,将包含该名词短语的标题添加到候选池中。如果名词短语的频率大于100,我们将从所有相关标题中随机选择大小为100的子集。
最终,这一过程产生了大约595K个图像-文本对。过滤前后名词短语统计的比较见于图7。
经过过滤的数据集在词频≥3的概念上仍保持良好覆盖率,但所含图文对数量有所减少。
这种数据处理方法确保了我们在构建数据集时能够更准确地捕捉到多样化的图像内容,并提高了生成图像描述的质量。
通过第3节GPT辅助视觉指令数据生成所述的简单扩展方法,将这些数据对转换为指令跟随格式,每个样本视为单轮对话。
构建公式(2)的输入 X_instruct 时,对图像 X_v 随机采样问题 X_q(即"请简要描述该图像"的指令),真实答案 X_a 采用原始标题。
训练时冻结视觉编码器和LLM权重,仅通过可训练参数 θ = W(投影矩阵)最大化公式(2)的似然,使图像特征 H_v 与预训练LLM的词嵌入空间对齐。
该阶段本质上是在为冻结的LLM训练兼容的视觉标记器。
Pre-training for Feature Alignment
第一阶段重点训练projection,即从视觉token投影到文本token的过程。
这里训练用的数据非常简单,即单轮的对话形式,希望预测的是图像原本的caption:
输入就是:X_q就是下面的问题,X_v就是图像的token;
输出就是:X_c 就是图像原本配的caption。
![]()
通过上述方式的pre-train,就能使的projection layer相对有意义的把视觉的token转到文本的token中去。
第二阶段:端到端微调
本阶段始终保持视觉编码器权重冻结,同时更新LLaVA中投影层和LLM的预训练权重,即可训练参数 θ = {W, ϕ}。我们重点研究两种应用场景:
-
多模态聊天机器人:基于第3节所述的158K语言-图像指令数据进行微调。在三种响应类型中,对话采用多轮形式,其余两类(详细描述和复杂推理)为单轮,训练时进行均匀采样。
-
科学问答(ScienceQA):在首个提供详细解析的大规模多模态科学问答基准[34]上验证方法。每个问题配有自然语言或图像形式的上下文,要求助手先生成自然语言推理过程,再从多项选择中确定答案。训练时按公式(1)将数据组织为单轮对话:将问题与上下文合并作为 X_instruct,推理过程与最终答案合并作为 X_a。
Fine-tuning End-to-End
针对特定的任务(Multimodal Chatbot,Science QA),把projection layer + LLM 一起训练,保持visual encoder不动。
实验
我们通过两种主要实验设置评估LLaVA的指令跟随和视觉推理能力:多模态聊天机器人和ScienceQA数据集。所有模型均在8×A100 GPU上训练,采用Vicuna的超参数设置[9]。
特征对齐预训练阶段使用过滤后的CC-595K(过滤后的)子集,训练1个epoch(学习率2e-3,批量大小128);
端到端微调阶段使用LLaVA-Instruct-158K数据集,训练3个epoch(学习率2e-5,批量大小32)。更多训练细节见附录。
5.1 多模态聊天机器人
我们开发了聊天机器人演示系统来展示LLaVA的图像理解和对话能力。首先使用GPT-4原论文[36]中的测试案例(表3展示部分示例,完整案例见附录),这些案例需要深度图像理解能力。
对比实验中,我们:
-
直接引用论文中多模态GPT-4的提示词和响应
-
查询BLIP-2和OpenFlamingo模型获取响应 值得注意的是,尽管LLaVA仅使用约8万张独特图像的小型多模态指令数据集训练,但在这些案例中展现出与多模态GPT-4相似的推理能力(即使测试图像超出训练域,LLaVA仍能理解场景并遵循指令给出合理响应)。相比之下,BLIP-2和OpenFlamingo更侧重于图像描述而非遵循用户指令进行针对性回答。
量化评估
为了系统评估LLaVA的性能,我们提出了一种量化指标来衡量模型在多模态数据上的指令跟随能力。
受文献[9]启发,我们利用GPT-4来评估生成回答的质量。
具体而言,我们构建了包含图像、真实文本描述和问题的三元组。
候选模型(如LLaVA)根据问题和图像预测答案。为了提供一个近似的理论上限,我们使用纯文本GPT-4基于问题和真实文本描述生成参考预测。
在获得两个模型的回答后,我们将问题、视觉信息(以文本描述形式呈现)以及两个助手生成的回答输入评估器(即纯文本GPT-4)。
评估器从帮助性、相关性、准确性和细节程度四个维度对助手的回答进行评分,给出1到10分的综合评分,分数越高表示整体表现越好。同时,评估器还会提供详细的评估解释,以帮助我们更好地理解模型表现。我们报告了相对于使用真实文本描述作为视觉输入的纯文本GPT-4模型的相对分数。为此,我们建立了两个基准测试集来评估模型性能。
LLaVA-Bench (COCO)
从COCO-Val-2014随机选择30张图像,每张图像通过第3节数据生成流程产生三类问题(对话、详细描述、复杂推理),共90个问题。
该基准用于研究模型在一致视觉输入下的对齐行为,实验结果见表4:
实验表明:首先,指令调优使模型的用户指令跟随能力显著提升超过50分;其次,添加少量细节描述和复杂推理问题可带来7分的整体性能提升;此外,这种改进还体现在对话型问题的处理能力上,说明推理能力的提升对对话能力具有协同增强效应。最终实验证明,同时包含三类数据的训练方案可获得最佳性能,达到85.1%的综合评分。
LLaVA-Bench(开放域)测试集
为评估模型在更具挑战性任务中的表现及其对新领域的泛化能力,我们精心收集了24张涵盖室内外场景、网络表情、绘画作品、手绘草图等多样化图像,并配套构建了60个问题。每张图像均配有专家标注的精细描述和经过筛选的问题集。
如表5所示,得益于视觉指令调优技术,LLaVA相较BLIP-2(+29%)和OpenFlamingo(+48%)展现出显著优势。与使用真实标签的纯文本GPT-4相比,LLaVA在复杂推理问题上取得81.7%的优异表现,综合评分达到67.3%。
局限性分析
LLaVA-Bench(开放域)测试集专为揭示模型缺陷而设计。
如表6所示的两个典型案例:
(左)拉面案例中,要准确回答餐厅名称需具备多语言理解能力和广博的知识覆盖;描述配菜则需检索多模态网络信息;(
右)冰箱案例中,识别酸奶品牌要求模型具备高分辨率图像处理能力和丰富的商品知识。
我们发现LLaVA存在一个有趣缺陷:当被问及"是否有草莓味酸奶"时,尽管冰箱内仅有普通酸奶和草莓(并无草莓味酸奶),模型仍错误肯定。这表明LLaVA有时会将图像视为"碎片集合",未能理解复杂语义关系。我们期望该基准测试能成为发展更强大多模态大模型的研究基础,这些发现将为未来工作提供重要启示。
5.2 ScienceQA实验结果
ScienceQA基准数据集[34]包含21,000道多模态选择题,涵盖3大学科、26个主题、127个类别和379项技能。该数据集划分为12,726个训练样本、4,241个验证样本和4,241个测试样本。我们对比了以下代表性方法:带/不带思维链(CoT)的GPT-3.5(text-davinci-002)、LLaMA-Adapter[59]以及当前该数据集的最先进方法多模态思维链(MM-CoT)[61]。
实验结果显示(表7),LLaVA采用最后一层前的视觉特征,先预测推理过程再生成答案,经12轮训练后达到90.92%准确率,接近当前最优的91.68%。为探索大语言模型极限,我们采用双样本上下文学习提示GPT-4,获得82.69%准确率,较GPT-3.5的75.17%提升7.52%。值得注意的是,GPT-4的多数错误源于其反馈缺乏图像/图表等上下文信息。
我们设计两种融合方案:
(1) GPT-4补充方案——当GPT-4无法回答时采用LLaVA预测,该方案准确率90.97%,与单独使用LLaVA相当;
(2) GPT-4仲裁方案——当两者答案不一致时,要求GPT-4基于问题和两个答案重新生成最终判断。这种方法思维类似CoT但引入外部模型知识,意外地在所有问题类别上实现一致提升,最终以92.53%准确率创造新纪录。
有趣的是,无法处理图像的纯文本GPT-4反而提升了模型在含图像上下文问题上的表现。这是因为部分问题实际无需图像即可解答,GPT-4仲裁能识别此类情况并修正LLaVA错误(参见附录案例)。
据我们所知,这是首次将GPT-4用于模型集成。该发现有望推动更多利用大语言模型进行高效集成的方法研究。