模型部件术语 - Tower
在视觉-语言多模态模型(比如 CLIP、Flamingo、LLaVA 等)中,将视觉编码器和文本编码器称为 “Tower”,主要源于以下几个层面的直观比喻和工程考量:
1. 核心原因:“并行的、独立的、向上的”处理结构
“Tower” 这个词形象地描绘这类架构的两个关键特征:
- 并行与独立:两个模块(Vision Tower 和 Text Tower)就像两座高塔,它们各自独立运行、互不干扰,分别处理自己的输入(图像和文本),直到最后才通过某种方式(比如对比损失(CLIP 式)或交叉注意力(融合式))进行信息交互。这与“两座塔比肩而立”的画面非常吻合。
- 分层向上处理:无论是视觉塔(CNN/ViT)还是文本塔(Transformer),其内部结构都是层级化的。输入数据(像素块 Patch 或 Token)从“塔底”进入,经过一层一层(Layer)的计算,每一层都在提炼更抽象、更高层的特征,最终在“塔顶”输出富含语义的特征向量。这个过程就像爬塔一样,逐级向上,视野越来越宏大(语义越来越抽象)。
2. 结构上的类比:单一职责、堆叠模块
- 单一职责原则:每个“Tower”专注于一种模态(Modality)的编码任务。视觉塔只负责“看懂”图像,文本塔只负责“读懂”文字。这符合软件工程中的“单一职责原则”,使得模型设计清晰、易于调试和模块化改进。
- 模块化堆叠:这些塔通常由许多相同的处理块(比如 Transformer 层)堆叠而成。这种“一层层往上堆”的结构,自然而然地让人联想到塔的建造方式。
3. 与其他“模型部件”术语的对比
理解“Tower”与其他术语的区别,有助于更深刻地把握其含义:
| 术语 | 含义 | 特点 | 例子 |
|---|---|---|---|
| Tower | 一个独立、完整、分层的编码器 | 独立处理单一模态;通常并行存在多个;内部结构复杂(多层) | CLIP 的视觉塔、文本塔 |
| Backbone | 特征提取的主干网络 | 强调其核心支柱地位;通常是预训练好的大型模型;在迁移学习中被保留及微调 | ResNet、ViT、BERT |
| Head | 任务特定的输出层 | 位于 Backbone 或 Tower 的顶部(塔尖);结构通常较浅;负责映射到具体任务(分类、生成等) | 分类头(全连接层 + Softmax) |
| Encoder | 将输入转为表示向量的模块 | 功能描述:编码;可以与Decoder(解码器)对应 | Transformer 的 Encoder 部分 |
| Projector | 将特征向量投影到联合空间 | 映射作用:连接不同 Tower 的输出;通常是个浅层 MLP;只在训练末端出现 | CLIP 中塔顶之后的投影层 |
关键区分:
- Backbone vs. Tower:Tower 是特定语境下的 Backbone。在多模态模型中,为强调多个 Backbone 的“并行、平等、独立”关系,称之为 Tower。
- Encoder vs. Tower:Tower 是具体的 Encoder 实例,但“Encoder”这个词更通用。说“视觉编码器”也完全可以,但“视觉塔”更具画面感,并且隐含“与其他塔并行”的结构关系。
4. 历史与业界惯例
- CLIP 论文(开创者):OpenAI 在 CLIP 论文中明确使用
image_encoder和text_encoder的技术术语,但在描述架构图时,社区很快发现“Tower”这个词非常形象,从此流行开来。很多后续工作(比如 ALIGN、BASIC)的示意图中,直接绘制两座塔来表示。
- 业界沟通:这个术语简洁、直观、无歧义。在组会、技术文档、代码注释中说“Vision Tower”,所有人都能立刻明白指的是“那个处理图像的大型编码器模块”。
5. 总结
称为“Tower”是因为:
- 结构上:它是独立、分层、自下而上处理的单一模态编码器。
- 布局上:在多模态模型中多个这样的编码器并行存在(比如视觉和文本),比肩而立,像两座高塔。
- 功能上:各自专注于自己的领域(视觉或语言),最终在顶部输出高级特征进行融合。
- 效果上:这个词直观、形象、简洁,已成为多模态领域的标准行话。
简而言之,Vision Tower 和 Text Tower 是两座并行、独立、分层处理图像或文本,在塔顶输出特征向量的编码器模块。