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开创了视觉-语言模型轻量化训练的新范式,为后续多模态大模型的发展奠定了基础。