论文解读:VATT

论文解读系列文章目录



一、大规模的多模态视频有可能为 Transformer 提供建模视觉世界所需的内在先验,而非预定义的归纳偏差。什么意思?

这句话的意思是,大规模的多模态视频数据可以通过让 Transformer 在大量真实世界的视觉数据上进行学习,逐渐获得对视觉世界的“内在先验”知识,而不需要依赖于设计者手动加入的“预定义归纳偏差”。

具体来说:

  1. 内在先验:指的是模型在大量数据中自动学习到的一些规律性和知识,例如物体的形状、运动模式、场景的时间序列信息等。这种先验是基于数据驱动的,模型通过观察大量视频,逐渐理解视觉世界的结构和动态特征。

  2. 预定义的归纳偏差:传统的卷积神经网络(CNN)带有手动设计的归纳偏差,比如卷积操作是基于局部空间邻域的假设,适合捕捉图像的局部特征。这种预定义的偏差虽然有效,但在捕捉更复杂的、全局的视觉关系时可能存在局限。

因此,利用大规模多模态视频数据,Transformer 不必依赖于卷积之类的预定义偏差,而是通过自主学习,逐步构建起一种对视觉世界的更全面的理解,这样的理解包含了视觉场景中的各种模式和依赖关系。这种方式可能让模型在处理复杂的视觉任务时更加灵活和精确。

二、VIT也需要大量带标签数据吗?

是的,ViT(Vision Transformer) 也需要大量带标签的数据才能有效训练。由于 ViT 采用了全注意力机制,与 CNN 不同,它缺乏对视觉数据的归纳偏差(如平移不变性和局部性),因此更依赖于大规模的带标签数据来学习图像中的模式和特征。ViT 的最初研究使用了在数百万张图像(如 ImageNet-21k 或 JFT-300M)上的监督预训练,才能在下游图像分类任务中取得良好性能。

然而,后续的研究也探索了通过自监督学习方式来减少对大量标注数据的需求,例如采用对比学习和掩码图像建模,使 ViT 能在未标注数据上进行有效的预训练,从而在标注数据较少的情况下也能实现良好的效果。

三、“该方案使我们可以使用 ⌈ T / t ⌉ + ⌈ H / h ⌉ + ⌈ W / w ⌉ ⌈T/t⌉ + ⌈H/h⌉ + ⌈W/w⌉ T/t+H/h+W/w个位置嵌入来对视频片段中的所有 ⌈ T / t ⌉ ⋅ ⌈ H / h ⌉ ⋅ ⌈ W / w ⌉ ⌈T/t⌉ \cdot ⌈H/h⌉ \cdot ⌈W/w⌉ T/tH/hW/w个patch进行编码。”怎么理解

“该方案使我们可以使用 ⌈ T / t ⌉ + ⌈ H / h ⌉ + ⌈ W / w ⌉ ⌈T/t⌉ + ⌈H/h⌉ + ⌈W/w⌉ T/t+H/h+W/w个位置嵌入来对视频片段中的所有 ⌈ T / t ⌉ ⋅ ⌈ H / h ⌉ ⋅ ⌈ W / w ⌉ ⌈T/t⌉ \cdot ⌈H/h⌉ \cdot ⌈W/w⌉ T/tH/hW/w个patch进行编码。”这句话的意思是,通过定义三个不同维度的可学习位置嵌入(即时间、水平和垂直方向),我们可以在编码所有视频片段的patch位置时减少嵌入向量的数量,而无需为每个patch单独创建位置嵌入。

具体解释如下:

  1. 视频片段划分为patch:假设视频片段的时间维度是 T T T,高度是 H H H,宽度是 W W W,每个patch的时间尺寸是 t t t,高度是 h h h,宽度是 w w w,那么视频将被划分成 ⌈ T / t ⌉ ⋅ ⌈ H / h ⌉ ⋅ ⌈ W / w ⌉ ⌈T/t⌉ \cdot ⌈H/h⌉ \cdot ⌈W/w⌉ T/tH/hW/w个patch。

  2. 位置嵌入的方案:为了对这些patch的空间和时间位置进行编码,我们定义了三个方向的嵌入:时间方向的 E T e m p o r a l ∈ R ⌈ T / t ⌉ × d E_{Temporal} \in \mathbb{R}^{⌈T/t⌉ \times d} ETemporalRT/t×d、水平(宽度)方向的 E H o r i z o n t a l ∈ R ⌈ H / h ⌉ × d E_{Horizontal} \in \mathbb{R}^{⌈H/h⌉ \times d} EHorizontalRH/h×d和垂直(高度)方向的 E V e r t i c a l ∈ R ⌈ W / w ⌉ × d E_{Vertical} \in \mathbb{R}^{⌈W/w⌉ \times d} EVerticalRW/w×d。每个方向的嵌入都是独立的可学习向量序列。

  3. 嵌入的组合:对于视频中的每个patch,其位置由时间、水平和垂直三个维度的索引 ( i , j , k ) (i, j, k) (i,j,k)确定,因此它的最终位置嵌入为:
    e i , j , k = e T e m p o r a l i + e H o r i z o n t a l j + e V e r t i c a l k e_{i,j,k} = e_{Temporal_i} + e_{Horizontal_j} + e_{Vertical_k} ei,j,k=eTemporali+eHorizontalj+eVerticalk
    这样,通过组合每个维度的嵌入,可以唯一确定每个patch的位置表示。

  4. 嵌入的数量减少:这种方法只需要 ⌈ T / t ⌉ + ⌈ H / h ⌉ + ⌈ W / w ⌉ ⌈T/t⌉ + ⌈H/h⌉ + ⌈W/w⌉ T/t+H/h+W/w个位置嵌入,而不是为每个patch分别定义一个嵌入。因此,尽管视频片段有 ⌈ T / t ⌉ ⋅ ⌈ H / h ⌉ ⋅ ⌈ W / w ⌉ ⌈T/t⌉ \cdot ⌈H/h⌉ \cdot ⌈W/w⌉ T/tH/hW/w个patch,我们仅需使用三个方向嵌入的总和来表示它们的位置。这种设计减少了所需位置嵌入的数量,从而节省了计算和存储资源。

简而言之,通过定义时间、水平和垂直三个方向的嵌入,我们可以对所有patch的位置进行唯一编码,而不需要为每个patch定义独立的嵌入。

四、举个例子

假设一个视频片段的尺寸为 T = 4 T=4 T=4 H = 4 H=4 H=4 W = 4 W=4 W=4,即时间、宽度和高度均为4。我们将这个视频片段划分为 2 × 2 × 2 2 \times 2 \times 2 2×2×2大小的patch块,其中每个patch的时间尺寸 t = 2 t=2 t=2,高度 h = 2 h=2 h=2,宽度 w = 2 w=2 w=2。这样,视频被分割成 ⌈ 4 / 2 ⌉ ⋅ ⌈ 4 / 2 ⌉ ⋅ ⌈ 4 / 2 ⌉ = 2 ⋅ 2 ⋅ 2 = 8 ⌈4/2⌉ \cdot ⌈4/2⌉ \cdot ⌈4/2⌉ = 2 \cdot 2 \cdot 2 = 8 4/24/24/2=222=8个patch。

1. 定义三个方向的嵌入

为了对这些patch的位置进行编码,我们定义以下三个维度的可学习嵌入:

  • 时间方向的嵌入 E T e m p o r a l ∈ R 2 × d E_{Temporal} \in \mathbb{R}^{2 \times d} ETemporalR2×d,表示视频时间分块后的2个位置( i = 0 i=0 i=0 i = 1 i=1 i=1),假设 d = 3 d=3 d=3
  • 水平(宽度)方向的嵌入 E H o r i z o n t a l ∈ R 2 × d E_{Horizontal} \in \mathbb{R}^{2 \times d} EHorizontalR2×d,表示视频宽度分块后的2个位置( j = 0 j=0 j=0 j = 1 j=1 j=1)。
  • 垂直(高度)方向的嵌入 E V e r t i c a l ∈ R 2 × d E_{Vertical} \in \mathbb{R}^{2 \times d} EVerticalR2×d,表示视频高度分块后的2个位置( k = 0 k=0 k=0 k = 1 k=1 k=1)。

每个方向的嵌入向量具体表示各个方向的相对位置。

2. 计算每个patch的最终位置嵌入

每个patch的位置通过其在时间、宽度和高度方向的索引 ( i , j , k ) (i, j, k) (i,j,k)来确定,最终的位置嵌入为:
e i , j , k = e T e m p o r a l i + e H o r i z o n t a l j + e V e r t i c a l k e_{i,j,k} = e_{Temporal_i} + e_{Horizontal_j} + e_{Vertical_k} ei,j,k=eTemporali+eHorizontalj+eVerticalk

3. 位置嵌入示例

以下是每个patch的位置和对应的嵌入:

  • Patch (0, 0, 0):位置嵌入为 e T e m p o r a l 0 + e H o r i z o n t a l 0 + e V e r t i c a l 0 e_{Temporal_0} + e_{Horizontal_0} + e_{Vertical_0} eTemporal0+eHorizontal0+eVertical0
  • Patch (0, 0, 1):位置嵌入为 e T e m p o r a l 0 + e H o r i z o n t a l 0 + e V e r t i c a l 1 e_{Temporal_0} + e_{Horizontal_0} + e_{Vertical_1} eTemporal0+eHorizontal0+eVertical1
  • Patch (0, 1, 0):位置嵌入为 e T e m p o r a l 0 + e H o r i z o n t a l 1 + e V e r t i c a l 0 e_{Temporal_0} + e_{Horizontal_1} + e_{Vertical_0} eTemporal0+eHorizontal1+eVertical0
  • Patch (0, 1, 1):位置嵌入为 e T e m p o r a l 0 + e H o r i z o n t a l 1 + e V e r t i c a l 1 e_{Temporal_0} + e_{Horizontal_1} + e_{Vertical_1} eTemporal0+eHorizontal1+eVertical1
  • Patch (1, 0, 0):位置嵌入为 e T e m p o r a l 1 + e H o r i z o n t a l 0 + e V e r t i c a l 0 e_{Temporal_1} + e_{Horizontal_0} + e_{Vertical_0} eTemporal1+eHorizontal0+eVertical0
  • Patch (1, 0, 1):位置嵌入为 e T e m p o r a l 1 + e H o r i z o n t a l 0 + e V e r t i c a l 1 e_{Temporal_1} + e_{Horizontal_0} + e_{Vertical_1} eTemporal1+eHorizontal0+eVertical1
  • Patch (1, 1, 0):位置嵌入为 e T e m p o r a l 1 + e H o r i z o n t a l 1 + e V e r t i c a l 0 e_{Temporal_1} + e_{Horizontal_1} + e_{Vertical_0} eTemporal1+eHorizontal1+eVertical0
  • Patch (1, 1, 1):位置嵌入为 e T e m p o r a l 1 + e H o r i z o n t a l 1 + e V e r t i c a l 1 e_{Temporal_1} + e_{Horizontal_1} + e_{Vertical_1} eTemporal1+eHorizontal1+eVertical1

4. 总结

尽管有8个patch,但我们只需定义2个时间、2个宽度和2个高度方向的嵌入,共计 2 + 2 + 2 = 6 2 + 2 + 2 = 6 2+2+2=6 个位置嵌入。这些位置嵌入组合起来就能唯一标识每个patch的位置,而不需要定义8个独立的位置嵌入。这种方法有效减少了所需的嵌入数量,提高了模型效率。

五、这种层次结构背后的主要直觉是,不同模态具有不同层次的语义粒度,因此在公共空间投影中应引入这一归纳偏差。类似于[1],我们对 g a → v a ( . ) g_{a \rightarrow va}(.) gava(.) g t → v t ( . ) g_{t \rightarrow vt}(.) gtvt(.) g v → v t ( . ) g_{v \rightarrow vt}(.) gvvt(.)使用线性投影,而对 g v → v a ( . ) g_{v \rightarrow va}(.) gvva(.)则使用带有中间ReLU的两层投影。为简化训练过程,每个线性层之后都使用批归一化。什么意思?

在不同模态(视频、音频、文本)之间建立公共空间投影时,我们利用了这些模态之间的层次性语义差异,即它们在表达语义时的细粒度程度不同。为了在模型中引入这种差异,我们对各模态的公共空间投影头采用了不同的设计:

  1. 线性投影:对于音频到视频-音频公共空间 ( g a → v a ( . ) g_{a \rightarrow va}(.) gava(.))、文本到视频-文本公共空间 ( g t → v t ( . ) g_{t \rightarrow vt}(.) gtvt(.)) 以及视频在视频-音频公共空间中的嵌入投影到视频-文本公共空间 ( g v → v t ( . ) g_{v \rightarrow vt}(.) gvvt(.)),我们采用了简单的线性投影层。线性投影层是一种较为直接的映射方式,适合处理语义粒度相对较一致的模态之间的映射。

  2. 两层投影:对于视频到视频-音频公共空间 ( g v → v a ( . ) g_{v \rightarrow va}(.) gvva(.)),我们采用了一个两层的投影网络,中间带有ReLU激活函数。两层投影相比单层的线性投影更复杂,能够更好地捕捉视频这种模态在公共空间中所需的细粒度语义特征。

  3. 批归一化:为了简化训练过程,我们在每个线性层之后都使用了批归一化 (Batch Normalization)。批归一化能够加速收敛并稳定训练,使模型在处理不同模态的投影时更为鲁棒。

总的来说,这种设计是在投影头中加入了不同的归纳偏差,以便更好地适应视频、音频和文本在语义层次上的差异,从而更有效地在公共空间中进行对比学习。

六、定义一个语义分层的公共空间映射 什么叫语义分层?

语义分层指的是信息在语义上的层次结构。具体来说,不同的模态(如视频、音频、文本)可能在语义表达上具有不同的细粒度和层次结构。例如:

  1. 视频通常包含丰富的视觉信息,可以表达动作、场景、物体等细节。
  2. 音频(尤其是语音)可以传达情绪、语气和语音的特征。
  3. 文本则可能更多地关注概念、语义关系和事件描述。

语义分层的公共空间映射的概念可以理解为:为不同模态设计一个共享的表示空间,在该空间中,不同模态的特征被映射到具有层次性语义的公共表示。这种分层映射允许模型在更高层次或更低层次的语义粒度上进行信息的整合和对比。例如,视频和音频可能共享某种“低层次”语义(如情感或情绪),而视频和文本之间可能共享更“高层次”的语义(如事件或场景描述)。

因此,“语义分层的公共空间映射”旨在为不同模态创建一个分层的语义结构,使得不同模态可以在不同的语义层次上找到对应关系和对比点,从而实现更有效的跨模态对齐和信息融合。

七、

八、

九、

十、

十一、

十二、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值