多模态论文:Align before Fuse(ALBEF)赏析(附常用部分CV方法)

1.随笔

1.1 优势

不需要边界框注释或高分辨率图像

1.2 概述(直译)

提出了 ALign BEF (ALBEF)1,这是一种解决这些限制的新 VLP 框架。(视觉和语言预训练旨在从大规模图像-文本对中学习多模态表示,可以改善下游视觉和语言(V+L)任务。)首先使用无检测器图像编码器和文本编码器独立编码图像和文本。然后使用多模态编码器通过跨模态注意力将图像特征与文本特征融合。我们在单模态编码器的表示上引入了一个中间的图像-文本对比(ITC)损失,这有三个目的:
(1)对齐图像特征和文本特征,使多模态编码器更容易进行跨模态学习;
(2)改进了单模态编码器,以更好地理解图像和文本的语义;
(3)学习一个通用的低维空间来嵌入图像和文本,这使得图像-文本匹配目标能够通过我们的对比硬负挖掘找到更多的信息样本

1.3 动量蒸馏

为了提高噪声监督下的学习,我们提出了动量蒸馏(MoD),这是一种简单的方法,使模型能够利用更大的未经策划的web数据集。在训练期间,我们通过取其参数的移动平均值来保持模型的动量版本,并使用动量模型生成伪目标作为额外的监督。使用 MoD,该模型不会因产生与 Web 注释不同的其他合理输出而受到惩罚。我们表明 MoD 不仅改进了预训练,还改进了带有干净注释的下游任务。我们从互信息最大化的角度为ALBEF提供了理论依据。具体来说,我们表明 ITC 和 MLM 最大化图像-文本对不同视图之间的互信息的下界,其中视图是通过从每对中获取部分信息来生成的。从这个角度来看,我们的动量蒸馏可以解释为生成具有语义相似样本的新视图。因此,ALBEF 学习对语义保留转换不变的视觉语言表示。

1.3.1 解释

动量蒸馏为是指在训练过程中,维护一个模型参数的更新版本,在本文中该版本通过对当前模型参数进行移动平均来计算。

1.3.2 计算方式

1.初始化

  • 动量版本的参数初始化为与当前模型参数相同。
    θ momentum 0 = θ 0 \theta_{\text{momentum}}^0=\theta^0 θmomentum0=θ0

其中 θ m o m e n t u m \theta_{\mathrm{momentum}} θmomentum 表示动量版本的参数 θ \theta θ 表示当前模型的参数。
2.更新

  • 在每个训练步(每次梯度更新)后,更新动量版本的参数。
    θ m o m e n t u m t = β θ m o m e n t u m t − 1 + ( 1 − β ) θ t \theta_{\mathrm{momentum}}^t=\beta\theta_{\mathrm{momentum}}^{t-1}+(1-\beta)\theta^t θmomentumt=βθmomentumt1+(1β)θt
    其中,β是动量系数(通常设定为一个接近于1的值,本文中为0.5,t表示当前时间步。

1.3.3 动量版本的优势

1.平滑参数变化:动量版本通过移动平均平滑了参数的变化,减少了训练过程中参数的波动,使模型更稳定。
2.生成伪目标:动量版本可用于生成伪目标。因为动量版本的参数变化较慢,通常比当前模型参数更稳定,用于生成伪目标时能够提供更可靠的监督信息。
3.防止过拟合:在噪声监督或数据质量不高的情况下,动量版本能防止模型对噪声数据过拟合,因为动量版本的参数是多次更新的平滑结果,不容易被单一噪声数据点影响。

1.3.4 本文参考的论文Momentum Contrast for Unsupervised Visual Representation Learning(MoCo)粗略介绍2

先放框架图:

在这里插入图片描述
1.核心思想:

  • 对比学习:本文虽然基于对比学习,却将对比学习归纳为了一个字典查询任务(下文会详细介绍,请继续阅读)。
  • 动量编码器:采用动态蒸馏的方法,在MoCo中,使用两个编码器:一个是在线编码器(encoder),另一个是动量编码器(momentum encoder)。动量编码器的参数是在线编码器参数的指数滑动平均,这确保了动量编码器更新得更加稳定和缓慢,从而生成一致的特征表示。
  • 动态字典:MoCo构建了一个包含大量样本的动态字典,这些样本的特征表示来自动量编码器。字典中的样本不断更新,新样本加入时旧样本被移除,从而保持字典的新鲜性和多样性。

2.MoCo方法的具体步骤(为什么说MoCo将对比学习归纳为了字典查询任务)
(1)输入和编码:给定一个图像,使用数据增强技术生成两个视图(例如不同的裁剪、颜色抖动等)。一个视图通过在线编码器生成查询特征表示 q q q,另一个视图通过动量编码器生成键特征表示 k + k^+ k+ (正样本)。
(2)构建对比对:将查询特征 q q q与键特征 k + k^+ k+进行对比,同时与动态字典中的负样本特征 k − k^− k进行对比。动态字典中的负样本特征也是由动量编码器生成的。
(3)对比损失:使用对比损失(如InfoNCE损失),将查询特征 q q q与正样本特征 k + k^+ k+的相似性最大化,同时与负样本特征 k − k^- k的相似性最小化。
损失函数的定义如下:
L q = − log ⁡ exp ⁡ ( q ⋅ k + / τ ) ∑ i = 0 K exp ⁡ ( q ⋅ k i / τ ) \mathcal{L}_q=-\log\frac{\exp(q\cdot k_+/\tau)}{\sum_{i=0}^K\exp(q\cdot k_i/\tau)} Lq=logi=0Kexp(qki/τ)exp(qk+/τ)
其中 τ τ τ为温度参数3,控制分布的平滑程度。
(4)动量更新:

  • 在线编码器的参数通过反向传播和优化器(如SGD或Adam)进行更新。
  • 动量编码器的参数通过指数滑动平均进行更新: θ k ← m θ k + ( 1 − m ) θ q \theta_k\leftarrow m\theta_k+(1-m)\theta_q θkmθk+(1m)θq,其中其中, m m m是动量系数(通常接近于1,如0.999), θ k ​ θ_k​ θk θ q θ_q θq分别是动量编码器和在线编码器的参数。

这里有必要提一点为,在初始阶段模型起初的时候动量编码器未经过训练,如何确定动量编码器生成的数据为正样本或负样本。
在训练开始时,动量编码器和在线编码器的参数通常被初始化为相同的值。因此,初始时动量编码器的输出与在线编码器是相似的。随着训练的进行,在线编码器的参数通过反向传播进行更新,而动量编码器的参数是在线编码器参数的指数滑动平均值。即使在初始阶段,数据增强生成的视图对仍然是正样本,因为它们来自同一图像。随着训练的进行,编码器的特征提取能力逐渐增强。当前批次中的查询特征 q q q与字典中的所有特征表示 k − k^− k进行对比。这些字典中的特征表示被视为负样本,因为它们来自不同的图像

1.4 ITC(Image-Text Contrastive Learning)

图像-文本对比学习(ITC)是一种用于学习图像和文本之间关联的方法。其核心思想是通过对比学习(Contrastive Learning)技术,来拉近相关的图像-文本对的距离,同时推远不相关的图像-文本对。

1.4.1 主要步骤

1.编码:使用神经网络分别对图像和文本进行编码,得到图像表示 v v v 和文本表示 w w w
2.对比损失:使用对比损失函数(如对比损失或交叉熵损失)来最大化相关图像-文本对的相似度,同时最小化不相关图像-文本对的相似度。具体实现可以是使用带有正负样本对的对比学习方法,如 InfoNCE 损失:
L I T C = − log ⁡ exp ⁡ ( sin ⁡ ( v i , w i ) / τ ) ∑ j = 1 N exp ⁡ ( sin ⁡ ( v i , w j ) / τ ) \mathcal{L}_{\mathrm{ITC}}=-\log\frac{\exp(\sin(\mathbf{v}_i,\mathbf{w}_i)/\tau)}{\sum_{j=1}^N\exp(\sin(\mathbf{v}_i,\mathbf{w}_j)/\tau)} LITC=logj=1Nexp(sin(vi,wj)/τ)exp(sin(vi,wi)/τ)
sim ⁡ ( v , w ) \operatorname{sim}(\mathbf{v},\mathbf{w}) sim(v,w)表示图像和文本表示之间的相似度度量(例如点积), τ \tau τ是温度参数3 N N N为批次大小。

1.5 MLM(Masked Language Modeling)

掩码语言建模(MLM)是一种用于自然语言处理的预训练任务,广泛应用于模型如 BERT 中。其核心思想是通过随机掩码输入文本中的一部分单词,然后让模型预测这些掩码位置的单词,从而学习上下文信息。

1.5.1主要步骤

1.掩码处理:随机选择输入文本中的一些单词,并将它们替换为特殊的掩码标记(如 [MASK])。例如,对于句子 “The quick brown fox jumps over the lazy dog”,可能得到 “The quick [MASK] fox jumps over the [MASK] dog”。
2.预测任务:

  • 使用神经网络对处理后的文本进行编码,并预测掩码位置的原始单词。
  • 具体实现可以是使用交叉熵损失来训练模型:
    L M L M = − ∑ i ∈ m a s k e d log ⁡ P ( w o r d i ∣ c o n t e x t ) \mathcal{L}_{\mathrm{MLM}}=-\sum_{i\in\mathrm{masked}}\log P(\mathrm{word}_i|\mathrm{context}) LMLM=imaskedlogP(wordicontext)
    其中, w o r d i \mathrm{word}_i wordi是掩码位置的原始单词, c o n t e x t context context 是掩码后剩余的上下文。

2.正文解释

2.1 结构框架图

在这里插入图片描述
(直译)ALBEF 包含一个图像编码器、一个文本编码器和一个多模态编码器。我们使用 12 层视觉转换器 ViT-B/16 作为图像编码器,并使用 中 ImageNet-1k 上预训练的权重初始化它。输入图像 I 被编码为一系列嵌入:{ v c l s v_{cls} vcls , v 1 v_1 v1 ,…, v N v_N vN } ,其中 v c l s v_{cls} vcls 是 [CLS] 标记的嵌入。我们对文本编码器和多模态编码器都使用 6 层转换器 。文本编码器使用 B E R T b a s e BERT_{base} BERTbase模型的前 6 层进行初始化,多模态编码器使用 B E R T b a s e BERT_{base} BERTbase 的最后 6 层进行初始化。文本编码器将输入文本 T T T 转换为一系列嵌入 { w c l s w_{cls} wcls , w 1 w_1 w1 ,…, w N w_N wN },它被馈送到多模态编码器。图像特征通过多模态编码器的每一层的交叉注意力与文本特征融合1

2.1.1 Vit

在这里插入图片描述
将transformer融入CV的开山之作,主要工作为设计了一种将图像转为序列的模型。具体来说先将原始图像分为若干patches;铺平patches随后映射到低维空间;为每个patches添加位置序号;添加一个特殊的class token,目的是因为,ViT模型将这个class token在Transformer Encoder的输出当做是模型对输入图片的编码特征,用于后续输入MLP模块中与图片label进行loss计算4

2.2 预训练

用三个目标对ALBEF进行预训练:单模态编码器上的图像-文本对比学习(ITC)、多模态编码器上的掩码语言建模(MLM)和图像-文本匹配(ITM)。

2.2.1 ITC的设计

图像-文本对比学习旨在在融合之前学习更好的单模态表示。其目标是学习一个相似性函数 g v ( v c l s ) ⊤ g w ( w c l s ) g_v(v_\mathrm{cls})^\top g_w(w_\mathrm{cls}) gv(vcls)gw(wcls),使得并行的图像-文本对具有更高的相似性分数。这里 g v g_{v} gv g w g_{w} gw是线性变换,将[CLS]嵌入映射到归一化的低维(256维)表示。这个相似性函数的目标是使得并行的图像-文本对(即相关联的图像和文本)具有更高的相似性得分。随后,作者借鉴了MoCo的做法,使用两个队列来存储最近的 M M M个来自动量编码器的图像-文本表示。使用动量的方式 g v ′ ( v c l s ′ ) g_v^{\prime}(v_{\mathrm{cls}}^{\prime}) gv(vcls) 表示来自动量图像编码器的归一化图像特征。 g w ′ ( w c l s ′ ) g_w^{\prime}(w_{\mathrm{cls}}^{\prime}) gw(wcls)表示来自动量文本编码器的归一化文本特征。利用这些表示定义了相似性函数:
s ( I , T ) = g v ( v c l s ) ⊤ g w ′ ( w c l s ′ ) s ( T , I ) = g w ( w c l s ) ⊤ g v ′ ( v c l s ′ ) s(I,T)=g_v(\boldsymbol{v}_\mathrm{cls})^\top g_w^\prime(\boldsymbol{w}_\mathrm{cls}^\prime)\\s(T,I)=g_w(\boldsymbol{w}_\mathrm{cls})^\top g_v^\prime(\boldsymbol{v}_\mathrm{cls}^\prime) s(I,T)=gv(vcls)gw(wcls)s(T,I)=gw(wcls)gv(vcls)
对于这两个公式,作者考量到归一化和双向性。归一化的目的是为了避免向量的数值差异过大,以更好地学习特征之间的关系,不受数值大小的影响;双向性的目的是为了可以更全面地捕捉图像和文本之间复杂的语义关系,不仅仅局限于单向的匹配。
随后利用动量队列,计算每个图像或文本与队列中所有图像或文本的相似性,如下:

  • 图像到文本的概率分布: p m i 2 t ( I ) = exp ⁡ ( s ( I , T m ) / τ ) ∑ m = 1 M exp ⁡ ( s ( I , T m ) / τ ) p_{m}^{\mathrm{i2t}}(I)=\frac{\exp(s(I,T_{m})/\tau)}{\sum_{m=1}^{M}\exp(s(I,T_{m})/\tau)} pmi2t(I)=m=1Mexp(s(I,Tm)/τ)exp(s(I,Tm)/τ)
  • 文本到图像的概率分布: p m t 2 i ( T ) = exp ⁡ ( s ( T , I m ) / τ ) ∑ m = 1 M exp ⁡ ( s ( T , I m ) / τ ) p_m^{\text{t}2\text{i}}(T)=\frac{\exp(s(T,I_m)/\tau)}{\sum_{m=1}^M\exp(s(T,I_m)/\tau)} pmt2i(T)=m=1Mexp(s(T,Im)/τ)exp(s(T,Im)/τ)
    使用 softmax 函数对图像到文本和文本到图像的相似度进行归一化。这里队列的作用可以为对比学习提供负样本。
    最后,作者提出了图像-文本对比损失用于优化模型,定义为预测概率 p p p与真实标签 y y y之间的交叉熵损失:
    L i t c = 1 2 E ( I , T ) ∼ D [ H ( y i 2 t ( I ) , p i 2 t ( I ) ) + H ( y t 2 i ( T ) , p t 2 i ( T ) ) ] \mathcal{L}_{\mathrm{itc}}=\frac{1}{2}\mathbb{E}_{(I,T)\sim D}\big[\mathrm{H}(y^{\mathrm{i2t}}(I),p^{\mathrm{i2t}}(I))+\mathrm{H}(y^{\mathrm{t2i}}(T),p^{\mathrm{t2i}}(T))\big] Litc=21E(I,T)D[H(yi2t(I),pi2t(I))+H(yt2i(T),pt2i(T))]
    y i 2 t ( I ) y^{\mathrm{i}2\mathrm{t}}(I) yi2t(I) y t 2 i ( T ) y^{\mathrm{t2i}}(T) yt2i(T)是真实的匹配标签。在对比学习中,通常采用独热编码的形式表示,其中正样本对有一个概率为 1 的标签,而负样本对则有一个概率为 0 的标签。 L i t c \mathcal{L}_{\mathrm{itc}} Litc作为图像-文本对比损失,通过计算预测概率分布 p m i 2 t ( I ) p_m^{\mathrm{i}2\mathrm{t}}(I) pmi2t(I) p m t 2 i ( T ) p_{m}^{\mathrm{t2i}}(T) pmt2i(T)与真实标签 y i 2 t ( I ) y^{\mathrm{i}2\mathrm{t}}(I) yi2t(I) y t 2 i ( T ) y^{\mathrm{t}2\mathrm{i}}(T) yt2i(T)的交叉熵定义。其中既有图像到文本的匹配损失。也有文本到图像的匹配损失 。

2.2.2 MLM的设计

MLM的目标是通过最小化模型预测的概率分布与真实遮蔽标记的分布之间的交叉熵损失来训练模型。通过这种方式,模型被要求能够在掩码部分的文本中准确地预测出原始的文本内容,从而提升模型在理解和生成文本任务中的表现。作者做了如下设计:

  • 输入的文本 tokens 会以15%的概率被随机掩码处理(masked),并替换为特殊的标记 [MASK]。
  • T ^ \hat{T} T^ 表示掩码后的文本。
  • p m s k ( I , T ^ ) p^\mathrm{msk}({I},\hat{T}) pmsk(I,T^) 表示模型对于掩码标记的预测概率。
  • y m s k y^\mathrm{msk} ymsk 是一个独热编码的词汇分布,其中真实标记的概率为1。

定义交叉熵如下:
L m l m = E ( I , T ^ ) ∼ D H ( y m s k , p m s k ( I , T ^ ) ) \mathcal{L}_{\mathrm{mlm}}=\mathbb{E}_{(I,\hat{T})\sim D}\mathrm{H}(y^{\mathrm{msk}},p^{\mathrm{msk}}(I,\hat{T})) Lmlm=E(I,T^)DH(ymsk,pmsk(I,T^))
L m l m \mathcal{L}_{\mathrm{mlm}} Lmlm 是 Masked Language Modeling(MLM)的损失函数。 H \mathrm{H} H 表示交叉熵损失函数。 y m s k y^{\mathrm{msk}} ymsk 是一个独热编码的向量,用于表示真实的掩码标记。 p m s k ( I , T ^ ) p^{\mathrm{msk}}(I,\hat{T}) pmsk(I,T^) 是模型预测的掩码标记的概率分布。

2.2.3 ITM的设计

图像-文本匹配任务旨在预测一对图像和文本是否匹配(positive)或不匹配(negative)。具体来说:
作者使用多模态编码器输出的 [CLS] 标记的嵌入作为图像-文本对的联合表示。接下来,添加一个全连接(FC)层,然后通过 softmax 函数预测一个二分类概率 p i t m p^\mathrm{itm} pitm y i t m y^\mathrm{itm} yitm 是一个二维的独热向量,表示真实标签,其中一个维度对应匹配(1)和不匹配(0)。损失函数定义如下:
L i t m = E ( I , T ) ∼ D H ( y i t m , p i t m ( I , T ) ) \mathcal{L}_{\mathrm{itm}}=\mathbb{E}_{(I,T)\sim D}\mathrm{H}(y^{\mathrm{itm}},p^{\mathrm{itm}}(I,T)) Litm=E(I,T)DH(yitm,pitm(I,T))
其中, L i t m \mathcal{L}_{\mathrm{itm}} Litm 是图像-文本匹配任务的损失函数。 H \mathrm{H} H 表示交叉熵损失函数。 y i t m y^{\mathrm{itm}} yitm 是一个独热编码的二维向量,用于表示真实的匹配标签。 p i t m ( I , T ) p^{\mathrm{itm}}(I,T) pitm(I,T) 是模型预测的图像-文本匹配概率。

2.2.3.1 采样硬负例

(直译)为了处理图像-文本匹配任务中的硬负例(即语义相似但细节上不匹配的负样本),我们提出了一种策略来在不增加计算开销的情况下采样这些硬负例:我们利用对比相似性( L i t c \mathcal{L}_{\mathrm{itc}} Litc 中定义的)来找到同一小批量中的硬负例。对于每个图像,在小批量中随机选择一个相似性较低的文本作为负例;同样地,对于每个文本,我们也选择一个相似性较低的图像作为负例。

2.2.4 ALBEF 的完整预训练目标

ALBEF(或类似的模型)的完整预训练目标 L \mathcal{L} L 组合了以下三个部分的损失:
L = L i t c + L m l m + L i t m \mathcal{L}=\mathcal{L}_{\mathrm{itc}}+\mathcal{L}_{\mathrm{mlm}}+\mathcal{L}_{\mathrm{itm}} L=Litc+Lmlm+Litm
其中,

L i t c \mathcal{L}_{\mathrm{itc}} Litc 是图像-文本对比损失,用于学习图像和文本之间的语义匹配;
L m l m \mathcal{L}_{\mathrm{mlm}} Lmlm 是掩码语言建模损失,用于提高模型对文本理解的能力;
L i t m \mathcal{L}_{\mathrm{itm}} Litm 是图像-文本匹配损失,用于优化模型在图像和文本匹配任务上的表现。
通过联合训练这三个损失函数,ALBEF模型可以同时提升对图像-文本语义匹配、文本理解和图像-文本匹配的能力。


  1. Align before Fuse: Vision and Language Representation Learning with Momentum Distillation ↩︎ ↩︎

  2. Momentum Contrast for Unsupervised Visual Representation Learning ↩︎

  3. 深度学习中的概念 ↩︎ ↩︎

  4. AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE ↩︎

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值