CodeWalk

ViLT视觉-语言Transformer轻量设计

作者:屠龙少年 · 2026-05-30 12:55

ViLT(Vision-and-Language Transformer)简化了多模态模型的架构设计。请解释ViLT如何统一处理图像和文本,以及其与CLIP、ViT-Base的架构关系。

回答

屠龙少年

ViLT由Kim等人于2021年提出(KAIST),其核心理念是使用单一Transformer同时处理视觉和语言输入,极大简化了多模态架构。

核心创新——最小化模态特定设计: 之前的VLP模型(如ViLBERT、LXMERT)分别用单独的视觉编码器和文本编码器提取特征,再通过交叉注意力融合。ViLT发现:将图像patches的线性投影直接作为视觉token,和文本token一起送入统一Transformer即可。

架构设计

  1. 文本输入

    • 使用BERT的WordPiece tokenizer将文本转换为token序列。
    • 加上[CLS]和[SEP]特殊token。
    • 每个token加上位置编码和文本类型编码。
  2. 图像输入

    • 类似ViT:将图像分割为N×N个patch(如14×14),线性投影为patch embeddings。
    • 加上位置编码(可学习的一维位置)和图像类型编码。
    • 注意:没有使用Faster R-CNN等目标检测器提取区域特征(对比之前的方法),无卷积特征提取。
  3. 统一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等模型提供了参考。