跳转至

其他架构

ImageBind 如何实现六种模态(图像、文本、音频、深度、热力、IMU)的联合嵌入?核心思想是什么?

image.png

ImageBind 的核心思想是以图像为中心,通过绑定对齐实现多模态联合嵌入。它没有要求所有模态之间都有成对数据,而是利用了图像的“枢纽”地位:图像与文本、图像与音频、图像与深度等模态有充足的成对数据,ImageBind 将所有模态嵌入对齐到一个以图像模态为锚点的共享语义空间。这样,即使没有任何直接的文本-音频对,两个模态的嵌入也能通过图像这个中介实现语义相近。

具体实现:

  1. 独立编码器:每个模态都有自己的编码器:图像用 ViT,文本用 Transformer,音频用 ViT-style 频谱图编码器,深度和热力也用 ViT 处理 2D 表示,IMU 用 1D 卷积网络提取时域特征。

  2. 对齐训练:使用成对数据(如图像-文本、图像-音频)训练这些编码器。损失函数为对称 InfoNCE,拉近匹配的模态对(如一张老虎图片和它的文本描述、对应音频的频谱图),推远不匹配的。对于没有直接图像对的模态(如深度、热力),也使用它们与图像的自然成对关系进行同样训练。

  3. 联合空间自然产生:由于所有模态都与图像在对比学习下对齐,它们被隐式地拉入同一个嵌入空间。即使没有直接的文本-音频对,通过图像作为桥梁,文本“鸟鸣”的嵌入也会与对应鸟鸣音频的嵌入靠近。这利用了传递性。

  4. 零样本跨模态能力:训练后,可以用文本检索音频、用音频生成图像嵌入等。这极大拓展了多模态学习的边界,证明了以视觉为核心的跨模态对齐的扩展能力。

这种设计的优雅之处在于避免了需要所有模态两两成对数据的组合爆炸,使得六种模态联合嵌入在有限数据下成为可能。


Meta-Transformer 如何用一个统一的 Transformer 处理不同模态的数据?共享了什么,不同模态又保留了什么?

Meta-Transformer 的核心是共享 Transformer 主干,模态特定预处理。它将不同模态的数据通过专门的“模态转换器”投影到统一的 token 序列空间,然后全部交由同一个冻结或可微调的 Transformer 处理。

共享的部分:

  • 骨干 Transformer:一个大型预训练 Transformer(如 ViT 或 LLM),对所有模态共享参数。它负责学习通用序列建模、上下文交互和高级语义提取。这意味着无论输入是图像块、文本 token 还是音频频谱片段,模型内部的高层抽象和推理能力是复用的。

模态特定的部分:

  • 数据处理与分块:每个模态有各自的原始数据预处理方式。图像切分为 patches,文本被分词为 tokens,音频转为频谱图后切分,点云采样为 token 序列等。

  • “模态转换器”:这是一个轻量级的模块,将各模态的原始 token 投影到统一的嵌入维度。通常是一个简单的线性投影或浅层 MLP。它吸收了模态间的低级差异(如维度、数值范围),使得 Transformer 看到的输入在格式上完全一致。

  • 可选的特殊位置编码:某些模态可能需要特殊的编码方式(如 3D 点云的空间坐标编码),这些也可以在模态转换器中注入。

设计哲学:这种“共享骨干,特异前端”的模式,最大化地复用了 Transformer 的强大序列建模能力,使得跨模态任务可以像训练单模态模型一样简单。它证明了 Transformer 架构对序列数据有极强的通用抽象能力,不同模态的差异可以被压缩到简单的线性投影层中。


Kosmos 系列模型将多模态任务统一为自回归建模,它的输入表示是如何设计的?

Kosmos 将一切多模态输入视为统一的 token 序列,通过自回归 Transformer 进行 next-token prediction。其输入表示设计极为精巧:

  1. 文本 token:直接使用标准的文本分词器(如 SentencePiece),将文本转换为离散 token ID。

  2. 图像 token:图像通过一个冻结的 CLIP ViT 编码器提取连续特征,然后这些特征通过一个可训练的感知器重采样器或直接投影到 LLM 的嵌入空间,转化为“软 token”(连续向量而非离散 ID)。这些软 token 被视为与文本 token 等价的输入,直接参与 Transformer 的前向计算。

  3. 特殊标记与模态切换:序列中插入特殊 token,如 <image></image> 来包围图像 token 序列,以及 <grounding> 等标记。这告诉模型模态边界。

  4. 边界框与位置信息:对于需要定位的任务,Kosmos-2 引入离散化的位置 token。图像区域坐标被均匀量化到一定数量的 bin 中,每个坐标值用一个特殊的 token 表示(如 <x1>, <y15>)。这些 token 作为文本的一部分,在描述中被生成。这样,目标检测和定位问题就被统一为序列生成问题。

  5. 统一的多任务格式:所有任务(描述、问答、检测、定位)都被格式化为同一种自回归序列。例如,检测任务的输出序列为“<grounding> <p> a dog <box> <x1><y20><x45><y60> </box> </grounding>”。模型只需逐 token 预测这个序列即可。

通过将图像表征为连续软 token,将空间坐标离散化为 token,Kosmos 成功把多模态理解与生成统一到了纯自回归框架下。


用于文档理解的 LayoutLM 系列是如何融合文本、布局和视觉信息的?预训练任务有哪些?

LayoutLM 系列核心创新在于将文本内容、二维空间布局和视觉外观三者进行深度融合,用于文档理解(如发票、表单、合同)。它以 BERT 为骨架,对每个文本 token 添加布局和视觉嵌入。

融合方式:

  • 文本嵌入:标准的词嵌入(token embedding)。

  • 布局嵌入:每个 token 在文档中的归一化边界框坐标 (x0,y0,x1,y1,w,h)(x0,y0,x1,y1,w,h) 通过一个 MLP 或嵌入层转换为向量,作为布局嵌入。这使模型理解 token 的空间位置。

  • 视觉嵌入:对应 token 的图像区域(整张文档图片通过 CNN/ViT 提取的特征图,在 token 边界框内做池化)得到的特征向量。这提供了字体、颜色、线条等视觉线索。

  • 融合:文本、布局、视觉嵌入相加(或拼接),送入 Transformer 编码器。这样,每个 token 的初始表示就融合了多模态信息。

预训练任务(以 LayoutLMv3 为例):

  1. 掩码语言模型(MLM):随机遮盖文本 token,让模型根据上下文、布局和视觉信息预测被遮盖词。这迫使模型学习利用非文本线索辅助语言理解。

  2. 掩码图像建模(MIM):随机遮盖图像区域(如 patch),让模型根据文本和未遮盖的图像区域预测被遮盖的图像特征。这促使视觉编码器学习与文本匹配的语义化视觉特征。

  3. 单词-图像对齐(WIA):预测文本 token 和图像区域是否匹配。模型从文本 token 中选一个,将其视觉特征替换为另一随机图像的对应区域,然后让模型判断该 token 是否被替换。这学习细粒度的跨模态对齐。

通过这种多模态嵌入和预训练任务,LayoutLM 系列在表单理解、票据识别等任务上取得显著突破,展示了结构化布局信息对文档理解的关键作用。


Segment Anything Model (SAM) 虽然不是语言模型,但它如何与 LLM 结合形成多模态理解系统?

SAM 是一个强大的图像分割基础模型,给定一个提示(点、框或掩码),它可以生成对应物体的分割掩码。它本身不是 LLM,但可以作为一种“视觉基础工具”与 LLM 紧密结合,构建语言驱动的细粒度视觉理解系统。

结合方式:

  1. LLM 生成定位指令:用户提出语言请求(“把图里的红色杯子分割出来”),LLM 解析意图并输出与 SAM 兼容的结构化提示,例如边界框坐标或点坐标。LLM 可以利用视觉 token 或外部检测器来产生这些坐标。

  2. SAM 执行分割:LLM 生成的坐标被送入 SAM,SAM 输出高精度的分割掩码。SAM 在这里扮演“视觉执行器”的角色,LLM 是“大脑”。

  3. 结果回传与多轮交互:SAM 输出的掩码可以进一步转化为文本(如物体列表、面积),反馈给 LLM,LLM 再基于此进行推理、问答或生成更复杂的描述。形成一个闭环。

  4. 代表性系统:如 LISA(Language-Instructed Segmentation Assistant),它在 LLM 的词表中加入一个特殊的 <SEG> token。当 LLM 生成回答时,若需要分割,会输出 <SEG>,后续的隐藏状态被用来生成 SAM 的提示嵌入,直接驱动 SAM 产生分割掩码。这样整个系统端到端可微。

这种组合赋予了 LLM“指哪打哪”的像素级理解能力,将语言推理与视觉精确性统一起来。


在多模态生成式模型中,能否将图像生成和文本生成统一在同一个 Transformer 的 token 序列中?如 Unified-IO。

可以,这正是统一多模态模型的核心思想。 Unified-IO 系列是典型代表。

统一方式:

  • 离散化所有模态为 token:文本通过标准分词器转成 token。图像通过 VQ-VAE 或 VQ-GAN 编码器,将图像压缩并离散化为一系列视觉 token(整数索引)。其他模态(如关键点、边界框)也被离散化为专用 token。

  • 统一的序列生成:所有任务被组织成序列到序列的形式。输入序列包含任务提示、文本 token、图像 token 等;输出序列则包含要生成的文本 token 或图像 token。一个共享的编码器-解码器 Transformer 处理整个序列,使用标准的交叉熵损失(对于离散 token)。

  • 训练:模型在多种任务(图像生成、图像编辑、描述、问答、检测)的异构数据集上联合训练,学习统一的表示和生成能力。

为什么可行:Transformer 本质上是序列到序列的通用映射器。只要将不同模态都转化为离散 token 序列,就可以用同一个自回归/自编码框架建模。挑战在于图像 token 数量巨大,导致序列极长,计算成本很高;不同任务的数据分布和难度差异可能导致训练不稳定。Unified-IO 通过精心设计的 tokenization、任务采样策略和大规模训练,证明了这一统一范式的可行性,是通向真正多模态通用模型的重要一步。


为什么目前主流的 MLLM 很少采用 Encoder-Decoder 架构,而多用 Decoder-only?有什么例外?

主流多模态大语言模型(如 LLaVA, MiniGPT-4, Qwen-VL)压倒性地使用 Decoder-only 架构(即因果自回归 Transformer,如 GPT),而不是 Encoder-Decoder(如 T5)。原因如下:

  1. 与 LLM 预训练的自然契合:当前最强的 LLM(GPT-4, LLaMA, PaLM 等)几乎都是 Decoder-only。MLLM 通过在它们基础上添加视觉模块,能最大限度地继承其强大的语言能力、世界知识和推理能力。无需从头开始预训练。

  2. 架构极简:Decoder-only 模型是自回归的,只需要一种 Transformer 层和单向注意力掩码。视觉 token 和文本 token 可以直接拼接输入,无需设计复杂的 Encoder-Decoder 交叉注意力。

  3. 效率与扩展性:在同等参数规模下,Decoder-only 的推理效率通常更高(尤其在长序列生成时,KV 缓存易于管理)。Encoder-Decoder 需要双向编码器处理全部输入,然后再解码,对于长图文序列计算开销大,且预训练 Encoder-Decoder 的大型语言模型较少。

  4. 训练数据格式简单:所有任务都可以统一为“给定多模态前缀,续写后续内容”的格式,与语言模型的自回归预训练完全一致,无需复杂的格式转换。

例外与 Encoder-Decoder 的用武之地:

  • PaLI 系列:谷歌的 PaLI、PaLI-X 使用 Encoder-Decoder(通常是 T5 或 UL2 风格)。视觉编码器(如 ViT)将图像编码后,通过交叉注意力注入到编码器和解码器中。这种设计在密集预测任务(如目标检测、OCR)、需要强双向编码的任务上有优势,因为编码器可以非因果地充分理解图像和文本上下文。

  • Flamingo/Emu 等:虽然 Flamingo 在 LLM 中插入交叉注意力,但其 LLM 本身是 Decoder-only,因此不是纯 Encoder-Decoder,而是混合架构。

  • Unified-IO、Pix2Seq:这类统一离散 token 的模型采用 Encoder-Decoder,因为需要双向编码输入序列(可能包含图像)并生成输出序列。

选择 Decoder-only 主要是为了最大限度地复用现有 LLM 的预训练成果,而 Encoder-Decoder 在需要强双向编码的细粒度视觉理解任务中仍有其独特的结构优势。


你如何看待“视觉语言模型”和“多模态大语言模型”这两个名词的区别?技术内涵上有什么侧重?

这两个术语有重叠,但侧重点不同,反映了多模态模型发展的不同阶段和设计哲学。

视觉语言模型(VLM, Vision-Language Model)

  • 早期基础:通常指那些专门为视觉和语言任务设计的、规模较小的预训练模型。例如 ViLBERT、LXMERT、UNITER、早期的 CLIP 等。

  • 核心技术:双流或单流 Transformer,专注于图文匹配(ITM)、图文对比(ITC)、掩码语言建模(MLM)等预训练任务,然后在下游任务(VQA、检索、字幕)微调。

  • 能力范围:主要擅长判别性任务(分类、检索、匹配)和有限的理解任务,通常不具备强大的开放式文本生成能力。它们更多是“理解”模型而非“生成”模型。

  • 规模:参数通常在数亿到数十亿。

多模态大语言模型(MLLM, Multimodal Large Language Model)

  • 新兴范式:指将视觉模块(通常是视觉编码器)与大型语言模型(LLM)相连接,使 LLM 具备理解和讨论多模态输入的能力。如 LLaVA, GPT-4o, Gemini 等。

  • 核心技术:以预训练的解码器型 LLM 为基石,通过视觉-语言投影层或更复杂的连接器(如 Q-Former)将视觉特征转化为 LLM 的输入 token。训练重点是跨模态指令微调,使 LLM 能遵循涉及图像的复杂指令。

  • 能力范围:具有强大的开放式文本生成、多轮对话、复杂推理和指令遵循能力,能够像聊天机器人一样谈论图像。它们是“生成式”和“交互式”的模型。

  • 规模:通常数十亿到数千亿参数,LLM 部分占有主要参数。

侧重总结:

  • VLM 侧重于视觉与语言的联合表示学习和下游任务适应,核心是“对齐”。

  • MLLM 侧重于赋予大规模语言模型视觉感知和对话能力,核心是“融入”。 MLLM 是 VLM 思想在大模型时代的自然延伸,它将视觉对齐问题从“训练一个专用模型”转变为“为现有超级大脑安装眼睛”。


Gemini 模型宣称支持多模态的“早期融合”,这种设计有什么潜在优势?

Gemini 的“早期融合”意味着从模型的最底层开始,文本、图像、音频等不同模态的 token 就交织在一起,通过统一的自注意力机制进行交互,而不是先在各自模态的编码器中处理到高层再进行融合。

潜在优势:

  1. 细粒度的跨模态理解:早期融合允许模型在最底层像素/子词级别捕捉跨模态的精确关联。例如,将文本中的“红色”单词直接与图像中的红色像素区域关联,或将音频中的某个音符与视频中弹奏该音符的乐器动作关联。这有助于理解模糊指代和细微的跨模态线索。

  2. 统一的上下文学习:所有模态信息从一开始就彼此作为上下文。模型可以自然地处理交错的多模态数据流(如用户边说话边展示图片,或者视频、音频和字幕的混合输入),不受模态边界限制,实现真正的多模态思维。

  3. 减少信息瓶颈:晚期融合往往需要将视觉或音频压缩为一个高层特征向量再交给 LLM,这个过程会丢失很多低层细节(如纹理、语气的微妙变化)。早期融合避免了这种压缩,完整的低层信息可以被 LLM 直接利用,特别适合需要高保真细节的任务。

  4. 架构极简与扩展性:早期融合使得模型架构更为统一,无需为不同模态设计独立的复杂编码器通路。这种高度统一的架构易于扩展至新模态,只需将它们转化为 token 序列并送入同一个模型主干,有望通过增加数据和算力实现多模态能力的涌现。

  5. 更好的模态间推理:对于需要跨越多个模态进行多步推理的复杂问题(例如“根据视频中的声音和画面,判断这个场景发生了什么以及人物的情绪”),早期融合让模型能够灵活地组合不同模态的原始信号进行隐式推理,而不是依靠分离编码后的高层摘要。

当然,早期融合对训练数据的规模和质量要求极高,且计算复杂度显著增加,但这是通往真正原生多模态智能的关键技术路线。


多模态模型处理多图对话时,在上下文组织上需要哪些特殊设计?

处理多图对话时,模型需要能够区分多张图片,并将文本指令与特定的图片精确关联。上下文组织上的特殊设计包括:

  1. 图像标识符与 token 分段:为每张图片分配唯一标识符(如 <image_1>, <image_2>),并在输入序列中用特殊分隔符(如 <image_start>, <image_end>)包裹每张图片的视觉 token。这样,LLM 可以明确知道哪些 token 属于哪张图片。

  2. 交错图文位置编码:采用能够区分不同来源 token 的位置编码方案。可以在序列中为每个 token 添加全局位置编码,同时为视觉 token 添加局部图像内位置编码,以保留空间关系。一些模型(如 Kosmos)还引入模态类型嵌入。

  3. 图片选择机制:如果问题只涉及其中几张图,上下文组织时可以仅包含相关图片的视觉 token,而不是把所有历史图片都放进去。这需要一个图片选择模块(可以是基于文本相似度检索或 LLM 的显式决定)。这样能显著节省上下文窗口,避免干扰。

  4. 上下文窗口管理:对于长对话中不断上传的图片,需要主动管理上下文。可以固定分配每张图片的 token 数量(如 64-256 个),超出则通过压缩或丢弃旧图 token 来控制总长度。或者使用流式方法,将对话历史中的图片特征存入外部记忆,LLM 按需交叉注意力查询。

  5. 多图片对比和关系型提示:当任务是多图对比时(如“这两张图有什么不同?”),应将多张图片的 token 放在一起并加以提示(“以下是图A和图B:...”),让自注意力能够在它们之间直接计算关联。一些模型训练时还会加入多图对比的数据,增强这方面能力。

  6. 训练数据中的多图模式:从根本上,模型是否具备多图对话能力,很大程度上取决于训练数据是否包含多图交错对话。构造这样的数据(如用多张图提问,给出答案)是让模型习得该能力的基础。


如果要设计一个能阅读文档并回答问题的多模态模型,你会选择哪些组件?如何融合文本、图像和布局信息?

设计一个文档理解 MLLM,核心是捕捉文档的三个信息层面:文本语义、空间布局和视觉外观。组件选择与融合如下:

组件选择:

  1. 文本编码器/分词器:使用多语言、支持长文本的 LLM tokenizer(如基于 SentencePiece)。用于提取文本的语义 token。

  2. 视觉编码器:使用高分辨率的 ViT(如 ViT-L/14 或 ViT-Adapter),能够处理文档图像,输出保留空间结构的 patch token 特征图。这是捕捉字体、颜色、线条、表格、印章等视觉元素的基础。

  3. 布局编码器:一个轻量级的嵌入模块,将每个文本 token 的边界框坐标 (x0,y0,x1,y1)(x0,y0,x1,y1) 编码为向量。可以是一个简单的 MLP 或位置编码层。

  4. LLM 主干:一个强大的 Decoder-only LLM,作为多模态融合与推理的引擎。

  5. 连接器/适配器:将视觉 token 和布局嵌入投影到 LLM 词嵌入空间。可能是一个 MLP。

融合策略:

  • 文本+布局融合:在文本 token 输入到 LLM 之前,将其对应的布局嵌入直接相加(或拼接后投影),作为增强的文本 token。这类似于 LayoutLM 的方式,告诉 LLM 每个词在页面上的位置。

  • 视觉+空间融合:视觉编码器输出的 patch token,需要注入 2D 空间位置信息(如 patch 的行列坐标编码),使得视觉 token 携带空间信息。

  • 全局与局部结合:将增强的文本 token 序列和视觉 patch token 序列拼接,送入 LLM。LLM 通过自注意力,让文本 token 可以关注到视觉 token(例如,“总计”这个词可以关注到页面右下方的视觉 patch,从而定位到金额数字区域),实现跨模态细粒度对齐。

  • 多尺度/多分辨率处理:对于高密度文档,使用动态分块或高分辨率适配器,将文档切成多块分别编码,再通过带有子块位置编码的拼接送入 LLM,避免细节丢失。

  • 预训练任务设计:类似 LayoutLM,可以设计 MLM、词-图像对齐等预训练任务,在大量未标注文档上预训练模型,然后再用 DocVQA 等任务数据微调。

这种设计使得模型能像人一样,既“读”文档的文字,又“看”它的外观和布局,从而准确回答需要空间定位、表格理解和票据信息抽取的问题。


Flamingo 如何实现对多张图像或视频帧的理解?为什么架构天然支持变长图像序列?

Flamingo 的架构设计天然支持任意数量的图像或视频帧,其核心在于感知器重采样器(Perceiver Resampler) 和门控交叉注意力层的组合。

实现对多张图像或视频帧的理解:

  1. 视觉特征提取:对每张图片或每个视频帧,使用冻结的视觉编码器(如 CLIP ViT)提取特征图。对于视频,可以采样多帧。

  2. 感知器重采样器压缩:将一张图片或一个视频的所有帧(即多个视觉特征序列)送入一个共享的感知器重采样器。它使用固定数量(如 64 个)的可学习潜在查询向量,通过交叉注意力从这些变长的视觉特征序列中提取、压缩出固定数量(64 个)的视觉 token,代表该图片/视频的“视觉摘要”。

  3. 多图的统一处理:如果有多张图片,每张图片/视频都独立通过感知器重采样器,各自产生 64 个视觉 token。因此,N 张图片就会产生 N×64N×64 个视觉 token。

  4. 交错序列拼接:在文本序列中,通过 <image> 占位符标记图片位置。构建 LLM 输入时,将相应图片的 64 个视觉 token 直接插入到 <image> 标记之后(或替换它)。这样,LLM 看到的序列就是:[文本] [视觉token组1] [文本] [视觉token组2] ...

架构天然支持变长图像序列的原因:

  • 感知器重采样器处理变长输入:无论输入是 1 张图还是 100 帧视频,感知器重采样器都输出固定长度的视觉 token 序列。这完美解决了可变数量图像带来的序列长度不确定性。

  • LLM 自注意力处理可变序列:LLM 本身是 Transformer,可以处理任何长度的序列(受限于上下文窗口)。多组固定长度的视觉 token 组与文本 token 交错拼接后,最终序列长度是确定的,LLM 直接处理即可。

  • 门控交叉注意力进一步增强:Flamingo 在 LLM 的每一层插入了门控交叉注意力层,这些层直接以文本 token 为 query,从对应的视觉 token(由感知器重采样器提供)中检索信息。这为模型提供了另一条视觉信息通道,并且通过门控机制控制视觉信息的注入。

因此,Flamingo 不需要为不同数量的图片改变任何网络结构,通过感知器重采样器的固定输出长度,巧妙地将多图/视频统一成定长的视觉 token 组序列,天然支持变长视觉序列。这使其成为处理交错图文和视频理解的典范架构。