loading

Loading

探索与发现

首页 AI 前沿

跨模态注意力对齐:软分配之外还有哪些选择

分类:AI 前沿
字数: (2419)
阅读: (3)
0
摘要:从交叉注意力的软分配问题出发,拆解多头塌缩、语言侧先验过强与长序列成本,再对比硬对齐、双向注意力和生成式对齐几条路线,以及 VITA、BLIP-2 在工程成本上的实际边界。

做图文检索或视觉问答的项目,交叉注意力的代码基本是从 Transformer 抄来的那一套:Query 来自一个模态,Key/Value 来自另一个模态,算得分、缩放、Softmax、加权求和。看起来很清楚,实际调起来经常遇到几个具体问题:文本里一个不起眼的词把大量权重吸到背景植被上;训练早期视觉信息一注入就把语言侧的能力打散;长视频或大图进来以后序列开方级增长,显存先顶不住。这些不是抄代码能解决的,根子在于对齐方式本身的设计。

缩放点积背后偏了多少

标准交叉注意力是软分配。一个文本 token 会对所有图像区域给出概率,加起来等于 1。选对了看起来像“注意力像聚光灯”,选错了就是权重被分给一堆无关区域,而 Softmax 不会告诉你有多少浪费掉了。

工程上最先遇到的是注意力塌缩:多个 head 学到几乎一样的权重分布,宏观上多头等于单头。配合可以检查每层 head 之间的余弦相似度,均值长期高于某个阈值,基本说明视觉侧的信息没有被分角度利用。第二个陷阱是语言侧先验过强。如果只在冻住的 LLM 前面加交叉注意力层,文本表征已经把语义关系编码好了,视觉特征在训练初期只会被当成无关噪声。Flamingo 引入 GatedCrossAttention 正是为了解决这个问题:门控把视觉注入的量先压到很低,随着训练再打开,否则早期接入大概率会把原模型性能打坏。

几种绕开软分配的做法

既然每个文本词保留一个最相关区域的思路能降低计算并提升对齐质量,就出现了硬对齐路线。CHAN 提出跨模态硬对齐网络,对每个文本词只保留得分最高的图像区域,其余权重置零。它省去了在无意义组合上的乘法,但代价也很直接:梯度稀疏,训练对初始化更敏感,得分接近的两个区域谁被选中往往随意。实际落地时,硬对齐是否稳定还得看有没有配套的蒸馏或对比损失来稳住表征空间。

双向路线是另一个方向。RELAX 引入自适应嵌入,让注意力不再是单向的“文本看图像”,而是两个模态特征互相调制。这更接近人类看图的机制,但也把每层计算量提了上去,batch 一大就很难排进集群。

还有一条容易被忽略的路线是生成式对齐。SyCoCa 让模型根据文本提示重建被遮盖的图像部分。表面上是生成任务,本质是要求对齐能撑住一句描述被落到具体像素位置的信度。这类任务的监督信号比图文配对更稠密,做视觉落地场景时值得优先试。

先对齐再融合的顺序

双流与单流的争论,工程上看的是成本分配。ViLBERT 和 LXMERT 的双流方案给两种模态各自一个编码器,在交叉注意力层做双向互动,效果好但参数和计算都重。ViLT 把图像块和文本词拼成一个序列丢进单个标准 Transformer,跳过了区域特征提取,速度能快出几十倍量级,代价是精细的局部关系要依赖模型自身从头学。

ALBEF 的思路值得借鉴:先用对比学习把图文特征拉近,再让交叉注意力做融合。对比阶段和融合阶段分开,可以让交叉注意力一开始面对的就不是完全异构的特征空间。BLIP-2 走得更远,Q-Former 用一组可学习的查询嵌入,通过交叉注意力从视觉侧硬挤出与文本指令相关的信息,而只训练这一小部分参数。训练成本低,但也意味着下限取决于主干还能被这一小块接头驱动多少,指令稍微偏离预训练分布,桥接层就无从补足。

和“视觉编码器+LLM拼接”相对的是 VITA 推的原生多模态路径。VITA 把图片、视频、音频和文本放进一套训练流程里完成端到端融合,没有分别处理再拼接。它的算例很具体:视觉输入统一缩放到 448×448,编码成 256 个 token;视频按 1 帧每秒采样,音频按 12.5Hz 进入模型。论文或文档里主版本为 8B,精简版 4B。底座是腾讯优图自研的 Youtu-LLM。这种参数共享的代价是可插拔性变差,换视觉编码器不再是改个配置的事。

成本都压在序列上

注意力计算在标准实现下与序列长度平方成正比,多模态恰好擅长把那长度拉长。一张图就是 256 个 token,一分钟视频再乘 60 帧,序列还没算文本就已经没法整段装。生产里能做的是向外分层:底层限定局部注意力窗口把开销压住,顶层再开全局;跨模态之间则用稀疏模式,只让已被检索加粗的图文区域参与细算。VLMo 干脆按模态分专家,输入进来只激活最相关的专家网络,用条件计算控制成本。这些办法能缓解,但都没有改变“把两类数据映射到一个足够长的序列”这个根本前提。

效果怎么量、边界在哪

最直接的基线还是图文检索,用 Recall@K 看命中。R@1 反映最严情况:第一个结果就对的比例有多高。但单看 R@1 容易骗自己。真实场景可能是 top-3 里给用户翻两下才找到,这就要求项设置别的反馈节奏,比如检索列表的头三条真相关率。视觉问答另算一套,还得看每次错的时候是没看对地方还是理解错关系。这两类失败不好自动区分,很多团队最终还是看一批人工标注里“注意力落到哪”,配合把注意力图与文本词做对齐抽查,因为指标本身无法暴露那部分。

相比性能数字,更值得先划清的是当前方法的边界。模型大多停在语义层面的近似匹配上。检测框贴着关键词就够了,但“羽毛状”“软”这类材质、物理属性问答依然容易翻车——是文本概念与视觉纹理之间只做词级匹配、约等于单字对应到纹理区域,几乎没有推演的过程,深度因果理解仍未验证。数据方面,网上抓的图文对很难保证无噪声,BLIP 用自生成描述再筛选来自保,这种流程在长尾领域经常去掉太多,导致覆盖不足、某类模态组合缺数据,泛化在落地场景就会大打折扣。

落地建议:先分清任务是“找对区域”还是“推对关系”。如果前者靠常规交叉注意力加多层对齐就能稳定,别直接跳到原生统一架构担全量成本;如果后者还没吃透,可以先上生成式对齐这类下应力更沉的任务补充判别信号。每条额外链路都要有单独可看的亏损记录,否则很难定位是人、是数据还是架构在对齐过程中放了水。

转载请注明出处: 皮哈皮阿

本文的链接地址: https://blog.phpat.com/ai-frontier/635.html

手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

您可能对以下文章感兴趣
1 / 1
预览图