LLaVA与miniGPT4

概述

LLaVA(Large Language and Vision Assistant)和miniGPT4是两阶段训练的视觉-语言模型代表,它们通过连接预训练的视觉编码器和大语言模型,实现了多模态理解能力。本章节深入分析这两个模型的核心架构和训练方法。

1. LLaVA架构详解

1.1 整体架构

LLaVA采用简洁的”视觉编码器 + 投影层 + LLM”架构:

图像 → Vision Encoder (ViT-L/14) → 投影层 (MLP) → LLM (Vicuna/LLaMA)
                                        ↓
文本提示 → Tokenize → 拼接 → LLM → 文本响应

1.2 MLP投影层设计

投影层的作用: 将视觉特征映射到语言模型的嵌入空间

架构:

class ProjectionLayer(nn.Module):
    def __init__(self, vision_dim, llm_dim):
        self.linear1 = nn.Linear(vision_dim, llm_dim)
        self.activation = nn.ReLU()
        self.linear2 = nn.Linear(llm_dim, llm_dim)
    
    def forward(self, x):
        x = self.linear1(x)
        x = self.activation(x)
        x = self.linear2(x)
        return x

维度对应:

  • ViT-L/14输出:257 tokens × 1024维
  • 投影后:257 tokens × 4096维(匹配LLaMA维度)

1.3 视觉编码器

使用OpenAI的CLIP ViT-L/14作为视觉编码器:

参数
图像分辨率224×224
Patch Size14×14
Transformer层数24
隐藏维度1024
注意力头数16
参数量~428M

CLIP预训练使视觉编码器具备良好的语义理解能力。

1.4 大语言模型

使用Vicuna(基于LLaMA的对话模型)作为语言decoder:

模型参数量上下文长度
LLaVA-1.07B/13B2048
LLaVA-1.57B/13B4096

2. 两阶段训练策略

2.1 第一阶段:语言-图像对齐预训练

目标: 让投影层学习将视觉特征映射到语言空间

数据: CC3M数据集(约600K图像-文本对)

训练配置:

# 阶段1配置
batch_size: 256
learning_rate: 1e-3
epochs: 1
optimizer: AdamW
temperature: for contrastive loss

训练要点:

  • 冻结视觉编码器和LLM参数
  • 仅训练投影层MLP
  • 使用对比学习损失(可选)

2.2 第二阶段:指令微调

目标: 赋予模型多模态对话能力

数据: LLaVA-Instruct-150K数据集

数据构成:

类型数量描述
对话数据90K多轮对话
详细描述40K图像详细描述
复杂问答20K需要推理的问题

训练配置:

# 阶段2配置
batch_size: 32
learning_rate: 2e-5
epochs: 3
optimizer: AdamW
weight_decay: 0.01

训练范围:

  • 投影层:可训练
  • LLM:可训练(LoRA/QLoRA可选)
  • 视觉编码器:冻结或轻度微调

3. miniGPT4架构详解

3.1 核心设计理念

miniGPT4的目标是用最少的训练成本实现类似GPT-4的多模态能力:

图像 → EVA (ViT) → Q-Former → LLM (Vicuna)
                         ↓
                    冻结 EVA
                    冻结 LLM
                    仅训练 Q-Former

3.2 Q-Former跨模态连接

miniGPT4使用BLIP-2的Q-Former作为跨模态桥梁:

Q-Former结构:

  • 12个Transformer层
  • Cross-attention层连接视觉特征
  • 32个可学习的query tokens

信息流动:

视觉特征 → Cross-attention → Query features → 线性映射 → LLM嵌入

3.3 EVA视觉编码器

EVA是基于CLIP的大规模视觉Transformer:

特性EVA-B/16EVA-L/14
参数量86M304M
图像分辨率224/448224
预训练数据LAION-2BCLIP

EVA相比CLIP具有更好的视觉理解能力。

3.4 训练策略对比

阶段LLaVAminiGPT4
第一阶段CC3M + 投影层训练BLIP-2预训练权重 + Q-Former训练
第二阶段LLaVA-Instruct微调对话数据微调

4. 对齐策略分析

4.1 模态对齐的核心问题

视觉编码器产生的特征空间与语言模型的嵌入空间存在差异:

问题:

  • 视觉特征:连续、高维、空间结构
  • 文本特征:离散、语义抽象

4.2 投影方法对比

方法代表模型参数量对齐质量
MLP投影LLaVA40M中等
Q-FormerminiGPT4185M较好
AdapterLLaMA-Adapter8M可接受
LoRAQLoRA-LLaVA<1M较好

4.3 轻量化对齐技术

LLaMA-Adapter方法:

# Adapter结构
class AdapterLayer(nn.Module):
    self.lora_down = nn.Linear(dim, r)
    self.lora_up = nn.Linear(r, dim)
    self.alpha = alpha / r  # 缩放因子
    
    def forward(self, x):
        return x + self.alpha * self.lora_up(self.lora_down(x))

5. 训练数据构建

5.1 LLaVA-Instruct数据集

构建流程:

Step 1: COCO captions → GPT-4扩展 → 详细描述
Step 2: 图像问答对生成 → 质量过滤
Step 3: 多轮对话构造 → 对话角色分配

数据集统计:

  • 图像总数:158K
  • 对话轮次:610K
  • 平均对话长度:3.5轮

5.2 miniGPT4数据生成

使用ChatGPT生成围绕图像的对话:

Prompt模板:

Given an image, generate a conversation that includes questions 
about the image content and detailed descriptions. The conversation 
should be natural and informative.

6. 模型能力对比

能力LLaVAminiGPT4
图像描述
视觉问答
多轮对话
复杂推理较弱中等
中文理解一般一般
推理速度中等

7. 关键技术总结

技术LLaVAminiGPT4
视觉编码器CLIP ViT-L/14EVA
跨模态连接MLPQ-Former
LLMVicuna-7BVicuna-7B
训练成本~1天(A100)~1天(A100)
对齐质量中上良好

8. 应用场景

场景LLaVA适用性miniGPT4适用性
图像标注
视觉助手
内容创作
教育问答

9. 未来改进方向

  1. 更大规模视觉编码器:EVA-CLIP、LLaVA-1.6
  2. 更长上下文:支持高分辨率图像
  3. 多语言支持:扩展到中文等多语言
  4. 指令遵循增强:RLHF/CONFLICT训练
  5. 实时视觉理解:视频流输入支持

LLaVA和miniGPT4开创了视觉-语言模型轻量化训练的新范式,为后续多模态大模型的发展奠定了基础。