系列文章目录
第一章:LoRA微调系列笔记
第二章:Llama系列关键知识总结
第三章:LLaVA模型讲解与总结
文章目录
- 系列文章目录
- [LLaVA(Large Language and Vision Assistant)](#LLaVA(Large Language and Vision Assistant))
-
- [Q: 这篇论文试图解决什么问题?](#Q: 这篇论文试图解决什么问题?)
- [Q: 论文如何解决这个问题?](#Q: 论文如何解决这个问题?)
- 具体解决方案
-
- GPT辅助的视觉指令数据生成
- LLaVa模型架构
- LLaVA训练
-
- [Stage 1: Pre-training for Feature Alignment](#Stage 1: Pre-training for Feature Alignment)
- [Stage2: Fine-tuning End-to-End](#Stage2: Fine-tuning End-to-End)
- 实验结果
LLaVA(Large Language and Vision Assistant)
LLaVA首次尝试使用仅语言的GPT-4来生成多模态语言图像指令跟随数据 language-image instruction-following data
。通过对这些生成的数据进行指令调优引入了LLaVA:大型语言和视觉助理,这是一个端到端的大型多模态模型,它将视觉编码器 (CLIP)和LLM(Llama)连接起来,用于通用的视觉和语言理解。
Q: 这篇论文试图解决什么问题?
A: 这篇论文试图解决的问题是如何在多模态领域(特别是结合视觉和语言信息)中提高大型语言模型(LLMs)的零样本(zero-shot)能力。具体来说,论文提出了以下几个关键目标:
多模态指令跟随数据生成: 由于缺乏视觉-语言指令跟随数据,论文提出了一种数据重构视角和流程,使用ChatGPT/GPT-4将图像-文本对转换为适当的指令跟随格式。
大型多模态模型开发: 通过将CLIP的视觉编码器与Vicuna语言解码器连接起来,并在生成的指令跟随视觉-语言数据上进行端到端的微调,开发了一个大型多模态模型(LMM),用于通用的视觉和语言理解。
多模态指令跟随基准测试: 为了促进未来在视觉指令跟随领域的研究,论文构建了两个具有挑战性的基准测试,涵盖了多样化的图像、指令和详细注释。
开源贡献:论文公开了GPT-4生成的视觉指令调优数据、模型代码库、模型检查点和一个视觉聊天演示。
总的来说,这篇论文的目标是探索如何通过视觉指令调优来提高LLMs在处理多模态任务时的性能,特别是在理解和执行视觉-语言指令方面的能力。
Q: 论文如何解决这个问题?
A: 论文通过以下几个关键步骤来解决多模态指令跟随的问题:
数据生成:
使用GPT-4或ChatGPT生成多模态指令跟随数据。
多模态模型架构:
开发了一个名为LLaVA(Large Language and Vision Assistant)的端到端训练的大型多模态模型。该模型连接了CLIP的视觉编码器和Vicuna语言解码器,并通过一个可训练的投影矩阵将视觉特征映射到语言模型的词嵌入空间。
训练过程:
分为两个阶段进行训练:
第一阶段:预训练以实现特征对齐。使用过滤后的CC-595K图像-文本对,将图像转换为指令跟随数据,并通过最大化似然来训练投影矩阵,使图像特征与预训练的语言模型词嵌入对齐。
第二阶段:端到端微调。保持视觉编码器权重固定,更新投影层和语言模型的预训练权重,以进一步提高模型在多模态任务上的性能。
实验与评估:
在两个主要的实验设置下评估LLaVA的性能:多模态聊天机器人和ScienceQA数据集。
提出了LLaVA-Bench,这是一个包含多样化图像、指令和详细注释的基准测试,用于评估模型在多模态指令跟随任务上的能力。
具体解决方案
GPT辅助的视觉指令数据生成
基于广泛存在的图像对数据,利用ChatGPT/GPT-4进行多模态指令跟随数据收集。
首先,将图像转换为文本描述(如标题和边界框),然后生成一系列问题(Xq)来指导助手(Assistant)描述图像内容(Xc)。这个过程创建了多模态指令跟随的格式,例如:Human: Xq Xv Assistant: Xc。
- Conversation 对话: 我们设计了一个对话,在助理和一个询问这张照片问题的人之间进行。回答的语气就好像助理正在看图像并回答问题一样。关于图像的视觉内容有一系列不同的问题,包括对象类型、对象计数、对象动作、对象位置、对象之间的相对位置。只考虑有明确答案的问题。
- Detailed description 详细的描述: 为了包含丰富而全面的图像描述,我们创建了一个带有这种意图的问题列表。我们提示GPT-4,然后整理列表。对于每个图像,我们从列表中随机抽取一个问题,让GPT-4生成详细的描述。
- Complex reasoning 复杂的推理: 以上两种类型关注的是视觉内容本身,在此基础上我们进一步打造深度推理题。答案通常需要遵循严格的逻辑,一步一步地推理。
我们使用COCO图像并生成三种类型的指令跟随数据。对于每种类型,我们首先手动设计一些示例。它们是我们在数据收集过程中唯一的人工注释,并被用作在上下文学习中查询GPT-4的prompt示例。
我们总共收集了158K个独特的语言图像指令遵循样本,其中对话58K,详细描述23K,复杂推理77k。
LLaVa模型架构
- X v {{X}_{v}} Xv:image;
- Vision Encoder g ( ∗ ) {g(*)} g(∗):CLIP visual encoder ViT-L/14;
- Z v {Z_v} Zv:实验中考虑了最后一层Transformer前后的网格特征;
- Progection W W W: 投影矩阵(简单投影方案是轻量级的,它允许我们快速迭代以数据为中心的实验。还可以考虑更复杂的方案来连接图像和语言表征,例如Flamingo中的门状交叉注意和BLIP-2中的Q-former。
H v = W ⋅ Z v , w i t h Z v = g ( X v ) {{H}{v}}=W\cdot {{Z}{v}},with\text{ }{{\text{Z}}{v}}=g({{X}{v}}) Hv=W⋅Zv,with Zv=g(Xv)
LLaVA训练
Stage 1: Pre-training for Feature Alignment
- 将CC3M过滤到595K图像-文本对。使用GPT辅助的视觉指令数据生成方法中描述的方式将这些数据对转换为跟随指令数据。
- 要求助手对图像进行简要描述。最基本的预测答案 X a X_a Xa是原始的标题。在训练中,我们保持视觉编码器和LLM权值不变 ,只训练参数 θ = W θ=W θ=W(投影矩阵)。这样,图像特征 H v H_v Hv可以与预训练的LLM词嵌入对齐。这个阶段可以理解为为冻结的LLM训练一个兼容的视觉标记器(visual tokenizer)。
Stage2: Fine-tuning End-to-End
我们始终保持视觉编码器权值不变 ,并不断更新投影层和LLM的预训练权值;即,可训练的参数是 θ = { W , Φ } \theta =\{W,\Phi \} θ={W,Φ}。我们考虑两个特定的用例场景:
- 多模式聊天机器人(Multimodal Chatbot): 我们通过对COCO的158K语言图像指令跟踪数据进行微调来开发聊天机器人。在这三种类型的响应中,会话是多回合的,而其他两种是单回合的。它们在训练中被统一采样。
- Science QA: 我们在ScienceQA基准上研究了我们的方法,ScienceQA是第一个大规模的多模态科学问题数据集,它用详细的讲座和解释注释了答案。每个问题都以自然语言或图像的形式提供上下文。该助手以自然语言提供推理过程,并从多个选项中选择答案。对于训练过程,我们将数据组织为单回合对话,问题和上下文作为 X i n s t r u c t {{X}_{instruct}} Xinstruct,推理和答案作为 X a X_a Xa。
实验结果
LLaVA在8*A100上完成训练,在Pre-training阶段,模型在CC-595K数据上训练,batch size为128,epoch为1;在Fine-tuning阶段,模型在LLaVA-Instruct-158K数据上训练,batch size为32,epoch为3。
尽管LLaVA是用一个小的多模态指令跟随数据集(~ 80K唯一图像)训练的,但它展示了与多模态GPT-4非常相似的推理结果。虽然许多图像是LLaVA的域外图像,但LLaVA仍然能够理解场景并按照问题说明提供合理的响应。相比之下,BLIP-2和OpenFlamingo侧重于描述图像,而不是按照用户的指示以适当的方式回答。