第一章 为什么会有 LLaVA-1.5作者真正想回答的问题其实是到底应该怎样训练一个优秀的 Large Multimodal ModelLMM这听起来很普通但实际上这是2023年多模态领域最核心的问题。1.1 当时的大模型领域是什么局面2023年GPT-4(V)还没有开放开源多模态模型开始快速发展。那时已经有很多代表性模型BLIP-2、InstructBLIP、MiniGPT-4、Flamingo、LLaVA、Qwen-VL但每个模型都有自己的特点。如BLIP-2优点图文对齐很好、Q-Former设计巧妙、Academic VQA成绩很好缺点不擅长聊天、对开放式问题回答一般InstructBLIP在BLIP-2基础上加入Instruction Tuning。VQA成绩继续提高。但是模型越来越像考试机器。例如图片里一个人在骑自行车。用户问Describe the image.模型答A man.因为训练集中很多VQA都是一句话回答。模型学会了能短回答就绝不长回答。LLaVA贡献第一次提出Visual Instruction Tuning它让模型真正学会了聊天。例如用户问What is happening? 模型可以回答几百字甚至还能推理。缺点用户问Is the traffic light green?模型可能回答Yes, the image shows... 实际上答案应该只有 “Green.” 或 “Yes.”所以LLaVA聊天能力很强。但是Academic Benchmark反而不好。于是出现一个非常奇怪的现象。作者总结如下模型聊天能力VQA能力LLaVA很强一般InstructBLIP很强考试很强两者兼顾没有人做到于是作者提出了一个疑问为什么没有模型能够同时兼顾这两种能力1.2 大家当时认为原因是什么很多研究者给出了各种解释。例如有人说是因为LLaVA没有Q-Former / Connector太简单 / 训练数据太少 / Vision Encoder太弱。还有人说要预训练几十亿图片。例如InstructBLIP129M Image-Text Qwen-VL1.4 Billion Image-Text所以大家形成了一个共识模型差是因为训练得还不够大。1.3 作者却提出了一个完全不同的观点作者认为真正的问题并不是数据不够而是训练方式没有设计好。论文没有说LLaVA结构不好。也没有说Q-Former不好。作者真正说的是先别急着设计越来越复杂的模型。先研究一下到底哪些设计真的有用。所以论文用了一个词Systematic Study系统研究不是提出新网络而是控制变量一点一点改。例如只改Connector只改Prompt只加VQA看看有没有提升。最后再提高分辨率看看是不是继续提升。这种实验方式其实更接近科学研究而不是不停堆模块。1.4 作者的研究路线整篇论文主线整篇论文其实就是围绕三个问题展开。问题一是不是一定需要复杂的Q-Former作者实验不用。MLP都可以很好。问题二是不是一定要几亿图文数据作者实验不用。几十万也够。问题三是不是一定要设计新的网络作者实验不用。原来的LLaVA稍微改一下就行。于是整篇论文最终变成LLaVA │ ├── Connector改一下 ├── Prompt改一下 ├── 数据改一下 ├── 分辨率改一下 ▼ LLaVA-1.5整个网络几乎没有变。真正变化的是训练Recipe训练配方。这也是论文标题Improved Baselines为什么叫Baseline因为作者认为以后大家比较模型的时候应该先和一个训练得足够合理的基础模型比较而不是和一个存在明显训练缺陷的模型比较。1.5 Figure 1 到底想表达什么Figure 1 浓缩了整篇论文的思想表达了三个观点。观点1性能LLaVA-1.5几乎所有Benchmark 都是SOTA。说明不是网络复杂才厉害而是训练方法合理。观点2数据效率作者比较BLIP-2129M → InstructBLIP129M → Qwen-VL1.4B → LLaVA-1.5558K证明别人用了几亿张图片我只用了几十万结果比他们还好。所以真正厉害的不是数据量而是数据有没有训练对。观点3模型复杂度作者最后强调整个LLaVA-1.5真正新增的东西只有两项① Linear Projection → MLP Projection② 增加Academic VQA数据没有Q-Former、Perceiver、Cross Attention Stack和没有的复杂Adapter。这其实是在挑战当时的主流观点复杂模型 ≠ 更好的多模态模型。1.6 论文贡献LaVA-1.5不只是把Linear改成了MLP实际上LLaVA-1.5真正贡献并不是提出了新的网络而是提出了一套更合理的多模态训练范式Training Recipe。作者通过严格的控制变量实验发现影响多模态模型性能的关键因素并不一定是更复杂的跨模态结构或海量预训练数据而是训练流程是否合理、数据组成是否平衡、提示词是否明确以及模型是否能够充分利用视觉信息。因此LLaVA-1.5几乎没有改变LLaVA的整体架构却仅通过四项简单改动——使用MLP替代Linear Connector、加入带格式约束的Response Format Prompt、补充Academic VQA数据以及提高输入分辨率——就在11个主流Benchmark上取得了当时的最佳性能同时训练数据规模仍远小于InstructBLIP和Qwen-VL。3.2 响应格式提示这一章不要理解成一句 Prompt Engineering而是把它理解成作者重新定义了 Instruction Tuning 中输出格式应该如何学习。很多人第一次看都会觉得就是在问题后面加了一句话Answer the question using a single word or phrase.为什么就能提升这么多实际上这背后涉及LLM 是如何学习输出格式Output Format的问题。1. 现象与问题多模态模型的“回答习惯”固化作者在对比 LLaVA 和 InstructBLIP 时发现它们因为训练数据的侧重养成了两种截然不同的、甚至有些僵化的“回答习惯”LLaVA倾向长回答训练集多为描述性指令导致它像个聊天机器人。即使问简单的What color?它也会回答完整的句子The object is red.甚至强行加解释。InstructBLIP倾向短回答大量使用了 VQA视觉问答等短答案数据集。导致它把“看到问题”和“输出短答案”强绑定。哪怕用户明确要求Is this unusual? Please explain in detail.它也可能只冷冰冰地蹦出一个Yes.完全无视了“解释”的要求。2. 根本原因Prompt 中“输出格式”的模糊性 (Ambiguous Prompts)作者指出InstructBLIP 出现的退化变成无情的考试机器根本原因不在于 VQA 数据本身而在于 Prompt 缺乏对“输出格式”的明确规定。在传统模型训练中模型优化的核心是“预测下一个 Token”。假设训练集中同时存在长句Describe task和短句VQA task数据当 Prompt 只给出Q: What color?时LLM 并不知道用户到底想要Yellow还是The shirt is yellow。只能依靠数据的统计规律去“猜”最终导致逻辑混淆形成了遇到提问就强行短回答的条件反射。3. 架构差异为什么 LLaVA 能破局而 InstructBLIP 做不到既然发现了问题为什么 InstructBLIP 很难通过修改 Prompt 来纠正这与其模型微调策略有关InstructBLIP冻结 LLM仅训练 Q-Former它的 LLM 是冻结的只能靠几亿参数的 Q-Former 输出不同的视觉 Token 去试图改变百亿参数 LLM 的生成风格。这类似于 Prefix Tuning控制能力非常有限。LLaVA全参数微调 LLMLLaVA 在训练时整个 VicunaLLM都参与微调。因此当模型看到特定的格式指令时是 LLM 本身学会了主动控制输出长度和风格而不是依赖外挂模块。4. 解决思路与核心价值引入“格式指令” (Format Instruction)LLaVA-1.5 的解决方法非常简单直接——将“输出格式”正式纳入 Instruction 的一部分。例如在问颜色的问题后加上明确的限制What is the color of the shirt?Answer the question using a single word or phrase.仅仅加了这一句话LLaVA 就立刻从长篇大论转变为精准输出单个词如Yellow。 这一思想的重大意义这是 LLaVA-1.5 带来的最重要的方法论升级。以前的 Instruction Tuning 主要局限于Task Instruction任务指令即告诉模型“做什么”如 Describe, Explain, Count。 LLaVA-1.5 第一次强调了Format Instruction格式指令的重要性即告诉模型“怎么回答”如Answer shortly, Output JSON, Use bullet points。这一思想证明了Instruction 不仅应该决定“回答什么内容”还必须决定“以何种形式表达”。后来 GPT-4V、Gemini 等现代多模态大模型广泛支持输出 JSON、Markdown 表格等正是建立在这一逻辑基础之上。本节总结**Response Format Prompt并不是简单地在问题后面增加一句提示而是把输出格式正式纳入了Instruction的一部分。作者认为LLaVA与InstructBLIP难以同时兼顾长回答和短回答并不是因为模型结构不同而是因为传统VQA数据中的Prompt没有明确规定输出格式导致模型只能依赖数据分布去猜测应该回答长句还是短句从而形成了偏向某一种回答风格的行为模式。LLaVA-1.5通过加入诸如Answer the question using a single word or phrase.这样的格式指令并同时微调整个LLM使模型学会将回答长度和表达形式也视为用户指令的一部分而不仅仅关注回答内容。这实际上扩展了Instruction Tuning的定义Instruction不仅决定回答什么还决定如何回答。3.3 Improved Vision-Language Connector为什么LLaVA不用BLIP-2的Q-Former为什么Linear换成MLP就能提升性能1. 回顾LLaVA中的ConnectorLLaVA的整体流程是Image │ CLIP ViT-L/14 Image Features │Linear Projection Visual Tokens │VicunaLinear Projection就是 Vision-Language Connector。作用把视觉特征映射到LLM的Embedding空间。不会重新理解图像也不会做Cross-Attention。2. 作者觉得Linear不够作者认为视觉空间与语言空间之间存在较大的分布差异。Linear本质上只能完成一次线性变换但视觉特征到语言Embedding的映射本身可能是非线性的。如假设CLIP中汽车、公交车、卡车三者距离很近因为它们外观相似。而LLM中汽车、司机、道路可能更接近因为语言更关注语义关系。仅靠一次线性变换很难完成这种空间对齐。3. 作者的方法作者没有引入Q-Former因为其中包含 Self-Attention、Cross-Attention、Learnable Queries参数量较大训练成本高。且CLIP本身已经有很强的视觉表示能力不一定需要再通过Q-Former重新提取视觉信息。因此希望Connector尽量简单只负责映射而不是重新编码视觉特征。作者把Linear换成了一个两层MLP结构CLIP Feature → Linear → GELU → Linear → Vicuna Embedding论文称之为2-layer MLP connector。比Linear多了一层隐藏层和一个GELU激活函数可以学习非线性映射。没有设计更多层是因为如果MLP设计得很深那么提升来自网络更深参数更多训练更久就很难分析。因此作者只增加最小改动Linear → Linear GELU Linear这样实验更容易说明非线性映射本身就是有效的。4. 为什么MLP能够提升效果MLP不是让模型看得更清楚而是让视觉信息更容易被LLM理解。以前现在CLIP提取的视觉信息没有变化。MLP优化的是跨模态对齐cross-modal alignment而不是视觉编码能力。5. 与BLIP-2、LLaVA对比模型Connector是否重新编码视觉信息BLIP-2Q-Former是LLaVALinear否LLaVA-1.52-layer MLP否可以看到LLaVA-1.5并没有走BLIP-2的路线而是在保持简单结构的前提下提高映射能力。本节总结本节核心贡献不是提出新的跨模态结构, 而是证明对于已有较强视觉表示能力的CLIPConnector主要承担的是跨模态映射而不是视觉理解一个简单的两层MLP就足以比单层Linear学习更好的视觉-语言空间对齐而无需引入复杂的Q-Former。进一步支持了论文观点提升多模态模型性能不一定需要更复杂的结构合理的训练设计和适度的非线性映射同样能够带来明显收益。3.4 Academic-task-oriented Data这一节回答的问题是为什么LLaVA-1.5只增加了一部分数据Benchmark性能却提升很多1. LLaVA原来数据存在的问题LLaVA的数据组成主要是CC3M等图文数据(预训练)、GPT生成的Visual Instruction Data(微调)数据特点偏开放式对话Open-ended Conversation问题没有标准答案更强调聊天能力LLaVA在聊天Benchmark上表现很好但Academic VQA一般。因为Academic Benchmark更关注精确回答。这些任务需要精确识别、OCR、计数、属性识别而不是长篇描述。2. 作者的做法补充了一类新的数据主要包括VQA、OCR、Chart/Diagram、Science QA等学术任务把这类数据称为Academic-task-oriented Data。作者采用混合训练mixed instruction tuning。Conversation Data Academic Data共同参与微调使模型既保留聊天能力又能提升VQA表现。作者强调不是数据越多越好而是数据类型要平衡。如果数据类型单一即使规模很大也未必能覆盖各种能力。相比之下增加任务多样性更重要。本节总结LLaVA-1.5没有大量增加训练数据而是在原有对话数据基础上引入VQA、OCR、ScienceQA等学术任务数据。这些数据主要提升模型的精确识别和问答能力而开放式对话数据继续保持模型的聊天能力。作者希望通过不同任务类型的互补而不是单纯扩大数据规模实现能力的全面提升。3.5 High Resolution为什么要支持高分辨率又为什么不能直接把图片放大输入CLIP1. 为什么需要高分辨率LLaVA使用CLIP ViT-L/14输入分辨率是336×336。很多任务需要更多细节如OCR、图表理解、小目标识别、高分辨率场景整张图片 ──────────── 一个很小的路牌 很小的路牌经过缩放后路牌上的字几乎看不清模型自然无法正确识别。但直接把输入改成672×672不可行原因1、CLIP是在固定分辨率下训练的如果直接改变输入分辨率模型性能通常会下降。2、计算量增长太快Token数量变成4倍Attention计算约增加16倍。2. 方法把图片切成多个子图并保留整张图作者没有直接放大输入而是采用了Image Grid的方法。先根据预设的分辨率将图片缩放和填充padding然后再进行切分。每一块仍然保持CLIP支持的输入尺寸。为保留整体语义不仅输入四个局部还保留了一张缩放后的全局图。最终输入变成Global Image Patch1 Patch2 Patch3 Patch4论文称这种做法为Global保留整体语义 Local Representation保留局部细节。4. 整个流程整个流程可以画成Original Image │ ┌─────┴─────┐ Global Image Grid Image (4 patches) └─────┬─────┘ │ CLIP │ Feature Sequence │ MLP Connector │ VicunaCLIP分别提取全局特征、每个局部特征最后拼接成一个更长的视觉Token序列。LLM可以同时利用全局信息和局部细节本节总结LLaVA-1.5没有直接提高CLIP输入分辨率而是采用Global Image Grid策略一方面保留一张缩放后的全局图获取整体语义另一方面将原图切分成多个局部区域提取细节特征。最终将所有视觉特征拼接后输入LLM实现了整体信息与局部细节的结合。这一方法避免了直接提高分辨率带来的CLIP适配问题和高昂计算成本同时显著提升了OCR、小目标识别和图表理解等任务的性能。一个值得注意的细节很多人会认为Image Grid就是把图片裁剪后分别送入CLIP。实际上更准确地说它是多视角输入multi-view input。因为模型最终看到的不是一张图片而是1张全局视图 多个局部视图LLM会综合这些视觉Token进行推理而不是分别处理后再融合。这也是后来LLaVA-NeXT、InternVL、MiniCPM-V等模型广泛采用的思路通过增加视觉视角而不是修改视觉编码器本身来提升高分辨率理解能力。