多模态中的 Single String 与 Two String
多模态AI如何理解世界?一文读懂单序列与双序列模型
多模态人工智能的浪潮正在席卷而来,从能够理解图片和文字的 LLaVA,到能生成视频的 Sora,AI 正在以前所未有的方式将不同类型的信息联系起来。
那么,这些多模态模型究竟是如何将图像、文本等不同模态的信息融合在一起的呢?
目前,主流的架构可以归纳为两大阵营:**单序列(Single String)**和双序列(Two String)。理解这两种范式,就能抓住多模态模型的核心。
1. 单序列(Single String)方法:一次看懂,全局理解
核心思想:将所有模态的数据都转化为同一种“语言”(Token),然后将它们像串珠子一样拼接成一个长长的序列,交给一个统一的 Transformer 模型进行处理。
这就像是“一图胜千言”。模型将图像视为一长串“视觉词汇”,将它们与文本中的普通词汇放在一起,在同一个注意力空间中进行交互和理解。
- 工作流程:
- 图像编码:将一张图片分割成许多小块(Patches)。
- 特征投影:使用一个视觉编码器将这些 Patches 转化为一系列图像 Token,并投影到与文本 Token 相同的嵌入空间。
- 序列拼接:将图像 Token 序列与文本 Token 序列拼接起来,通常还会用特殊分隔符(如
[IMG_START])进行标记。 - 统一处理:将拼接后的长序列一次性输入给一个统一的 Transformer 模型。
- 优点:
- 架构简单:只需一个 Transformer 模型,无需额外的复杂融合层。
- 隐式对齐:模型通过全局自注意力机制,自然地学习图像和文本之间的对齐关系。
- 缺点:
- 计算成本高:自注意力机制的计算复杂度与序列长度的平方成正比。图像 Token 数量多,拼接后序列变得很长,导致计算量巨大。
- 代表模型:LLaVA, Flamingo, IDEFICS。
2. 双序列(Two String)方法:分而治之,最后融合
核心思想:对不同模态的数据使用独立的、专门的编码器进行处理。在处理的后期,再通过一个专门的“融合”模块将不同模态的特征结合起来。
这就像是“分开阅读,再独立思考”。模型先独立地“看”图片,再独立地“读”文本,最后再“思考”如何将两者联系起来。
- 工作流程:
- 文本编码:使用一个文本编码器(如 BERT)将文本序列编码为文本特征。
- 图像编码:使用一个图像编码器(如 ViT)将图像编码为图像特征。
- 专门融合:将两个编码器输出的特征向量(或序列)送入一个融合层,通过**交叉注意力(Cross-Attention)**或简单的拼接,来学习和融合跨模态的信息。
- 优点:
- 计算高效:每个编码器处理较短的序列,计算成本更低。
- 模态特化:可以为每个模态使用最适合的预训练模型和架构,灵活性高。
- 缺点:
- 架构复杂:需要设计和训练一个有效的融合机制,这比单流模型更具挑战性。
- 对齐显式化:模型必须显式地学习如何对齐两个独立的特征,如果融合层设计不当,会限制性能。
- 代表模型:CLIP (经典的双编码器模型), VisualBERT。
3. 对比总结:如何选择?
| 特性 | 单序列(Single String) | 双序列(Two String) |
|---|---|---|
| 核心思想 | 统一所有模态为一长串 Token | 分别编码,后期专门融合 |
| 架构 | 单个统一的 Transformer 模型 | 独立编码器 + 融合模块 |
| 计算成本 | 较高(与总序列长度的平方成正比) | 较低(编码器内部并行,融合层成本可控) |
| 主要优势 | 架构简单,对齐自然 | 灵活性高,计算更高效 |
| 典型模型 | LLaVA, Flamingo, IDEFICS | CLIP, VisualBERT |
如何选择?
- 如果你追求极致的性能,并且希望模型在多模态数据之间建立最细致的、隐式的联系,单序列模型可能是更好的选择。
- 如果你更看重计算效率、灵活性,希望在已有预训练模型上快速构建,或者需要将模型部署到资源受限的设备上,双序列模型可能更具优势。
这两种范式都在不断演进,为我们打开了通往真正多模态AI世界的大门。
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Comments
GiscusUtterances