论文分享|NeurIPS2023|LLaVA-视觉指令微调

分享一篇以LLM为核心的多模态语言模型工作LLaVA,仅仅通过在CLIP和Vicuna间使用一个线性投射层连接的方式完成多模态聊天。

论文题目:Visual Instruction Tuning

来源:NeurIPS2023/威斯康星大学麦迪逊分校

方向:LLM、MLLM

开源地址:https://github.com/haotian-liu/LLaVA

摘要

使用机器生成的指令遵循数据对大型语言模型(LLM)进行指令微调已被证明可以提高新任务的零样本能力,但这种思想在多模态领域的探索较少。我们首次尝试仅使用GPT-4的语言模型来生成多模态语言-图像指令跟随数据。通过利用这些生成的数据进行指令微调,我们引入了LLaVA:大型语言和视觉助手(Large Language and Vision Assistant),这是一个端到端训练的大型多模态模型(LMM Large Multimodal Models**)**,它连接了视觉编码器和LLM,用于通用的视觉和语言理解。

为了便于未来对视觉指令遵循的研究,我们构建了两个具有挑战性的面向应用任务的评估基准。我们的实验表明,LLaVA显示出令人印象深刻的多模态聊天能力,有时在没看过的图像/指令上表现出堪比多模态GPT-4的行为,在混合多模态指令跟随数据集上,得分相当于GPT-4的85.1%。当对科学QA进行微调时,LLaVA和GPT-4的协同作用达到了92.53%的最先进的准确率。我们开源了GPT-4生成的视觉指令微调数据模型代码

GPT辅助的视觉指令数据生成

大量图像-标题对易获取,比如CC和LAION,但是指令遵循数据较少

给定一个图像-标题对 (𝑋𝑣,𝑋𝑐) ,最简单的构造指令数据方式为,先提示GPT4得到一系列的问题 𝑋𝑞 ,之后就可以组成指令遵循数据: 𝐻𝑢𝑚𝑎𝑛:𝑋𝑞𝑋𝑣<𝑆𝑇𝑂𝑃>𝐴𝑠𝑠𝑖𝑠𝑡𝑎𝑛𝑡:𝑋𝑐<𝑆𝑇𝑂𝑃> ,尽管很简单,但是这种方式不管是指令还是回复都缺乏多样性推理深度。这种方式称为简单扩展方式

为了解决这两个问题,我们使用了GPT4和ChatGPT中的语言模型作为强大的教师。为了将图像转换为可以用于提示GPT的纯文本,我们使用了两种符号表示:

  1. 从不同方面描述图像的标题
  2. Bounding Box,包含每个box的坐标以及相应的概念文本

利用这些符号表示,我们使用COCO的图像生成了三种类型的指令遵循数据,如下图所示。对每种类型,我们首先人工设计了一些样例作为种子样例来提示GPT-4,以下是三种类型:

  1. 对话(Conversation)。我们设计了一个AI助手和一个问关于这张图像的人之间的对话。答案的语气就好像AI助手看到了图像并回答问题。本文对每张图像的视觉内容提出了一组不同的问题,包括对象类型、对象计数、对象动作、对象位置、对象之间的相对位置,最终只考虑有明确答案的问题。
  2. 详细描述(Detailed Description)。为了为每张图像引入丰富且全面的描述,我们利用GPT4创建了一个问题列表,对每张图像,我们随机从问题列表中选取一个问题提示GPT4生成详细的描述。
  3. 复杂推理(Complex Reasoning)。这种问题的答案需要符合逻辑的一步一步的推理流程

img

我们创建了158K不同的语言-图像指令遵循数据,包含58K的对话,23K的详细描述,77K的复杂推理。早期实验中,本文同时使用了ChatGPT和GPT4,同时发现GPT4能够一致地提供更高质量的指令遵循数据,比如空间推理。

视觉指令微调

架构

本文使用Vicuna作为LLM 解码器,因为它在公开模型中取得了最好的指令遵循能力。CLIP ViT-L/14作为视觉编码器。本文使用了一个简单的线性层来将图像特征转换到词语编码空间,从而可以将转换后的视觉表征token序列与问题的文本token序列拼接起来,输入语言模型得到回复。

img

训练

为每张图像,我们构建了多轮对话数据 (𝑋𝑞1,𝑋𝑎1…,𝑋𝑞𝑇,𝑋𝑎𝑇) ,具体每一轮的query构建方式如下,第一轮包含了图像和问题文本(token顺序随机),之后每一轮仅包含问题文本。

img

我们使用自回归训练目标来进行指令微调:

img

具体来说是如下的指令序列格式:

img

本文提出了两阶段指令微调策略:

  • 阶段1:特征对齐预训练(Pre-training for Feature Alignment):从CC3M中过滤出595K条图文对,使用简单扩展方式得到相应的简单指令微调数据。利用这些数据,冻住LLM和CLIP,只训练投射层,从而将转换后的视觉特征与LLM的词编码对齐。(注意,这里的预训练和普通LLM的预训练差异还是很大的,本质上其实是单轮对话数据微调
  • 阶段2:端到端微调(Fine-tuning End-to-End):冻住CLIP,训练投射层和LLM,本文考虑了两种具体使用场景:
  • 多模态聊天机器人:使用158K指令数据进行微调,其中对话数据为多轮,其他两种数据为单轮,均匀采样进行训练。
  • 科学问答:在ScienceQA基准上微调。

实验

所有模型都使用8张A100进行训练,和Vicuna超参保持一致。我们在过滤后的CC-595K子集上对模型预训练1个epoch,学习率为2e-3,批大小为128。并对提出的LLaVA-Instruct-158K数据集进行微调3个epoch,学习率为2e-5,批大小为32。

多模态聊天机器人

以下展示了一个demo,LLaVA对于没见过的图像仍然展现出比三个LMM更好的回答效果

img

在两个评估基准上,使用GPT4对回复进行自动评估,使用所有数据进行微调的LLaVA都取得了领先效果。LLaVA-Bench (COCO)从COCO-Val-2014中构建,LLaVA-Bench (In-the-Wild)从各种类型图像中构建。

img

局限性

  1. 部分视觉问题可能需要检索增强辅助回答(无法准确回复某道菜对应的餐馆)
  2. 有时LLaVA会简单把图像token序列简单看成bag of patches,无法捕捉到复杂语义(无法区分“草莓味酸奶”和“草莓和酸奶”)

img

科学问答

LLaVA自身表现良好,结合GPT4可以互相取长补短。此外有趣的是,不依赖于图像的GPT4语言模型本身已经可以获得很好的效果。

img

科学问答消融实验

  • 视觉特征:使用CLIP的倒数第二层的表征比最后一层的表征表现更好,这可能与CLIP最后一层更关注全局特征以及抽象属性有关,而倒数第二层则可以更多地关注局部特征,对于具体的图像细节更有用。
  • 思维链:类似CoT的先推理的提示策略,收敛速度快,但不能提升太多性能。
  • 预训练:跳过预训练直接微调,发现效果会变差。
  • 模型大小:模型越大效果越好。

img


大家好,我是NLP研究者BrownSearch,如果你觉得本文对你有帮助的话,不妨点赞收藏支持我的创作,您的正反馈是我持续更新的动力!如果想了解更多LLM/检索的知识,记得关注我!

<think>嗯,用户是一位研一计算机专业的学生,目标明确要成为多模态大模型方向的AI算法工程师。从ta的提问方式看,已经具备一定专业认知,引用的资料也显示ta做过初步调研。不过研一阶段可能对具体技术路径还比较模糊,需要更落地的学习方案。 用户上次提问时我给出了三年规划,这次ta特别提到要参考站内引用[1]-[5],说明更关注具体技术细节和资源。尤其引用[4]那本《多模态大模型:技术原理与实战》的目录很有价值,应该作为主线参考。用户隐含需求可能是:如何把厚厚的理论教材拆解成可执行的阶段性任务。 注意到用户两次都强调“系统性学习”,这很关键。多模态涉及的知识树太庞大,容易陷入碎片化学习。需要帮ta建立“理论-代码-实战”的闭环:比如学完CLIP论文[^1]立即用Hugging Face实现,再在COCO数据集上做zero-shot测试。 用户引用的资源里有个宝藏是OpenFlamingo项目[^1],这是Meta开源的视觉语言模型,比纯看论文更直观。研一阶段直接跑通它的demo会很有成就感,建议列为必做项。另外医疗影像方向可能被低估了,引用[5]提到的视觉-触觉-语言多模态在手术机器人中应用前景很好,如果用户实验室有相关资源值得重点投入。 ta的焦虑点应该是时间分配:既要打基础(数学、深度学习),又要追前沿(Diffusion、LLaVA)。解决方案是“三明治学习法”:基础模块(30%)+核心论文精读(40%)+项目实战(30%),用PyTorch Lightning这类框架减少工程负担。 最后提醒自己:避免堆砌资源!用户需要的是过滤器。比如数据集只推荐最具代表性的LAION-5B和AudioSet,框架重点标注PyTorch和DeepSpeed——太多选择反而增加决策负担。</think>基于你的研一阶段和职业目标,以下是系统学习多模态技术的路径规划和资源推荐,结合核心技术和引用资源进行优化: --- ### **系统性学习路径**(分阶段推进) #### **阶段1:基础巩固(1-3个月)** 1. **数学与编程核心** - 线性代数:矩阵分解($A=U\Sigma V^T$)、张量运算 - 概率论:贝叶斯推断、变分自编码器(VAE)的数学基础 - Python高阶:异步计算、元编程(如`__metaclass__`) - 框架入门:PyTorch动态图机制与自动微分 2. **单模态模型精研** - 视觉:ViT模型(`transformers.ViTModel`)的Patch Embedding实现 - 文本:BERT的Masked Language Modeling损失函数: $$ \mathcal{L}_{MLM} = -\sum_{i \in M} \log P(x_i | x_{\backslash M}) $$ - 音频:VGGish的音频特征提取架构[^1] --- #### **阶段2:多模态核心技术(4-9个月)** 1. **融合方法实践** - **早期融合**:特征拼接(`torch.cat([text_feat, img_feat], dim=1)`) - **晚期融合**:多模态集成学习(如模型投票)[^2] - **联合建模**:复现CLIP的对比学习: ```python # Hugging Face实现示例 from transformers import CLIPModel model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32") ``` - 损失函数:$ \mathcal{L}_{\text{contrast}} = -\log \frac{\exp(\text{sim}(I,T)/\tau)}{\sum_{k}\exp(\text{sim}(I_k,T)/\tau)} $[^1] 2. **领域应用开发** - 多模态问答:使用`ViltForQuestionAnswering`在VQA-v2数据集微调 - 情感分析:融合文本+音频特征(如CMU-MOSEI数据集) - 医疗影像:基于CheXpert数据的病理报告生成[^5] --- #### **阶段3:工业级实战(研二起)** 1. **大模型训练优化** - 分布式训练:DeepSpeed的ZeRO-3策略 - 高效微调:LoRA($\Delta W = BA$, $B \in \mathbb{R}^{d \times r}$) - 模型压缩:知识蒸馏($ \mathcal{L}_{KD} = \tau^2 \sum p_T \log(p_S/p_T) $) 2. **部署与推理** - 模型量化:TensorRT INT8校准 - 服务化:Triton推理服务器部署多模态pipeline --- ### **关键资源推荐** #### **1. 教材与课程** | 资源 | 内容重点 | 链接/来源 | |------|----------|-----------| | 《多模态大模型:技术原理与实战》 | 融合方法/部署优化 [^4] | 机械工业出版社 | | Stanford CS330 | 多任务与元学习 | 官网公开课 | | AWS《机器学习生产化工程》 | 工业级部署 | AWS Training | #### **2. 数据集** | 名称 | 模态 | 规模 | 用途 | |------|------|------|------| | **COCO** | 图文对 | 33万+ | 目标检测/图文匹配 | | **LAION-5B** | 图文对 | 58亿 | 预训练[^1] | | **AudioSet** | 音频+标签 | 200万 | 事件分类 | #### **3. 开源项目** - **OpenFlamingo**:支持图像-文本生成的类GPT模型 [^1] ```bash git clone https://github.com/mlfoundations/open_flamingo ``` - **LLaVA**:视觉语言助手(类似多模态ChatGPT) - **Hugging Face Transformers**:直接调用CLIP/Flamingo等模型 #### **4. 论文精读清单** 1. **奠基性工作**: - CLIP (ICML 2021) : 图文对比学习 - ViLT (ICML 2021) : 轻量级多模态Transformer 2. **前沿进展**: - LLaVA (NeurIPS 2023) : 视觉指令微调 - ImageBind (CVPR 2023) : 六模态统一表征 --- ### **能力培养矩阵** | 能力维度 | 具体目标 | 实现方式 | |----------|----------|----------| | **理论基础** | 理解多模态对齐原理 | 精读CLIP/ImageBind论文[^1][^3] | | **工程能力** | 千卡集群训练管理 | 阿里云PAI实战[^2] | | **创新思维** | 设计融合架构 | 实验室科研项目(如医疗多模态)[^5] | | **领域知识** | 垂直场景应用 | 参与自动驾驶/医疗影像项目 | --- ### 相关问题 1. 多模态模型训练中如何处理不同模态的数据量差异? 2. 如何评估多模态模型在跨模态检索任务中的性能? 3. 边缘设备部署多模态模型时,有哪些轻量化技术可选? 4. 多模态大模型在医疗诊断中的伦理风险如何规避? 5. 如何构建合规的大规模多模态预训练数据集?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值