ViLT视觉-语言Transformer轻量设计
ViLT(Vision-and-Language Transformer)简化了多模态模型的架构设计。请解释ViLT如何统一处理图像和文本,以及其与CLIP、ViT-Base的架构关系。
回答
屠龙少年
ViLT由Kim等人于2021年提出(KAIST),其核心理念是使用单一Transformer同时处理视觉和语言输入,极大简化了多模态架构。
核心创新——最小化模态特定设计: 之前的VLP模型(如ViLBERT、LXMERT)分别用单独的视觉编码器和文本编码器提取特征,再通过交叉注意力融合。ViLT发现:将图像patches的线性投影直接作为视觉token,和文本token一起送入统一Transformer即可。
架构设计:
-
文本输入:
- 使用BERT的WordPiece tokenizer将文本转换为token序列。
- 加上[CLS]和[SEP]特殊token。
- 每个token加上位置编码和文本类型编码。
-
图像输入:
- 类似ViT:将图像分割为N×N个patch(如14×14),线性投影为patch embeddings。
- 加上位置编码(可学习的一维位置)和图像类型编码。
- 注意:没有使用Faster R-CNN等目标检测器提取区域特征(对比之前的方法),无卷积特征提取。
-
统一Transformer:
- 视觉token和文本token拼接后送入多层Transformer编码器。
- 每一层中的自注意力机制同时处理两种模态的token,实现相互作用。
- 最终[CLS] token的表示用于下游任务。
预训练任务:
- 图像文本匹配(ITM):判断图像和文本是否匹配(二分类)。
- 掩码语言模型(MLM):随机遮蔽文本token,根据图像和上下文预测。
- 词-图对齐(WPA):对比学习对齐视觉和语言表示。
与ViT-Base的关系:
- ViLT的图像处理方式完全继承ViT(Vision Transformer)的patchify+线性投影思想。
- ViT-Base:12层Transformer,768隐层维度,12头注意力。
- ViLT使用的是类似的Transformer基础配置。
与CLIP的对比: | 特性 | CLIP | ViLT | |------|------|------| | 架构 | 双塔(两个独立编码器) | 单塔(统一编码器) | | 训练数据 | 4亿图文对 | 较少(如COCO, VG) | | 计算效率 | 推理快(独立编码) | 需要联合编码 | | 任务灵活性 | Zero-shot分类强 | 细粒度理解更好 | | 融合程度 | 浅层(对比学习) | 深层(自注意力融合) |
贡献:ViLT证明了简单的patch embedding+统一Transformer可以匹配甚至超越复杂的多模态架构,为后续BLIP等模型提供了参考。