01
60 秒回答模板
我会先把跨模态注意力拆成 token 化、对齐、融合三步。以图文模型为例,图像经过 ViT 或 CNN backbone 得到 patch token 或 object token,每个 token 带二维位置编码;文本经过 tokenizer 和语言模型 embedding 得到 word/subword token,带一维位置编码。为了让模型知道 token 来自哪种模态,还会加 modality type embedding,必要时用线性层把视觉和文本投到同一 hidden size。最直接的设计是 cross-attention:假设文本想根据图片回答问题,就让文本 token 做 query,图像 token 做 key/value,得到每个词对图像区域的注意力;如果要生成图像描述,也可以让文本解码器在每层 cross-attend 到视觉 token。更对称的设计是 co-attention 或双流结构,文本到图像和图像到文本分别交互,然后再融合;也可以把所有 token 拼接成单流 Transformer,让 self-attention 自动学习跨模态关系。举例来说,文本里有「红色小米手机在桌子上」,图像 patch 中有手机、桌面、背景区域。文本 token「手机」的 query 应该高权重关注手机轮廓相关 patch,「红色」关注机身颜色区域,「桌子」关注承载区域;融合后的「手机」表示就包含文本语义和视觉证据。训练上可以用图文对比学习做全局对齐,用 image-text matching 做样本级匹配,用 masked language/image modeling 做细粒度对齐,用检测框或 grounding 数据加强 token-region 对齐。工程上还要处理视觉 token 太多带来的计算开销,比如先用 Q-Former、Perceiver resampler、region proposal 或 pooling 压缩视觉 token,再做 cross-attention。核心是让注意力既能建立语义对应,又能保留空间和模态特征,而不是简单把两种 embedding 拼起来。
考点 跨模态先要统一表示空间
难度 真实面经题
回答目标 让候选人能从 token 化、位置和模态编码、attention 方向、单流双流取舍、训练目标和工程压缩几个层面系统解释跨模态注意力,并能用具体图文 token 对齐例子展示真正理解融合机制。
02
深入解析
01 先把各模态变成可比较 token
图像通常被切成 patch token、region token 或 object token,文本被切成 word/subword token,音频或视频则可按帧、片段或时频块产生 token。不同模态的原始特征维度不同,需要投影到统一 hidden size,并保留各自的位置、时间或空间信息。
02 显式注入模态和位置信息
跨模态注意力需要知道 token 属于文本、图像、音频还是视频,因此通常会加入 modality type embedding。图像 token 需要二维位置或区域框信息,文本 token 需要序列位置,视频还要时间位置。否则注意力知道有相似特征,却不知道这些特征在什么空间或时间位置。
03 单流融合适合充分交互
单流结构会把文本和视觉 token 拼接后送入同一个 Transformer,让 self-attention 同时覆盖同模态和跨模态关系。优点是交互充分、结构统一;缺点是 token 总长度较长时计算开销大,而且不同模态噪声可能更早混在一起。
04 双流或 cross-attention 更可控
双流结构保留文本编码器和视觉编码器,再用 cross-attention 交换信息。例如文本 token 做 query,图像 token 做 key/value,适合 VQA、图像字幕和视觉 grounding;图像 token 做 query,文本 token 做 key/value,适合文生图或文本引导视觉生成。它的好处是模态边界清晰,便于控制融合层数和计算量。
05 用例子解释 token 对齐
假设文本是「红色手机放在木桌上」,图像 token 包含手机区域、桌面区域和背景区域。cross-attention 中,「手机」token 应关注手机轮廓 patch,「红色」token 应关注机身颜色 patch,「木桌」token 应关注桌面纹理 patch,「放在」则需要关注手机和桌面的空间关系。这个例子能说明注意力不是全局混合,而是细粒度语义到区域的软对齐。
06 融合结果要服务下游任务
跨模态融合后的表示可以用于分类、检索、问答、描述生成、定位或生成控制。不同任务的读出方式不同:检索看全局 pooled embedding,VQA 看问题 token 融合后的答案头,grounding 看文本 token 与区域 token 的匹配,生成任务则把融合表示作为解码条件。
07 训练目标决定对齐粒度
图文对比学习主要学全局语义对齐,image-text matching 学样本级匹配,masked language 或 masked image modeling 学上下文补全,region-word alignment 或 grounding loss 学细粒度区域对齐。只靠全局对比学习,模型可能知道图片和句子相关,但不一定知道哪个词对应哪个区域。
08 工程上控制 token 数和噪声
高分辨率图像、长视频或长文本会让注意力成本快速上升。常见做法是用视觉 token 压缩、query token resampler、分层注意力、局部窗口、稀疏注意力或先检索关键区域。还要用 mask、模态 dropout 和置信度过滤降低无关背景或噪声模态对融合的干扰。
03
易错点
- 只说把图像和文本 embedding 拼起来,没有解释位置、模态类型和维度投影。
- 把 cross-attention 讲成固定公式,不说明 query、key、value 分别来自哪个模态以及为什么。
- 只讲全局图文对齐,不讲词到区域、词到 patch 或时间片的细粒度对齐。
- 忽略视觉 token 数量带来的二次复杂度和显存开销。
- 把注意力可视化当成唯一证据,不用遮挡、grounding 或下游任务验证对齐。
- 没有区分单流 self-attention、双流 co-attention 和解码器 cross-attention 的适用场景。
- 忽略模态缺失、噪声模态和背景区域对融合结果的干扰。
- 讲例子时只说语义融合,没有具体说明「红色」「手机」「桌子」分别对齐哪些视觉区域。
04
面试官追问
cross-attention 和把 token 直接 concat 后 self-attention 有什么区别?
concat 后 self-attention 是单流融合,所有 token 之间都可以直接交互,结构简单但计算成本随总长度平方增长。cross-attention 通常保留各自编码器,只在指定层让一个模态 query 另一个模态,融合方向、层数和计算量更可控,也更容易解释某个任务到底由哪种模态读取哪种信息。
如何判断跨模态注意力真的学到了对齐?
可以从定量和定性两方面看。定量上看跨模态检索、VQA、grounding、referring expression、区域定位等任务;定性上可视化词到 patch 的注意力,但不能只靠注意力图下结论。更可靠的是用遮挡实验或反事实样本,遮掉被关注区域后模型答案应该明显变化。
视觉 token 很多时为什么不能直接全量 cross-attention?
因为注意力计算和显存会随 query 数和 key/value 数相乘增长,高分辨率图像或视频会让成本过高。全量 token 还会引入大量背景噪声。常见做法是先用视觉 backbone 下采样,或用少量 learnable query、region proposal、pooling、Perceiver resampler 把视觉信息压缩成较少 token。
多模态模型里如何处理模态缺失?
训练时可以做 modality dropout,让模型习惯只使用文本模态或视觉模态;结构上要有 mask 表示某个模态缺失,避免空 token 被当成真实证据。推理时如果图像缺失,文本分支仍能工作;如果文本缺失,视觉分支可以输出视觉任务结果,但回答要降低对缺失模态的确定性。
如何把空间关系融入注意力?
除了 patch 的二维位置编码,还可以加入 region box 坐标、相对位置 bias、对象检测框、深度或布局特征。对于「左边」「上方」「放在」这类关系,仅知道 object 类别不够,模型需要空间位置和相对关系信号,才能把文本关系词对齐到图像布局。