5.4 Q-Former 与 Adapter 设计 Q-Former 是 BLIP-2 提出的关键组件,它的「可学习查询」思想在很多后续工作中被复用。本节深入 Q-Former 的设计哲学,并扩展到更广泛的 Adapter 系列(LoRA、Prefix Tuning 等)在多模态融合中的应用。 一、Q-Former 的设计动机 问题:变长视觉特征 vs 固定 LLM 输入 视觉编码器(如 ViT-L/14)输出的 patch token 数量取决于图像分辨率: 224×224 输入:256 个 patch token 336×336 输入:576 个 patch token 512×512 输入:1024 个 patch token 视频或多图:可能数千个 token 直接把这么多视觉
Q-Former 是 BLIP-2 提出的关键组件,它的「可学习查询」思想在很多后续工作中被复用。本节深入 Q-Former 的设计哲学,并扩展到更广泛的 Adapter 系列(LoRA、Prefix Tuning 等)在多模态融合中的应用。
视觉编码器(如 ViT-L/14)输出的 patch token 数量取决于图像分辨率:
直接把这么多视觉 token 拼进 LLM 会有两个问题:
Q-Former 用一组固定数量的可学习 query(通常 32 或 64 个),通过 Cross-Attention 从变长视觉特征中抽取信息。无论输入多少 patch,输出始终是 32 或 64 个 token。
这就像一位记者拿着 32 个固定问题去采访图像——无论图像内容多复杂,记者只会问这 32 个问题,得到 32 个答案。
Q-Former 本质是一个小型 Transformer,由两种注意力层交替组成:
可学习 query (32, d) ↓ [Self-Attention 层] ← query 之间互相 attend ↓ [Cross-Attention 层] ← query 与图像 patch attend ↓ [FFN 层] ↓ ... 重复 L 层 ... ↓ 输出: 32 个固定 token
经过 L 层(通常 L=6 或 12),每个 query 学会了一个特定的「询问角度」,最终输出 32 个携带不同视觉语义的 token。
BLIP-2 在阶段一用三个目标联合训练 Q-Former:
让 Q-Former 输出的 32 个 token 聚合后与文本向量对比:
其中 \bar{q}_i 是 32 个 token 的平均(或 CLS token)。
作用:让 query 学会抽取与文本语义对齐的整体特征。
把 32 个 token 与文本 token 拼接,过一个二分类头判断图文是否匹配:
作用:让 query 学会抽取细粒度对齐信息,能判断局部细节是否匹配。
让 Q-Former 在自身 query 之外,再加一些「文本 query」位置,让模型根据图像生成文本:
作用:让 query 学会抽取对生成有用的视觉信息。
三个目标联合训练后,Q-Former 输出的 32 个 token 既「与文本对齐」又「细粒度」又「对生成友好」——这就是它能直接送进任意 LLM 的原因。
Q-Former 体现了几个深刻的设计思想:
传统融合模型让视觉编码器直接输出供下游使用的特征,导致编码器必须为下游任务优化。Q-Former 把「从图像中抽取信息」与「为下游任务使用信息」解耦:
这种三层解耦让每个组件都专注自己的任务,整体效果优于端到端训练。
32 个可学习 query 本质是一种「软提示(soft prompt)」——它们不是文本,而是模型直接学习的向量。通过训练,它们学到「应该问图像什么问题」。
这与 Prefix Tuning、Prompt Tuning 等「软提示学习」流派一脉相承。
固定 32 个 token 强制 Q-Former 做信息压缩——必须从几百个 patch 中挑出最有信息量的内容。这种瓶颈让输出 token 携带的信息密度极高。
但也存在风险:信息丢失。32 个 token 可能无法完整表达复杂场景(如多物体、长文档),这是 BLIP-2 在细粒度任务上不如 LLaVA 的原因之一。
Q-Former 思想被后续工作广泛复用与改进:
类似 Q-Former,但结构略有不同——更多层、更大 query 数(64),适合视频场景。
提出抽象器概念,用卷积替代部分 Cross-Attention,提升位置感知能力。
实证显示 32-64 个 query 是大多数任务的甜点。
让 query 数量根据图像复杂度动态变化——简单图用少 query,复杂图用多 query。这是 2024 年后的探索方向。
Q-Former 是「参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)」思想在多模态中的体现。这一节我们简要梳理 PEFT 家族的其他成员,它们也常用于多模态融合。
在 Transformer 每层插入一个小型 bottleneck 模块:
hidden → ↓ 降维 → ReLU → ↑ 升维 → + 残差 → 输出 [d → r] [r → d]
其中 r \ll d(如 r = 64),只训练这个 bottleneck,参数量极小。
多模态应用:Visual Prompt Tuning、AdapterFusion 等用 Adapter 接入视觉特征。
LoRA 是当代大模型微调的事实标准。它的思想是:权重的更新可以用低秩矩阵分解:
其中 B \in \mathbb{R}^{d \times r}、A \in \mathbb{R}^{r \times d},r \ll d。原始 W 冻结,只训练 B, A。
参数量:从 d^2 降到 2dr。如 d=4096, r=8,参数量从 16M 降到 65K,缩减 250 倍。
多模态应用:LLaVA 系列的指令微调阶段常用 LoRA,避免全量微调破坏 LLM。LoraHub、Visual LoRA 等专门为视觉场景优化。
在 Transformer 每层的输入前拼接几个可学习的前缀 token:
[prefix_1, prefix_2, ..., prefix_K, 原始 token 序列] → Transformer
只训练这些前缀,原始权重不动。
多模态应用:早期多模态工作(如 Flamingo 的部分变体)用前缀注入视觉特征。
只训练输入层的几个可学习 token,更轻量:
[p_1, p_2, ..., p_K, 原始 token] → 冻结的 Transformer
参数量最小(只有 K×d),但表达力也最弱。
| 方法 | 插入位置 | 参数量 | 表达力 | 训练稳定性 |
|---|---|---|---|---|
| 全量微调 | 所有权重 | 100% | 最强 | 易不稳 |
| Q-Former | 视觉与 LLM 之间 | ~1% | 强 | 稳定 |
| Adapter | 每层 FFN 后 | ~1-5% | 强 | 稳定 |
| LoRA | 每层权重的低秩更新 | ~0.1-1% | 中-强 | 稳定 |
| Prefix Tuning | 每层输入前 | ~0.1% | 中 | 较稳 |
| Prompt Tuning | 仅输入层 | ~0.01% | 弱 | 稳定 |
当代多模态大模型常用的组合:
| 阶段 | 训练策略 |
|---|---|
| 视觉编码器预训练 | 全量训练(如 CLIP、SigLIP) |
| 投影器训练 | 全量训练(小参数) |
| LLM 适配 | LoRA(如 LLaVA-LoRA)或 Q-Former(BLIP-2)或 全量微调(LLaVA-1.5) |
LoRA 在多模态里越来越受欢迎,因为:
LoraHub、VeRA、DoRA 等变体进一步优化了 LoRA 在多模态场景的表现。
把 Q-Former 放在 PEFT 大背景下看,可以提炼出几条共同设计原则:
这些原则不只适用于多模态,也适用于代码、工具调用、领域适配等所有大模型下游任务。
虽然 LLaVA 等早期融合模型让 Q-Former 的使用有所减少,但它的思想仍在演化:
可以说 Q-Former 是「用少量可学习 query 压缩信息」这一设计模式的代表,它的思想比具体结构更重要。
Q-Former 用可学习 query 通过 Cross-Attention 从变长视觉特征中抽取固定数量的 token,体现了「解耦抽取与使用」「软提示学习」「信息瓶颈」三大设计哲学。它与 LoRA、Adapter、Prefix Tuning 等共同构成了参数高效微调的 PEFT 家族,在多模态大模型的工程实践中扮演关键角色。
下一节(5.5)我们速览 LLaVA-NeXT、MiniGPT-4、Qwen-VL、InternVL 等当代融合架构 SOTA。