Stanford CS336 Lecture 17: Multimodal Language Modeling
Multimodal Modeling 概述
多模态模型旨在超越文本到文本的能力,向能够摄取并输出任何模态组合(包括文本、图像、音频和视频)的“全能模型”(omni models)迈进。由于 Transformer 是这些模态在大规模应用中最有效的架构,因此主要的挑战在于如何将非文本数据转换为 Transformer 可以处理的 token(无论是离散的还是连续的)。
基础:CLIP 和 SigLIP
现代视觉语言模型 (VLMs) 高度依赖于将图像映射到与文本兼容的语义空间的编码器。
CLIP (Contrastive Language Image Pre-Training)
CLIP 旨在利用来自网络的海量噪声图像-文本对。它使用对比学习目标:给定一批图像-文本对,模型会最大化正确图像-文本对之间的点积,同时最小化批次中所有其他对的点积。
- 架构: CLIP 通常使用 Vision Transformer (ViT) 作为图像编码器,将图像切分为 patch(例如 14x14)并将其作为 token 进行处理。文本编码器是 GPT-2 风格的 transformer。
- 关键结果: CLIP 证明了通过利用有机网络数据,零样本(zero-shot)图像分类的表现可以优于在 ImageNet 等精选数据集上训练的模型。
- 局限性: CLIP 需要非常大的 batch size(例如 32,000),因为 softmax 操作是在整个 batch 中进行的,这使得并行化和分解变得困难。
SigLIP (Sigmoid Loss for Language Image Pre-Training)
SigLIP 通过将多类 softmax loss 替换为更简单的 sigmoid loss 对 CLIP 进行了改进。SigLIP 不再是将一张图像与一批文本进行排序,而是将每个图像-文本对视为一个二分类问题(对齐或不对齐)。
- 效率: 这种改变使 loss 与 batch size 解耦,从而允许更高效的训练,并在较小的 batch size 下也能获得更好的性能。
- 并行化: SigLIP 通过在 pod 中轮转文本 embedding,在不需要单个设备承载完整 batch 的情况下计算负样本,从而实现了更好的分布式计算。
视觉语言模型 (VLM) 架构
大多数开源 VLM 遵循一种模板:一个预训练的视觉编码器、一个作为解码器的语言模型 (LLM),以及一个将视觉 embedding 映射到 LLM token 空间的“投影器”(projector)或适配器(adapter)。
LLaVA (Large Language-and-Vision Assistant)
LLaVA 展示了如何将 CLIP 编码器与 Vicuna (基于 Llama) 的 LLM 缝合在一起。
- 数据合成: LLaVA 使用 GPT-4 基于 MS COCO 的人工标注标题生成合成对话、详细描述和复杂推理。
- 训练阶段:
- 对齐阶段: 视觉编码器和 LLM 是冻结的;仅训练 projector(一个线性矩阵 $W$)以将图像向量映射到文本 embedding 空间。
- 微调阶段: 视觉编码器保持冻结,但 projector 和 LLM 会在合成的多模态数据上进行共同训练。
LLaVA OneVision 和 AnyRes
为了处理高分辨率图像和 OCR,LLaVA OneVision 引入了 AnyRes。AnyRes 不再将图像下采样到固定的正方形(例如 336x336),而是将图像切分为多个具有编码器原生分辨率的 crops,然后拼接结果向量。这使得模型能够保留细粒度的细节,同时保持对不同图像长宽比的适应性。
Qwen-VL 系列
Qwen-VL 及其后续版本 (Qwen-2, Qwen-3) 进一步完善了 VLM 流程:
- 动态分辨率: Qwen-2 实现了一个系统,根据图像大小将图像映射到可变数量的 token,通过压缩 patch 来管理上下文长度。
- Multimodal RoPE (M-RoPE): 为了处理 3D 时空数据(高度、宽度和时间),Qwen 使用了多维旋转位置编码 (Rotary Positional Embedding)。Qwen-3 通过交错维度来确保所有轴都暴露在低频和高频中。
- 显式时间戳: Qwen-3 引入了显式时间 token(例如 "0 seconds")来帮助模型引用视频中的特定时刻。
- 深度融合: 后期版本不再使用简单的 projector,而是使用更复杂的适配器 (DeepStack) 将视觉 embedding 直接集成到 LLM 的残差流中。
原生多模态:Chameleon 方法
虽然大多数 VLM 是仅输出文本的“缝合”模型,但 Meta 的 Chameleon 尝试通过将一切离散化为 token 来实现原生多模态。
- VQ-VAE (Vector Quantized Variational Autoencoder): 图像被映射到一个离散的 codebook(例如 8,000 个原型向量)。图像变成了一个离散 token 序列,就像文本一样。
- 统一训练: 由于图像现在也是 token,单个 transformer 可以被训练来预测下一个 token,无论它是文本还是图像。这允许交错的图像-文本生成。
- 挑战: 由于图像 token 与文本 token 相比具有极高的熵,这种方法在训练稳定性方面存在问题。此外,由于离散化,它也会丢失细粒度的信息(如 OCR 中的微小文本)。
技术权衡总结
| Feature | Stitched VLMs (LLaVA/Qwen) | Native Multimodal (Chameleon) |
|---|---|---|
| Input | Continuous embeddings $\rightarrow$ Projector $\rightarrow$ LLM | Discrete tokens $\rightarrow$ LLM |
| Output | Text only | Interleaved Text & Images |
| Output Method | LLM Token Prediction | LLM Token Prediction |
| Information Loss | Low (Continuous encoders) | High (Discretization) |
| Training Stability | High | Low (Entropy mismatch) |