始于
分类:Multimodal
Tags: [ Multimodal ]
Daoxu Qin
Attention Bottlenecks for Multimodal Fusion
Attention Bottlenecks for Multimodal Fusion
大家好,本周给大家分享的论文是来自2021年NIPS 的“Attention Bottlenecks for Multimodal Fusion”。
这篇论文的任务是视频分类,方法是多模态视觉(图像)和音频融合。主要思路是:原始transformer里面的attention层能够freely接触和处理每个token之间的关系,这样对于模态内的冗余信息会造成计算量浪费。所以本文将原始transformer中attention层修改为模态内attention(保持self-attention结构不变)+ 模态间attention(设计cross-attention只在每个模态的部分token之间做attention,避免过度计算冗余信息,降低计算量。并且选择了mid fusion,探讨了fusion层在模型early,mid,late部分的影响。
论文地址:https://github.com/google-research/scenic/tree/main/scenic/projects/mbt
01 Background
人们对世界的认知,对信息的处理是多模态的,而大多数机器学习模型仅针对单模态,所以将各模态的最终表示或预测仍然是主流范式,即先分别处理单个模态数据之后fusion为多模态结果。(也就是先让每个模态先单独处理自己的模态信息,然后再将各自的到的结果在最后阶段整合起来。这种方式虽然简单直接,但可能不是最优的方法,因为他没有充分利用模态间的信息交互)
02 Motivation
为什么选择Transformer模型:因为它有能力对标记之间的密集相关性进行建模,同时不需要对输入的具体内容有太多先验假设(而且连续的感知输入可以被标记化)。通过将密集的连续信号(比如图像、视频或音频)分割成小块(补丁),然后将这些小块转化为一维的标记,==Transformer 在图像分类(如 ViT)、视频分类(如 ViViT)以及最近的音频分类(如 AST)等任务中表现出了很强的竞争力==。
面临的挑战:在模型的所有层都进行完全的成对注意力机制(transformer里面的attention能够自由、充分地接触和处理来自每个模态的每个维度的信息),这是不必要的。例如,在一个视频中,可能相邻的几帧图像非常相似,包含了大量重复的信息,如果在所有层都进行完全的成对注意力计算,会浪费很多计算资源,因为很多信息是冗余的,不需要重复关注。另一方面,由于成对注意力与标记序列长度的二次复杂性,这样的attention无法很好进行扩展,对于长时间的视频处理,计算量太大。
03 Method
本文的方法:
1) 第一种方式遵循多模态学习中的常见范式,即把跨模态的信息交流限制在网络的后期层,这样早期层就可以专门学习和提取单模态的模式,这种方式被称为 “中期融合”(如图 1 左中所示),引入跨模态交互的层被称为 “融合层”。而这种方式的两个极端版本是 “早期融合”(所有层都是跨模态的)和 “后期融合”(所有层都是单模态的),并且将这两个极端版本作为基线来进行比较。
图 1:跨模态融合。与晚期融合(左)不同,在晚期融合中,直到分类器之后模型中才交换跨模态信息,我们研究了两种跨模态信息交换途径。第一种是通过一层中所有隐藏单元之间的标准成对自注意力,但仅应用于模型的后期层 —— 中期融合(中左)。我们还提出使用 “融合瓶颈”(中右),它通过紧密的潜在单元限制一层内的注意力流。这两种限制形式可以结合使用(瓶颈中期融合)以获得最佳性能(右)。我们展示了每个模态有个$B=4$瓶颈单元和 3 个隐藏单元。灰色框表示接收来自音频和视频标记注意力流的标记。
图3:空间注意力机制捕捉顶点之间的时变成对相关性。
2) 第二个想法(也是主要贡献)是限制层内标记之间的跨模态注意力流。通过允许注意力在一个模态内自由流动来做到这一点,但在与另一个模态共享之前,模型必须整理和“浓缩”每个模态的信息。核心思想是引入一小组潜在的融合单元,形成一个“注意力瓶颈”,层内的跨模态交互必须通过该瓶颈。
图 2:应用于视听输入的多模态融合 Transformer。输入序列由图像和频谱图块组成。然后将它们投影为标记,并附加到特殊的 CLS(分类)和 FSN(融合瓶颈)标记上。我们的 Transformer 编码器随后使用自注意力对单模态信息进行建模,并通过在网络的多层中与瓶颈标记进行交叉注意力来限制跨模态信息的流动。
3.1. ViT和AST架构
① ViT和AST来源:它们改编自最初为自然语言处理设计的 Transformer 架构。
② ViT和AST的基本原理:关键思路是从输入(比如 RGB 图像或音频频谱图)中提取出 $N$ 个不重叠的小块(patch),每个小块用$x_{i}$表示,维度是$\mathbb{R}^{h ×w}$,然后将它们转换为一系列的 1D 标记(token)$z_{i} $,维度是$\mathbb{R}^{d}$。具体的转换公式是$z = g(x; E, z_{cls}) = [z_{cls}, Ex_{1}, Ex_{2},…, Ex_{N}] + p$ 。这些标记随后会通过一个编码器,这个编码器由 $L$个 Transformer 层组成。
③ 编码器结构:transformer的tokens通过一个由L个Transformer层组成的编码器。每一个transformer层包含使用残差连接的多头自注意力模块 Multi-Headed Self-Attention (MSA), 层正则化模块 Layer Normalisation (LN) 和多层感知机模块 Multilayer Perceptron (MLP) 。将一个Transformer层表示为$z^{l + 1} = Transformer(z^{l})$,即$y^{l} = MSA(LN(z^{l})) + z^{l}$ ,$z^{l + 1} = MLP(LN(y^{l})) + y^{l}$ 其中,MSA进行点积的注意力操作,其querys,keys 和 values 是同一个向量经过不同的线性映射得到的,可表示为$MSA(X) = Attention(W^{Q}X, W^{K}X, W^{V}X)$。本文还定义的在两个不同向量$X$、$Y$之间进行的cross-attention操作(用于多模态操作),其中querys来自X,而keys和values来自Y,可以表示为:$MCA(X, Y) = Attention(W^{Q}X, W^{K}\dot{Y}, W^{V}Y)$
3.2. 多模态Transformer
3.2.1 通过普通自注意力进行融合
① 动机:将常规的 Transformer 直接应用于多模态输入,形成 “vanilla” 融合模型。
② 方法:对于给定的t秒视频片段,均匀采样 F 个 RGB 帧,并将音频波形转换为单个频谱图。然后,按照 ViT 中的编码方式,分别对每个帧和频谱图进行嵌入,然后将所有标记连接成一个单一序列。
③ 公式表达:形式上,从所有F个采样帧中总共提取了$N_{v}$个RGB pathces(每个 pathces表示为$x_{rgb} \in \mathbb{R}^{N_{v}×d}$)和$N_{a}$个频谱图 pathces(每个pathces表示为$x_{spec} \in \mathbb{R}^{N_{a}×d}$),最终得到的标记序列表示是: $z = [z_{rgb} | z_{spec}]$,其中$z_{rgb} = g(x_{rgb}; E_{rgb}, z_{cls - rgb})$且$z_{spec} = g(x_{spec}; E_{spec}, z_{cls - spec})$ (4)。
④ 解释:$| $表示拼接操作。视觉和音频的映射矩阵$E_{rgb}$, $E_{spec}$是不同的,他们的类别标签$z_{cls-rgb}$,$z_{cls-spec}$也是每个模态特有的。
然后使用原始的transformer对上述标记序列进行处理:$z^{l + 1} = Transformer(z^{l}; \theta)$。该模型下,transformer中的self-attention模块能够自由地提取和处理来自不同模态的所有信息(视觉patches和音频patches)。
3.2.2 使用模态特定参数进行融合
① 方法:作者将3.2.1的模型改为每种模态各自训练自己的参数(即modality-specific),然后使用cross-attention来做信息交换。
② 公式表达:作者定义了一个cross-transformer层:$z_{rgb}^{l + 1} = Cross - Transformer(z_{rgb}^{l}, z^{l}; \theta_{rgb})$ ,$z_{spec}^{l + 1} = Cross - Transformer(z_{spec}^{l}, z^{l}; \theta_{spec})(5)$
③ 解释:其中$z^{l}$是$z_{rgb}^{l},z_{spec}^{l}$的拼接, corss-transformer的输入是不完全一样的两个输入(不同于原始transformer),它的过程与原始transformer的差距在于公式(2)变为下面的公式(6),用cross-attention替换了原始attention。当参数一样时,本节的方法和3.2.1就是一样的。 $y^{l} = MCA(LN(z_{1}^{l}), LN(z_{2}^{l})) + z_{1}^{l}$ (6)
3.2.3 使用attention bottlenecks做fusion
① 动机:为了降低原始attention的成对注意力机制的N方计算复杂性
② 方法:作者在transformer的输入sequence中引入一小组B个融合瓶颈标记$z_{fsn} = [z_{fsn}^{1}, z_{fsn}^{2},…, z_{fsn}^{B}]$(见图2)。
③ 公式表达:那么,现在输入序列为$z = [z_{rgb} \parallel z_{fsn} \parallel z_{spec}]$ 然后作者将跨模态的attention限制在这些bottlenecks内,对于层layer而言,计算过程变为: $[z_{rgb/spec}^{l + 1} \parallel \hat{z}{fsn{i}}^{l + 1}] = Transformer([z_{rgb/spec}^{l} \parallel z_{fsn}^{l}]; \theta_{i})$(8),$z_{fsn}^{l + 1} = Avg_{i}(\hat{z}{fsn{i}}^{l + 1})$ (9)。
④ 解释:这里i索引每个模态(在这种情况下为RGB和Spec),并且$z_{rgb}$和$z_{spec}$只能通过Transformer层内的瓶颈$Z_{fsn}$交换信息。我们首先创建特定于模态的临时瓶颈融合标记$\hat{z}{fsn{i}}$,它们与音频和视觉信息同时分别更新(公式8)。然后在公式9中对每个跨模态更新的最终融合标记进行平均。
作者还对bottleneck tokens的非对称更新进行了实验(见附录),发现这种选择的性能是稳健的。作者保持网络中bottleneck tokens的数量远小于每个模态的潜在单元的总数(B«Nv和B«Na)。
由于所有跨模态注意力流都必须通过这些单元,这些紧密的“融合”bottlenecks迫使模型压缩来自每个模态的信息,并共享必要的信息。正如在实验中所示,这增加或保持了多模态融合的性能,同时降低了计算复杂性。作者还注意到,此提法对模态的类型和数量是通用的。
3.3 在哪里融合:早期、中期和晚期
① 融合策略概述:通常 Transformer 架构各层操作相同,但多模态学习中常限制早期层单模态处理、后期层引入跨模态连接。此做法基于低层处理低级别特征、高层学习语义概念的理念,如早期图像低级特征与音频融合无益处。
② 具体融合方式:
1) 早期融合模型($L_{f}=0$):从第一层就对 RGB 图像和音频频谱图的标记进行跨模态融合处理,无单模态处理专属层。
2) 晚期融合模型($L_{f}=L$):前面所有层中,RGB 图像和音频频谱图分别进行单模态处理,仅在最后一层融合各自输出的标记。
3) 中期融合模型($0<L_{f}<L$):先对单个模态的标记分别进行$L_{f}$层的普通自注意力操作,之后将所有潜在标记连接,在剩余的$L-L_{f}$层按 3.2 节的融合策略处理,使模型兼具单模态特征学习与跨模态信息融合。
==(3.2节介绍的不同layer内fusion方法,在这一节的应用其实只在后面L-$L_f$层。因为后面这些才是fusion层,前面的$L_f$层是单独处理每个模态信息的部分,不做fusion。一个错误的理解是前面$L_f$层不是很像3.2.1的计算方式吗?其实概念完全不同。)==
3.4 分类
对于上述所有模型变体,本文将CLS标记$z_{cls - rgb}^{L}$和$z_{cls - spec}^{L}$的输出表示传递给同一个线性分类器,并对预softmax logits求平均。
04 Experiments
4.1 数据集和评估协议
① 数据集: 1) AudioSet:含近 200 万 10 秒YouTube视频片段,标注 527 类。由于其动态性(部分视频可能被删除),作者使用了一个平衡的训练子集(mini-AudioSet 或 miniAS),包含20,361个片段,测试集有18,589个片段,且测试集与近期相关研究一致(如Perceiver)。同时,作者还创建了一个更平衡的 500K 样本子集(AS-500K)用于训练。
2) Epic-Kitchens-100:由以自我为中心拍摄的日常厨房活动视频组成,包含 90,000 个时长不等的片段,总时长 100 小时。
3) VGGSound:包含约 200K 个 10 秒视频片段,标注了 309 个声音类别,涉及人类动作、发声物体及人与物体的交互。与 AudioSet 不同,该数据集中每个片段的声源在视频中 “视觉可见”,这在数据集创建时通过图像分类器确保。经过筛选(去除 YouTube 上不可用的片段),最终有 172,427 个训练片段和 14,448 个测试片段。。
② 评估协议:不同数据集依特性与任务采用相应损失函数及评估指标,如AudioSet多标签用二元交叉熵损失和 mAP,Epic-Kitchens-100动作识别用交叉熵损失和 Top-1 动作准确率,VGGSound分类任务用标准交叉熵损失及 Top-1 和 Top-5 分类准确率。
4.2 实现细节
① 架构设置:骨干架构遵循 ViT-Base,对瓶颈融合实验默认用 4 个瓶颈标记,其初始化类似 ViT 位置嵌入。
② 数据处理 1) 采样策略:随机采样 t 秒视频片段训练,各数据集依特点确定 RGB 帧和音频采样参数及提取 patch 方式,如 AudioSet 和 VGGSound 特定帧率采帧、音频转单声道并提特定参数的 log mel 频谱图。
2) 数据增强:图像用随机裁剪、翻转和颜色抖动增强,频谱图用 SpecAugment 处理。
c ③ 架训练参数:基础学习率 0.5,训练 50 个 epoch,用 Mixup 和随机深度正则化,批次大小 64,同步 SGD 结合余弦退火学习率调度在 TPU 加速训练。
④ 推理过程:从片段均匀采样多个时间块并平均视图 logits 得最终结果,测试块数设为 4。
4.3 消融分析
4.3.1 融合策略的实现及相关实验
① 融合策略的实现:
1) 原本的自注意力: 一层内所有隐式单元之间的不受限制的成对注意力( 也就是视觉和音频的单模态表示拼接之后直接输入后面原始的transformer层做fusion)
2) 跨注意力与单独的权重:与Vanilla self-attention类似,但每个模态有独立的权重,潜在单元通过与两个模态的所有其他潜在单元的成对注意力来更新。(不同模态的transformer层参数不同,每种模态的表示的更新都会访问到所有模态的信息(理解主要看3.2.2的公式),也就是attention依然是面向所有模态信息的)
3) 瓶颈融合:所有跨模态注意力必须通过瓶颈融合潜在单元,限制了跨模态信息的流动。(此方式下的每种模态的表示的更新只能通过访问bottleneck tokens进行,也就是attention只在单模态信息bottleneck tokens之间进行)
请注意,这三种融合策略仅描述了层内标记之间的注意力流。
② 权重共享的影响:研究了两种模态共享编码器权重(策略 (i))与使用独立权重(策略 (ii))的影响。实验发现,在早期融合层时,使用独立编码器可提高性能;在后期融合层时,两种方式性能相似,因此后续实验采用独立模态权重。
③ 融合层的影响:针对后两种融合策略(普通注意力和瓶颈融合),研究了不同融合层$L_{f}$(取值为 0、2、4、6、8、10、12)的影响,固定输入跨度$t=4s$和瓶颈标记数量$B=4$,每个实验进行 3 次运行并报告均值和标准差。
图 3:在 AudioSet 数据集上,使用剪辑跨度$t=4$和$B=4$个瓶颈标记时,在不同融合层下使用注意力瓶颈进行融合对性能(左图)和计算量(右图)的影响。注意力瓶颈以较低的计算成本提高了性能。
从图中可以看出,“中间融合”的性能优于早期(Lf=0)和晚期融合(Lf=12),这意味着将融合层放在later的位置,前面的层用来提取模态各自的特征,是有效果的。
④ 注意力瓶颈的影响:在上图3左中可以看出,使用attention bottleneck的模型在所有fusion层数选择下结果都比简单的cross-attention模型好。本文还对模型的计算量进行了实验,使用GFLOPs指标,如上图3右。从中可以看出只用很少的bottleneck tokens数目(B=4),本文的模型计算量(红色线条)就比cross-attention(蓝色线条)低很多,且不随着Lf的变化而变化。
GFLOPs是指每秒十亿次浮点运算(Giga Floating Point Operations Per Second),通常用于衡量计算机或计算设备的浮点运算能力。在深度学习领域,特别是在评估和比较神经网络模型的性能时,GFLOPs通常用来表示模型的计算复杂度和计算效率。
⑤ 瓶颈标记数量的影响: 瓶颈令牌的数量B Number of bottleneck tokens B:
本文还对B=4,36,64,256,1024进行了实验。发现实验结果差距不大(少于0.5mPA),所以本文后续实验均设置B=4。只用4个bottleneck tokens就可以实现多模态融合的性能提升,以及大大降低模型计算量,说明本文的设计很有用。
4.3.2 输入采样和数据集大小
① 采样窗口大小t:
1) 实验设置:对采样窗口t=2、4、6、8(AudioSet中视频均为10s)进行实验。在推理阶段,采样多个窗口以覆盖整个视频。由于频谱图块数量$N_{a}$随$t$变化,为避免内存不足,通过改变帧的步长来保持 RGB 图像块数量$N_{v}$固定。
2) 实验结果:音频和视听融合模型的性能随输入跨度增加而提升,但仅视觉模型性能略有下降。推测原因是固定步长增加,导致训练时随机采样帧数减少。后续实验固定t=8秒。
图 4:在 AudioSet 测试集上,不同输入剪辑跨度的影响。
② 同步与异步采样:
1) 实验设置:考虑到视频中听觉和视觉事件可能不完全对齐,研究对不同模态的同步和异步采样进行测试。异步采样时,每个模态从整个视频片段中独立采样输入窗口,结果见附录图 8。
图 8:RGB 和三维频谱图输入的异步与同步采样。。
2) 实验结果:发现两种采样方式对性能影响不大,为简化实验,==后续均采用同步采样==。
③ 模态 MixUp:
1) 实验设置:在训练应用 Mixup 正则化时,有两种应用方式。标准方式是从 Beta 分布中采样一组混合权重生成所有虚拟模态 - 标签对;改进方式为模态 MixUp,即每个模态独立采样权重。
2) 实验结果:模态 MixUp 增强了数据增强效果,使 AudioSet 上的性能从$42.6mAP$略微提升至$43.9mAP$。
④ 数据集大小的影响:实验显示训练样本数量变化对性能有单调影响,数据集越大性能越好,且音频模态性能提升比视觉模态更明显,结果见图 5。
图 5:训练数据大小对 AudioSet 测试集的影响。
4.4 结果
5 结语
本文提出了一个新的基于transformer的音视频融合结构,探讨了一些列使用cross-attention进行模态融合的策略。
未来可以考虑将MBT应用于更多模态,比如文本和光流。
进一步的影响: 多模态融合是机器学习中的一个重要领域,对许多单模态问题的解决提供了新的思路。 transformer很好用但是计算量较大,本文提出的bottlenecks策略可以有效降低其计算复杂性。有利于transformer的广泛利用。 作者发现训练数据集如果包含偏差,可能会使在其上训练的模型不适合某些任务。因此,人们可能会(有意或无意)使用分类模型来做出对社会不同群体产生不同影响的决策,在部署、分析和构建这些模型时牢记这一点很重要。