文献库

自监督表征学习综述

摘要

学习有意义的表示是现代机器学习领域中许多任务的核心。近年来,涌现出大量无需监督即可学习图像表示的方法。这些表示随后可用于分类或目标检测等下游任务。这些表示的质量接近监督学习,且无需标注图像。本综述以统一的符号体系全面回顾了这些方法,指出了它们的异同,并提出了一种将这些方法相互关联的分类法。此外,我们的综述以元研究的形式总结了文献中报道的最新实验结果。我们旨在为希望深入表示学习领域的研究人员和从业者提供一个起点。

1 引言

图像通常包含许多与后续下游任务无关的信息。理想的图像表示应提取其相关部分。表示学习的目标是学习一个具有可学习参数 θ 的编码器网络 fθf _ { \theta },将输入图像 x 映射到低维表示(嵌入)y=fθ(x)y = f _ { \boldsymbol { \theta } } ( \boldsymbol { x } )。本文的主要目的是介绍和讨论寻找有用编码器的不同方法和思路。请注意,在机器学习文献中,这种设置也称为特征学习或特征提取。

1.1 监督学习与无监督学习

在对表示学习的各种方法进行分类之前,我们首先区分机器学习的两种基本设置:(i) 监督学习根据标注数据点(解释为输入和输出示例)学习函数;(ii) 无监督学习仅根据数据点(未标注)学习某些内容。可以认为,无监督学习的目标也是学习一个函数,例如,在聚类中,我们学习一个分类函数并同时发明标签;在降维(如 PCA、ISOMAP、LLE 等)中,我们学习一个回归函数并同时发明低维嵌入。有鉴于此,表示学习是无监督学习的一个实例,因为我们只给定一组未标注的数据点,目标是学习一个编码器,将数据映射到具有良好特性的其他表示上。

1.2 自监督学习

近年来,出现了一些被称为自监督学习的新机器学习方法。简而言之,这些方法通过执行以下两个独立步骤来创建编码器:

(i) 通过为每个给定图像 x 创建目标 t 来设计一个监督学习任务。

(ii) 应用监督学习来学习从输入 x 到目标 t 的函数。

生成目标的机制可以手动设计,也可以包含学习到的神经网络。请注意,目标不一定是静态的,可能在训练过程中发生变化。尽管自监督学习在第二步中应用了经典的监督学习,但总体而言,它最好被视为一种无监督方法,因为它仅以未标注图像为起点。

1.3 文章结构

本文旨在概述表示学习的最新进展。从自编码器开始,我们将讨论不同的方法,并将其分组如下:

• 前置任务方法解决辅助任务,例如,预测输入图像旋转的角度。其思想是,在此过程中学习到的表示也有助于解决其他任务。我们将在第 2 节进一步讨论这些方法。

• 信息最大化方法学习对各种图像变换不变的网络,同时通过最大化信息内容来避免平凡解。第 3 节将详细介绍其中一些方法。

• 教师-学生方法由两个网络组成,其中一个网络从另一个网络中提取知识。我们将在第 4 节仔细研究这些方法。

• 对比学习方法区分由方法即时定义的正例和负例。在第 5 节中,我们将详细回顾这些对比方法。

• 基于聚类的方法通过对表示进行聚类来发明多个类标签,然后在这些标签上训练分类器。第 6 节总结了使用聚类的最相关的表示学习方法。

在第 7 节中,我们进一步将所讨论的方法相互关联,并在第 8 节中总结文献中报道的实验结果,形成元研究。

虽然本文侧重于视觉表示学习的方法,但还存在专门针对图(Grover 和 Leskovec,2016;Perozzi 等人,2014;Kipf 和 Welling,2016)、时间序列(Eldele 等人,2021)或文本(Mikolov 等人,2013b,a;Kenton 和 Toutanova,2019)的其他方法,我们在此略过。

1.4 符号说明

在描述不同表示学习方法的细节之前,我们首先定义本文中使用的符号。给定一个图像数据集,我们写

X=[x1,,xn](1)X = [ x _ { 1 } , \ldots , x _ { n } ]\tag{1}

表示一个随机采样的图像批次。每种表示学习方法都训练一个编码器网络 fθf _ { \theta },其中 θ\theta 是可学习参数。该编码器网络计算表示

Y=[y1,,yn]=[fθ(x1),,fθ(xn)]=fθ(X)(2)Y = [ y _ { 1 } , \dots , y _ { n } ] = [ f _ { \theta } ( x _ { 1 } ) , \dots , f _ { \theta } ( x _ { n } ) ] = f _ { \theta } ( X )\tag{2}

对于 XX 中的图像。一些方法还额外训练一个投影网络 gϕg _ { \phi },其参数为 ϕ,\phi ,,该网络计算投影

Z=[z1,,zn]=[gϕ(y1),,gϕ(yn)]=gϕ(Y)(3)Z = [ z _ { 1 } , \dots , z _ { n } ] = [ g _ { \phi } ( y _ { 1 } ) , \dots , g _ { \phi } ( y _ { n } ) ] = g _ { \phi } ( Y )\tag{3}

对于 Y 中的表示。还有一些方法也训练一个预测网络 qψq _ { \psi },其参数为 ψ,\psi ,,该网络基于 z  or yz \ \mathrm { ~ o r ~ } y 计算预测。投影和预测都仅用于训练网络,在训练之后,投影和预测网络会被丢弃,只有编码器 fθf _ { \theta } 用于下游任务。

大多数方法对输入图像应用一种变换以获得原始图像的一个视图。我们写 xi(j)=t(xi)x _ { i } ^ { ( j ) } = t ( x _ { i } ) 表示原始图像 xix _ { i } 的第 j 个视图,该视图是通过应用变换 t 获得的。通常,这些方法从给定的变换集合 τ\tau 中随机采样变换,并且对于批次中的每个图像可能不同。这就是为什么我们将 t 视为一个随机变量,为批次中的每个图像进行采样。与此相反,其他方法使用预定义的变换 t(1),,t(m)t ^ { ( 1 ) } , \ldots , t ^ { ( m ) },这些变换是固定的且不会改变。在第 3 节中,我们将给出这些变换的更多细节和一些示例。我们写

X(j)=[x1(j),,xn(j)]=t([x1,,xn])=t(X)(4)X ^ { ( j ) } = [ x _ { 1 } ^ { ( j ) } , \dots , x _ { n } ^ { ( j ) } ] = t ( [ x _ { 1 } , \dots , x _ { n } ] ) = t ( X )\tag{4}

表示第 j 个视图的批次。我们对得到的表示 Y(j)=[y1(j),,yn(j)]Y ^ { ( j ) } = [ y _ { 1 } ^ { ( j ) } , \dots , y _ { n } ^ { ( j ) } ] 和投影 Z(j)=[z1(j),,zn(j)]Z ^ { ( j ) } = [ z _ { 1 } ^ { ( j ) } , \dots , z _ { n } ^ { ( j ) } ] 使用类似的符号。一些方法将输入图像分割成块,我们也将其视为变换的一种特殊情况,其中每个块是图像的一个视图。在这种情况下,我们写 Xi=[xi(1),,xi(m)]X _ { i } = [ x _ { i } ^ { ( 1 ) } , \dots , x _ { i } ^ { ( m ) } ],其中包含图像 xix _ { i } 的所有 m 个视图,并将相应的表示和投影记为 Yi=[yi(1),,yi(m)]Y _ { i } = [ y _ { i } ^ { ( 1 ) } , \dots , y _ { i } ^ { ( m ) } ]Zi=[zi(1),,zi(m)]Z _ { i } = [ z _ { i } ^ { ( 1 ) } , \dots , z _ { i } ^ { ( m ) } ]

在某些情况下,表示的计算可以解耦,使得每个视图被独立处理,即 Yi=[fθ(xi(1)),,fθ(xi(m))]=fθ(Xi)Y _ { i } = [ f _ { \theta } ( x _ { i } ^ { ( 1 ) } ) , \dots , f _ { \theta } ( x _ { i } ^ { ( m ) } ) ] = f _ { \theta } ( X _ { i } )。如果可能,我们将相应的编码器称为孪生编码器。对于其他网络(投影器和预测器)也可以进行同样的区分。孪生投影器分别计算 Zi=[gϕ(yi(1)),,gϕ(yi(m))]=gϕ(Yi)Z _ { i } = [ g _ { \phi } ( y _ { i } ^ { ( 1 ) } ) , \ldots , g _ { \phi } ( y _ { i } ^ { ( m ) } ) ] = g _ { \phi } ( Y _ { i } )。然而,正如我们稍后将看到的,情况并非总是如此,因为一些网络同时处理多个视图。

我们使用 L\mathcal { L } 来表示用于通过随机梯度下降(SGD)训练参数的损失函数。有时总损失由多个部分组成,我们用字母 ℓ 表示这些部分。

我们使用方括号来访问向量和矩阵的元素,例如,向量 v 的第 j 个元素写为 v[j]v [ j ],矩阵 CC 的第 j 列第 k 行的条目写为 C[j,k]C [ j , k ]。此外,我们定义 softmax 函数,它将向量 vRdv \in \mathbb{R} ^ { d } 归一化为概率分布,如下所示:

(softmaxτ(v))[j]=exp(v[j]/τ)k=1dexp(v[k]/τ) for j=1,,d,(5)( \operatorname{softmax} _ { \tau } ( v ) ) [ j ] = { \frac { \exp ( v [ j ] / \tau ) } { \sum _ { k = 1 } ^ { d } \exp ( v [ k ] / \tau ) } } { \mathrm { ~ f o r ~ } } j = 1 , \ldots , d ,\tag{5}

其中 τ>0\tau > 0 是温度参数,控制该分布的熵(Wu et al., 2018)。τ\tau 的值越高,归一化分布越接近均匀分布。当不使用温度时,即当 τ=1\tau = 1 时,我们写为 softmax(v)。

距离度量和相似性度量。在整篇论文中,我们使用各种概念来比较两个向量。我们在下面介绍这些概念。首先,我们将两个向量 v、wRdw \in \mathbb{R} ^ { d } 之间的平方误差定义为

dse(v,w)=vw22=(vw)(vw)=j=1d(v[j]w[j])2.(6)d _ { \mathrm{se} } ( v , w ) = \| v - w \| _ { 2 } ^ { 2 } = ( v - w ) ^ { \top } ( v - w ) = \sum _ { j = 1 } ^ { d } ( v [ j ] - w [ j ] ) ^ { 2 } .\tag{6}

请注意,平方误差等同于残差的平方欧几里得范数。有时,在计算平方误差之前会对向量 v 和 w 进行归一化。我们将得到的距离度量称为归一化平方误差

dnse(v,w)=vv2ww222.(7)d _ { \mathrm{nse} } ( v , w ) = \left\| { \frac { v } { \| v \| _ { 2 } } } - { \frac { w } { \| w \| _ { 2 } } } \right\| _ { 2 } ^ { 2 } .\tag{7}

我们将余弦相似度定义为

scos(v,w)=vwv2w2.(8)s _ { \mathrm{cos} } ( v , w ) = \frac { v ^ { \top } w } { \| v \| _ { 2 } \| w \| _ { 2 } } .\tag{8}

请注意,dnsed _ { \mathrm{nse} }scoss _ { \mathrm{cos} } 是线性相关的,即

dnse(v,w)=22vwv2w2=22scos(v,w)(9)d _ { \mathrm{nse} } ( v , w ) = 2 - 2 { \frac { v ^ { \top } w } { \left\| v \right\| _ { 2 } \left\| w \right\| _ { 2 } } } = 2 - 2 s _ { \mathrm{cos} } ( v , w )\tag{9} scos(v,w)=112dnse(v,w).(10)\Leftrightarrow s _ { \mathrm{cos} } ( v , w ) = 1 - \frac { 1 } { 2 } d _ { \mathrm{nse} } ( v , w ) .\tag{10}

为了测量由两个向量 v 和 w 的条目描述的两个离散概率分布之间的距离,可以使用交叉熵,其定义为

dce(v,w)=j=1dv[j]logw[j].(11)d _ { \mathrm{ce} } ( v , w ) = - \sum _ { j = 1 } ^ { d } v [ j ] \log w [ j ] .\tag{11}

请注意,交叉熵不满足三角不等式,因此在数学意义上不是距离度量。多类分类的一个常见损失函数是使用 softmax 归一化的分数 vRdv \in \mathbb{R} ^ { d } 与真实类别标签 cNc \in \mathbb{N} 的独热分布之间的交叉熵,我们将其表示为

dclassification(v,c)=dce(onehot(c),softmax(v))(12)d _ { \mathrm{classification} } ( v , c ) = d _ { \mathrm{ce} } ( { \mathrm{onehot} } ( c ) , { \mathrm{softmax} } ( v ) )\tag{12} =v[c]+log(j=1dexpv[j]),(13)= - v [ c ] + \log \left( \sum _ { j = 1 } ^ { d } \exp v [ j ] \right) ,\tag{13}

其中 onehot(c) 是一个在第 c 个分量为 1、其他位置为 0 的向量。

2 前置任务方法

在引言中,我们定义了自监督学习的概念,它依赖于定义一个为监督学习任务创建目标的机制。发明这样的监督学习问题有许多可能性。这些学习问题通常被称为前置任务。其思想是,通过解决前置任务学到的特征也有助于解决其他问题。在下面,我们介绍了一些创造性地提出此类任务的工作。

2.1 自编码器

自编码器(Le Cun, 1987)在机器学习领域已有很长的历史,结合前一节的内容,它们可以被视为自监督学习的早期实例:(i) 人为设定的目标是输入本身,(ii) 学习到的函数是一个瓶颈神经网络,由一个编码器 fθf _ { \theta } 和一个预测器 qψq _ { \psi } 组成,编码器将图像 xix _ { i } 映射到低维表示 yi=fθ(xi)y _ { i } = f _ { \theta } ( x _ { i } ),预测器则从该表示中重建输入图像 x^i=qψ(yi){ \hat { x } } _ { i } = q _ { \psi } ( y _ { i } )。给定一批图像 XX,编码器和预测器网络被联合训练以最小化重建误差。


图 1:自编码器由两个网络组成:一个编码器 fθf _ { \theta } 将输入图像映射为表示,以及一个预测器 qψq _ { \psi },其训练目标是从该表示重建原始图像。

Lθ,ψAE=1ni=1ndse(x^i,xi).(14)\mathcal { L } _ { \theta , \psi } ^ { \mathrm{AE} } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } d _ { \mathrm{se} } ( \hat { x } _ { i } , x _ { i } ) .\tag{14}

自编码器有许多变体:去噪自编码器(Le Cun, 1987)、堆叠去噪自编码器(Vincent et al., 2010)、收缩自编码器(Rifai et al., 2011)或变分自编码器(VAE, Kingma and Welling, 2013)。

2.2 旋转网络(RotNet)

RotNet 由 Gidaris 等人(2018)提出,其核心思想是学习一种能够预测输入图像随机旋转角度的表示。其假设是,能够预测旋转的表示对其他任务也具有价值。作者表明,即使使用少量旋转角度也足以学习到良好的表示。当旋转次数为四时(00 ^ { \circ }909 0 ^ { \circ }、180°、270°)获得最佳结果。在这种情况下,旋转增强可以通过翻转和转置高效实现,无需插值。


图 2:RotNet 通过预测图像旋转来解决任务,从而为下游任务获取表示。

给定一批图像 XX,我们考虑单个图像 xix _ { i }。使用旋转变换 t(1),t(2),t(3),t(4)t ^ { ( 1 ) } , t ^ { ( 2 ) } , t ^ { ( 3 ) } , t ^ { ( 4 ) } 创建四个视图 xi(j)=t(j)(xi)x _ { i } ^ { ( j ) } = t ^ { ( j ) } ( x _ { i } )。孪生编码器 fθf _ { \theta } 将每个视图转换为表示 yi(j)=fθ(xi(j))y _ { i } ^ { ( j ) } = f _ { \theta } ( \overset { \cdot } { x _ { i } ^ { ( j ) } } )。然后使用孪生预测器 qψq _ { \psi } 来预测应用于原始图像的旋转索引。两个网络通过最小化分类损失进行训练。


图 3:Jigsaw 从图像中提取块,然后对其进行排列。前置任务是找到用于排列图像的排列方式。无上下文网络 fθf _ { \theta } 分别处理每个块,表示仅在后面的层中合并。

Lθ,ψRotNet=1ni=1nc=14dclassification(qψ(yi(c)),c)(15)\mathcal { L } _ { \theta , \psi } ^ { \mathrm{RotNet} } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \sum _ { c = 1 } ^ { 4 } d _ { \mathrm{classification} } ( q _ { \psi } ( y _ { i } ^ { ( c ) } ) , c )\tag{15}

针对四种旋转中的每一种。训练结束后,分类头 qψq _ { \psi } 被丢弃,仅使用 fθf _ { \theta } 来计算表示(针对未旋转的图像)。作者在 CIFAR-10 上的实验使用了 Network-in-Network 架构(Lin et al., 2013),在 ImageNet 上的实验则使用了 AlexNet 架构(Krizhevsky et al., 2017)。

2.3 解决拼图问题

Jigsaw(Noroozi and Favaro, 2016)与 RotNet 类似,也解决分类任务。然而,其变换并非旋转图像,而是像拼图游戏一样随机排列图像的多个块。模型的前置任务是预测用于打乱这些块的排列类别。为了简化任务,有必要将使用的排列限制在所有排列的子集中。在他们的工作中,作者使用了 1000 个预定义的排列(而不是 3×33 \times 3 网格对应的 9!=3628809 ! = 3 6 2 8 8 0 种)。

从输入图像 xix _ { i } 中提取九个不重叠的随机排列块 [xi(1),,xi(9)][ x _ { i } ^ { ( 1 ) } , \dots , x _ { i } ^ { ( 9 ) } ],其中块的顺序遵循预定义的排列之一。之后,孪生编码器 fθf _ { \theta } 将每个块转换为表示 Φyi(j)=f(xi(j))\mathbf { \Phi } _ { y _ { i } } ^ { ( j ) } = f ( x _ { i } ^ { ( j ) } )。预测器 qψq _ { \psi } 用于在给定所有块表示 Yi=[yi(1),,yi(9)]Y _ { i } = [ y _ { i } ^ { ( 1 ) } , \dots , y _ { i } ^ { ( 9 ) } ] 的情况下,预测应用于原始图像的排列索引 cic _ { i }。网络通过最小化损失进行训练。

Lθ,ψJigsaw=1ni=1ndclassification(qψ(Yi),ci)(16)\mathcal { L } _ { \theta , \psi } ^ { \mathrm{Jigsaw} } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } d _ { \mathrm{classification} } ( q _ { \psi } ( Y _ { i } ) , c _ { i } )\tag{16}

即类别得分与所用排列索引 cic _ { i } 之间的差异。编码器 fθf _ { \theta } 实现为截断的 AlexNet。表示 YiY _ { i } 被拼接起来形成


图 4:掩码自编码器使用视觉变换器作为编码器和预测器来预测掩码块。

分类头 qψq _ { \psi } 的输入,该分类头实现为多层感知器(MLP)。训练结束后,分类头被丢弃,编码器用于为其他下游任务获取图像表示。

2.4 掩码自编码器 (MAE)

掩码自编码器(He 等人,2022)与去噪自编码器类似,其中输入图像被破坏,自编码器尝试重建原始图像。更具体地说,输入图像被分割成更小的、不重叠的块,从中随机选择一部分进行掩码。

给定一批图像 XX,我们考虑单个图像 xix _ { i }。该图像被分割成 m 个块 Xi=[xi(1),,xi(m)]X _ { i } = [ x _ { i } ^ { ( 1 ) } , \dots , x _ { i } ^ { ( m ) } ],其中一些块将被随机选择进行掩码。我们将被掩码块的索引集合称为 MimaskM _ { i } ^ { \mathrm{mask} },将未掩码索引的集合称为 MikeepM _ { i } ^ { \mathrm{keep} }。编码器 fθf _ { \theta } 将未掩码的块转换为块表示 Yi=Y _ { i } = [yi(j):jMikeep]=fθ([xi(j):jMikeep])[ y _ { i } ^ { ( j ) } : j \in M _ { i } ^ { \mathrm{keep} } ] = f _ { \theta } ( [ x _ { i } ^ { ( j ) } : j \in M _ { i } ^ { \mathrm{keep} } ] ),其实现为视觉变换器(Dosovitskiy 等人,2021)。预测器 qψq _ { \psi } 是另一个视觉变换器,它根据 YiY _ { i } 预测被掩码的块 X^i=[x^i(j):jMimask]=qψ(Yi,Mimask)\hat { X } _ { i } = [ \hat { x } _ { i } ^ { ( j ) } : j \in M _ { i } ^ { \mathrm{mask} } ] = q _ { \psi } ( Y _ { i } , M _ { i } ^ { \mathrm{mask} } ),并为 MimaskM _ { i } ^ { \mathrm{mask} } 中的每个索引使用一个掩码标记。参见图 4 进行说明。损失是预测块像素与被掩码块像素之间的均方误差

Lθ,ψMAE=1ni=1njMimaskdse(x^i(j),xi(j)).(17)\mathcal { L } _ { \theta , \psi } ^ { \mathrm{MAE} } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \sum _ { j \in M _ { i } ^ { \mathrm{mask} } } d _ { \mathrm{se} } \Big ( \hat { x } _ { i } ^ { ( j ) } , x _ { i } ^ { ( j ) } \Big ) .\tag{17}

如果不加防范,模型可能会通过从相邻像素预测图像块来“作弊”,因为自然图像中的信息通常具有很强的空间冗余性。为了学习良好的表示,掩码比例必须非常高(例如 75%),以鼓励编码器提取更多高级特征,这一点至关重要。

3 信息最大化方法

许多自监督表示学习方法利用图像变换。拼图网络和旋转网络是前一节的两种方法,它们对图像样本应用选定的变换,旨在预测变换的参数化。相比之下,以下方法侧重于学习对特定变换不变的表示。这样的任务通常伴随着一种常见的失败模式,称为表示坍缩。它通常描述平凡解,例如恒定表示,这些解满足不变性目标,但对实际下游任务几乎没有信息价值。表示坍缩的另一个视角是将其视为信息坍缩,将嵌入的大部分概率质量集中在一个点上,从而导致信息内容的减少。

图 5:应用于海鹦图像的示例变换。

为了避免表示坍缩,人们开发了所谓的信息最大化方法。它们构成了一类表示技术,专注于嵌入的信息内容(Zbontar 等人,2021;Bardes 等人,2021;Ermolov 等人,2021)。例如,一些方法显式地去相关嵌入向量的所有元素。这有效地避免了坍缩,并导致信息内容的间接最大化。在下文中,我们介绍了使用跨视图嵌入的归一化互相关矩阵(Zbontar 等人,2021)、单视图的协方差矩阵(Bardes 等人,2021)以及白化操作(Ermolov 等人,2021)来实现该技术的方法。

变换。 信息最大化方法的主要思想是,学习到的表示应该对特定变换具有不变性,即原始图像和变换后的图像应产生相同的表示。我们在前一节中已经遇到了两种变换:旋转和拼图变换。还有更多可能的变换:以下变换已被证明对接下来要描述的方法是有用的。

  1. 水平翻转:大多数自然图像可以在不改变语义的情况下水平翻转,例如,一辆汽车的图像在翻转后仍然显示一辆汽车。垂直翻转可能会引起问题,例如当天空突然出现在图像底部时。

  2. 模糊:将图像与高斯滤波器进行卷积是变换图像的另一种方式。

  3. 添加高斯噪声:学习到的表示也应该(在某种程度上)对噪声的施加具有不变性。

  4. Sobel 滤波器:对图像应用 Sobel 滤波器可以突出图像的边缘。这些边缘通常仍然包含大量关于图像的相关信息。

  5. 裁剪和调整大小:将图像缩放到不同尺寸也应保持语义信息。

  6. 颜色抖动:改变图像的对比度、亮度和色调会产生另一个显示相同内容的图像实例。

  7. 灰度化:将彩色图像转换为灰度图像与颜色抖动密切相关。

请注意,这些图像变换与监督学习中使用的数据集增强技术密切相关(Yang 等人,2022;Shorten 和 Khoshgoftaar,2019)。

3.1 巴洛孪生网络


图 6:巴洛孪生网络对输入批次的两个视图进行处理,并最小化投影表示之间的相关性。

该框架的核心思想是冗余减少原则。这一原则由神经科学家巴洛(Barlow,1961)提出,指出减少冗余对于大脑中感觉信息的组织至关重要。

为了实现这一冗余减少原则,巴洛孪生网络方法取一批图像 XX,并生成这些图像的两个视图 X(1)=t(X)X ^ { ( 1 ) } = t ( X )X(2)=t(X)X ^ { ( 2 ) } = t ( X ),其中 tτt \sim \tau 是对每张图像和每个视图从 TT 中随机采样的变换。一个孪生编码器 fθf _ { \theta } 计算表示 Y(1)=fθ(X(1))Y ^ { ( 1 ) } = f _ { \theta } ( X ^ { ( 1 ) } )Y(2)=fθ(X(2))Y ^ { ( 2 ) } = f _ { \theta } ( X ^ { ( 2 ) } ),这些表示被输入到一个孪生投影器 gϕg _ { \phi } 中,以计算两个视图的投影 Z(1)=[z1(1),,zn(1)]=gϕ(Y(1)){ \cal Z } ^ { ( 1 ) } = [ z _ { 1 } ^ { ( 1 ) } , \dots , z _ { n } ^ { ( 1 ) } ] = g _ { \phi } ( Y ^ { ( 1 ) } )Z(2)=[z1(2),,zn(2)]=gϕ(Y(2)){ \cal Z } ^ { ( 2 ) } = [ z _ { 1 } ^ { ( 2 ) } , \dots , z _ { n } ^ { ( 2 ) } ] = g _ { \phi } ( { \cal Y } ^ { ( 2 ) } )

巴洛孪生网络的思想是对两个视图投影之间的互相关矩阵进行正则化。互相关矩阵计算如下:

C=1ni=1n((zi(1)μ(1))/σ(1))((zi(2)μ(2))/σ(2)),(18)C = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \left( ( z _ { i } ^ { ( 1 ) } - \mu ^ { ( 1 ) } ) / \sigma ^ { ( 1 ) } \right) \left( ( z _ { i } ^ { ( 2 ) } - \mu ^ { ( 2 ) } ) / \sigma ^ { ( 2 ) } \right) ^ { \top } ,\tag{18}

其中 μ(j)\mu ^ { ( j ) }σ(j)\sigma ^ { ( j ) } 是第 jj 个视图的投影批次上的均值和标准差,计算如下:

μ(j)=1ni=1nzi(j),(19)\mu ^ { ( j ) } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } z _ { i } ^ { ( j ) } ,\tag{19} σ(j)=1n1i=1n(zi(j)μ(j))2.(20)\sigma ^ { ( j ) } = \sqrt { \frac { 1 } { n - 1 } \sum _ { i = 1 } ^ { n } ( z _ { i } ^ { ( j ) } - \mu ^ { ( j ) } ) ^ { 2 } } .\tag{20}

损失函数随后定义为:

Lθ,ϕBT=k=1d(1C[k,k])2+λk=1dkkC[k,k]2,(21)\mathcal { L } _ { \theta , \phi } ^ { \mathrm{BT} } = \sum _ { k = 1 } ^ { d } \left( 1 - C [ k , k ] \right) ^ { 2 } + \lambda \sum _ { k = 1 } ^ { d } \sum _ { k ^ { \prime } \neq k } C [ k , k ^ { \prime } ] ^ { 2 } ,\tag{21}

其中 dd 是投影的维度数,λ>0\lambda > 0 是一个超参数。第一项促进对应用变换的不变性,第二项则对学习到的嵌入进行去相关,即减少冗余。通过使用此损失函数,编码器 fθf _ { \theta } 被鼓励预测去相关且因此非冗余的嵌入。巴洛孪生网络使用 LARS 优化器(You 等人,2017)进行训练。请注意,此损失函数与 VICReg 方法相关,其中第一项称为方差项,第二项称为协方差项。

3.2 方差-不变性-协方差正则化 (VICReg)

VICReg 由 Bardes 等人 (2021) 提出,是一种属于信息最大化方法类别的联合嵌入架构。图 7 给出了该架构的概览,它与 Barlow Twins 相同,但使用了不同的损失函数。它旨在最大化输入不同视图表示之间的一致性,同时通过两个额外的正则化项来防止信息坍缩。具体来说,VICReg 定义了方差、不变性和协方差的正则化项。


图 7:VICReg 获取输入批次的两个视图,并最小化投影表示之间的均方误差,同时正则化来自各个视图的表示的协方差矩阵以避免表示坍缩。

给定一批图像 XX,定义两个视图 X(1)=t(X)X ^ { ( 1 ) } = t ( X )X(2)=t(X)X ^ { ( 2 ) } = t ( X ),其中 tτt \sim \tau 同样是针对每个图像和每个视图从 T 中随机采样的。一个孪生编码器 fθf _ { \theta } 计算表示 Y(1)=fθ(X(1))Y ^ { ( 1 ) } = f _ { \theta } ( X ^ { ( 1 ) } )Yˉ(2)=fθ(Xˉ(2))\bar { Y } ^ { ( 2 ) } = f _ { \theta } ( \bar { X } ^ { ( 2 ) } ),这些表示被输入到一个孪生投影器 gϕg _ { \phi } 以计算投影 Z(1)=[z1(1),,zn(1)]=gϕ(Y(1)){ \cal Z } ^ { ( 1 ) } = [ z _ { 1 } ^ { ( 1 ) } , \dots , z _ { n } ^ { ( 1 ) } ] = g _ { \phi } ( Y ^ { ( 1 ) } )Z(2)=[z1(2),,zn(2)]=gϕ(Y(2)){ \cal Z } ^ { ( 2 ) } = [ z _ { 1 } ^ { ( 2 ) } , \dots , z _ { n } ^ { ( 2 ) } ] = g _ { \phi } ( Y ^ { ( 2 ) } )。每个投影有 d 个维度。对于每个视图,计算投影的协方差矩阵,其定义为

C(j)=1n1i=1n(zi(j)μ(j))(zi(j)μ(j)),(22)C ^ { ( j ) } = \frac { 1 } { n - 1 } \sum _ { i = 1 } ^ { n } \left( z _ { i } ^ { ( j ) } - \mu ^ { ( j ) } \right) \left( z _ { i } ^ { ( j ) } - \mu ^ { ( j ) } \right) ^ { \top } ,\tag{22}

其中 μ(j)\mu ^ { ( j ) } 是第 j 个视图的投影在批次上的均值,即

μ(j)=1ni=1nzi(j).(23)\mu ^ { ( j ) } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } z _ { i } ^ { ( j ) } .\tag{23}

方差项旨在将嵌入的每个元素在批次维度上的标准差保持在边界 b 之上。实际上,这防止了嵌入向量在批次中相同,因此是旨在防止坍缩的两种机制之一。它可以使用合页损失来实现

V(Z(j))=1dk=1dmax(0,bC(j)[k,k]+ε).(24)\ell _ { \mathrm{V} } ( Z ^ { ( j ) } ) = \frac { 1 } { d } \sum _ { k = 1 } ^ { d } \operatorname*{max} \biggl ( 0 , b - \sqrt { C ^ { ( j ) } [ k , k ] + \varepsilon } \biggr ) .\tag{24}

其中 ε>0\varepsilon > 0 是一个用于数值稳定性的较小超参数。Bardes 等人 (2021) 使用了 b=1b = 1。就此而言,方差项与 Barlow Twins (Zbontar et al., 2021) 的不变性项密切相关,但应用意图不同。Barlow Twins 实际是最大化归一化互相关矩阵的对角线平方,以鼓励跨视图的嵌入元素相关性,而 VICReg 最大化单个视图协方差矩阵对角线的平方根以防止坍缩。注意,Barlow Twins 中的最大化受到嵌入预先归一化的限制。由于 VICReg 不应用归一化,因此使用边界损失来限制这种优化。

协方差项对单个视图的嵌入向量元素进行去相关,以减少冗余并防止坍缩。这是通过将协方差矩阵 C(j)C ^ { ( j ) } 的非对角线元素的平方最小化至 0 来实现的,即

C(Z(j))=1dk=1dkk(C(j)[k,k])2.(25)\ell _ { \mathrm { { C } } } ( Z ^ { ( j ) } ) = \frac { 1 } { d } \sum _ { k = 1 } ^ { d } \sum _ { k ^ { \prime } \neq k } \big ( C ^ { ( j ) } [ k , k ^ { \prime } ] \big ) ^ { 2 } .\tag{25}

注意,这类似于 Barlow Twins 中使用的冗余减少项(公式 21,右侧求和项),主要区别再次在于 Barlow Twins 将其应用于跨视图,但意图相似。

最后,不变性项用于最大化同一图像的两个投影 zi(1)z _ { i } ^ { ( 1 ) }zi(2)z _ { i } ^ { ( 2 ) } 之间的一致性,从而实现对应用于 xix _ { i } 的变换的不变性。为此,Bardes 等人 (2021) 应用投影之间的均方误差

I(Z(1),Z(2))=1ni=1ndse(zi(1),zi(2)).(26)\ell _ { \mathrm{I} } ( Z ^ { ( 1 ) } , Z ^ { ( 2 ) } ) = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } d _ { \mathrm{se} } \Big ( z _ { i } ^ { ( 1 ) } , z _ { i } ^ { ( 2 ) } \Big ) .\tag{26}

值得注意的是,它是 VICReg 中唯一跨不同视图操作的损失项。

总体而言,VICReg 的损失可以定义为给定视图下所有三个正则化项的加权和

Lθ,ϕVICReg(X)=λV[V(Z(1))+V(Z(2))]+λC[C(Z(1))+C(Z(2))]+λII(Z(1),Z(2)),(27)\mathcal { L } _ { \theta , \phi } ^ { \mathrm{VICReg} } ( X ) = \lambda _ { \mathrm{V} } [ \ell _ { \mathrm{V} } ( Z ^ { ( 1 ) } ) + \ell _ { \mathrm{V} } ( Z ^ { ( 2 ) } ) ] + \lambda _ { \mathrm{C} } [ \ell _ { \mathrm{C} } ( Z ^ { ( 1 ) } ) + \ell _ { \mathrm{C} } ( Z ^ { ( 2 ) } ) ] + \lambda _ { \mathrm{I} } \ell _ { \mathrm{I} } ( Z ^ { ( 1 ) } , Z ^ { ( 2 ) } ) ,\tag{27}

其中 λV,λI,λC>0\lambda _ { \mathrm{V} } , \lambda _ { \mathrm{I} } , \lambda _ { \mathrm{C} } > 0 是平衡各个损失的超参数。

3.3 基于白化的自监督表示学习 (WMSE)

白化操作对一组数据点进行线性变换,使得变换后的数据点互不相关且具有单位方差,即协方差矩阵变为单位矩阵。WMSE 方法 (Ermolov et al., 2021) 将此思想应用于图像嵌入,以防止表示坍缩。

给定一批图像 X,应用随机变换以获得 m 个视图 X(j)X ^ { ( j ) },其中 j{1,,m}j \in \{ 1 , \dots , m \}。一个孪生编码器 fθf _ { \theta } 将这些视图映射到表示 Y(j)=fθ(X(j))Y ^ { ( j ) } = f _ { \theta } ( X ^ { ( j ) } ),然后将其输入到孪生投影器 gϕg _ { \phi } 以计算投影 Z(j)=[z1(j),,zn(j)]=gϕ(Y(j))Z ^ { ( j ) } = [ z _ { 1 } ^ { ( j ) } , \dots , z _ { n } ^ { ( j ) } ] = g _ { \phi } ( Y ^ { ( j ) } )。所有投影随后被拼接成一个单一的矩阵 Z=[z1(1),,zn(1),,z1(m),,zn(m)]Z = [ z _ { 1 } ^ { ( 1 ) } , \dots , z _ { n } ^ { ( 1 ) } , \dots , z _ { 1 } ^ { ( m ) } , \dots , z _ { n } ^ { ( m ) } ]。通过去除均值并使用逆协方差矩阵的 Cholesky 分解对其进行去相关,该矩阵被白化以获得 Z~\tilde { Z },即,

Z~=[z~1(1),,z~n(1),,z~1(m),,z~n(m)]=WZ(Z1nmi=1nj=1mzi(j)1nm),(28)\tilde { Z } = [ \tilde { z } _ { 1 } ^ { ( 1 ) } , \dots , \tilde { z } _ { n } ^ { ( 1 ) } , \dots , \tilde { z } _ { 1 } ^ { ( m ) } , \dots , \tilde { z } _ { n } ^ { ( m ) } ] = W _ { Z } \left( Z - \frac { 1 } { n m } \sum _ { i = 1 } ^ { n } \sum _ { j = 1 } ^ { m } z _ { i } ^ { ( j ) } \mathbf { 1 } _ { n m } ^ { \top } \right) ,\tag{28}


图 8:WMSE 训练:输入图像批次 X 经过随机变换并输入编码器网络 fθf _ { \theta }。然后使用投影头 gϕg _ { \phi } 对表示进行投影。接着,对投影应用白化操作。通过最小化投影之间的归一化均方误差来训练网络。

其中 1nm{ \bf 1 } _ { n m } 是一个包含 nm 个元素的全1向量,WZW _ { Z } 是逆协方差矩阵 PZZP ^ { Z Z }(也称为精度矩阵)的 Cholesky 因子,即 \BreveWZWZ=PZZ\Breve { W } _ { Z } W _ { Z } ^ { \top } = P ^ { Z Z }。请注意,Cholesky 分解是可微的,这允许在训练期间通过它进行反向传播。

为了训练模型,最小化所有白化投影对之间的归一化平方误差,即损失函数定义为

Lθ,ϕWMSE=1ni=1n2m(m1)j=1mk=j+1mdnse(z~i(j),z~i(k)).(29)\mathcal { L } _ { \theta , \phi } ^ { \mathrm{WMSE} } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \frac { 2 } { m ( m - 1 ) } \sum _ { j = 1 } ^ { m } \sum _ { \boldsymbol { k } = j + 1 } ^ { m } d _ { \mathrm{nse} } \Big ( \tilde { z } _ { i } ^ { ( j ) } , \tilde { z } _ { i } ^ { ( \boldsymbol { k } ) } \Big ) .\tag{29}

常数 2/(m(m1))2 / ( m ( m - 1 ) ) 是每个图像的比较次数。白化步骤对于防止表示坍缩至关重要。该目标最大化所有增强对之间的相似性,同时通过对投影强制执行单位协方差来防止表示坍缩。

批次切片。 原始方法的一个问题是损失在连续的训练批次之间存在较大方差。为了解决这个问题,Ermolov 等人 (2021) 采用了所谓的批次切片:批次切片的思想是,在计算白化矩阵时,同一图像 zi(1),zi(2),,zi(m)z _ { i } ^ { ( 1 ) } , z _ { i } ^ { ( 2 ) } , \dots , z _ { i } ^ { ( m ) } 的不同视图不应位于同一批次中。为此,ZZ 被分成 m 个部分。然后使用相同的排列方式对每个部分的元素进行置换。最后,每个部分进一步细分为 d 个子集,这些子集随后用于计算该特定子集的白化矩阵。通过这种方式,损失最小化依赖于需要满足单位矩阵条件的 m·d 个协方差矩阵,这在经验上导致了更低的方差。

4 教师-学生方法

基于教师-学生学习的方法与信息最大化方法密切相关。与信息最大化方法类似,学生网络学习预测教师网络在不同图像变换下的表示。这使得学生网络能够学习到对同一图像的不同变换具有鲁棒性的不变表示。这些方法由两个分支组成,其中一个被视为学生网络,另一个被视为教师网络。为了防止第 3 节中定义的表示坍缩,教师网络为学生网络提供稳定的目标表示以供其预测。为了提供稳定的目标,教师网络不通过梯度下降进行更新,并且在更新学生网络时其参数是固定的。有时会在教师网络和学生网络之间使用动量编码器来更新固定的目标。也就是说,学生网络的权重被缓慢地复制到教师网络,以提供更新的目标。教师网络通常具有与学生网络相同的架构,但不一定具有相同的参数。教师网络可以是学生网络表示的运行平均值,例如,使用动量编码器用学生网络的权重来更新教师网络。对于某些教师-学生方法,教师网络共享学生网络的权重,并且需要一个额外的预测器网络来预测教师网络的表示。


图 9:BYOL 由一个学生网络和一个教师网络组成。教师网络不通过梯度下降(停止梯度)进行更新,从而为学生网络提供稳定的表示以供学习。教师网络通过学生网络的指数移动平均进行迭代更新。学生分支有一个预测器,其训练目标是匹配教师网络的固定表示。

4.1 自举你自己的潜在表示 (BYOL)

BYOL (Grill et al., 2020) 的灵感来源于一个观察:通过从随机初始化的目标网络预测固定表示来学习表示,虽然性能欠佳,但可以避免表示坍缩。这自然引出了一种师生架构,其中教师(目标网络)为学生(在线网络)提供稳定的表示以供其学习。

BYOL 定义了两个不同的网络:学生网络和教师网络。架构如图 9 所示,学生网络和教师网络由以下部分组成:

• 学生网络:编码器 fθf _ { \theta } ,投影器 gϕg _ { \phi } ,预测器 qψq _ { \psi }

• 教师网络:编码器 fθˉ,f _ { \bar { \theta } } , ,投影器 gϕˉg _ { \bar { \phi } }

编码器 ff 和投影器 gg 同时存在于学生和教师网络中,而预测器 qq 仅属于学生网络的一部分。

从教师网络学习增强不变特征。与信息最大化方法类似,师生方法通过对图像应用不同的变换来学习表示(参见第 3 节)。给定一张图像 xi.x _ { i } . ,BYOL 应用随机采样的变换 tτt \sim \tau 来获得两个不同的视图 xi(1)=t(xi)x _ { i } ^ { ( 1 ) } = t ( x _ { i } )xi(2)=t(xi)x _ { i } ^ { ( 2 ) } = t ( x _ { i } ) 。学生网络为两个视图 j{1,2}j \in \{ 1 , 2 \} 计算表示 yi(j)=fθ(xi(j))y _ { i } ^ { ( j ) } = f _ { \theta } ( x _ { i } ^ { ( j ) } ) ,投影 zi(j)=gϕ(yi(j))z _ { i } ^ { ( j ) } = g _ { \phi } ( y _ { i } ^ { ( j ) } ) ,以及预测 z^i(j)=qψ(zi(j))\hat { z } _ { i } ^ { ( j ) } = q _ { \psi } ( z _ { i } ^ { ( j ) } ) 。这些视图也被输入到教师网络以获得目标投影 zˉi(1)=gϕˉ(fθˉ(xi(1)))\bar { z } _ { i } ^ { ( 1 ) } = g _ { \bar { \phi } } ( f _ { \bar { \theta } } ( x _ { i } ^ { ( 1 ) } ) )zˉi(2)=gϕˉ(fθˉ(xi(2)))\bar { z } _ { i } ^ { ( 2 ) } = g _ { \bar { \phi } } ( f _ { \bar { \theta } } ( x _ { i } ^ { ( 2 ) } ) )

BYOL 最小化两个归一化平方误差:(i) 第一个视图的预测与第二个视图的目标投影之间的误差,(ii) 第二个视图的预测与第一个视图的目标投影之间的误差。最终的损失函数为

Lθ,ϕ,ψBYOL=1ni=1n[dnse(z^i(1),zˉi(2))+dnse(z^i(2),zˉi(1))].(30)\mathcal { L } _ { \theta , \phi , \psi } ^ { \mathrm{BYOL} } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \left[ d _ { \mathrm{nse} } ( \hat { z } _ { i } ^ { ( 1 ) } , \bar { z } _ { i } ^ { ( 2 ) } ) + d _ { \mathrm{nse} } ( \hat { z } _ { i } ^ { ( 2 ) } , \bar { z } _ { i } ^ { ( 1 ) } ) \right] .\tag{30}

注意,当向量之间的余弦相似度为 1 时,损失最小。因此,学习到的表示对于两种不同的变换是相似的。换句话说,学习到的表示中的信息内容被最大化了。

教师-学生动量编码器。在每个训练步骤中,损失相对于 θ,ϕ,\theta , \phi ,ψ.\psi . 被最小化。也就是说,只有学生的权重通过损失函数的梯度使用 LARS 优化器 (You et al., 2017) 进行更新。教师的权重通过指数移动平均 (Lillicrap et al., 2019) 进行更新,即,

θˉτθˉ+(1τ)θ,(31)\bar { \theta } \tau \bar { \theta } + ( 1 - \tau ) \theta ,\tag{31} ϕˉτϕˉ+(1τ)ϕ,(32)\bar { \phi } \tau \bar { \phi } + ( 1 - \tau ) \phi ,\tag{32}

其中 τ[0,1]\tau \in [ 0 , 1 ] 控制教师网络权重被学生网络权重更新的速率。

作者表明,BYOL 的成功依赖于两个关键组件:(i) 通过预测稳定的目标表示,始终保持预测器 qψq _ { \psi } 接近最优;(ii) 沿着 θ,ϕ,ψLBYOL\nabla _ { \theta , \phi , \psi } \mathcal { L } ^ { \mathrm{BYOL} } 的方向更新参数,而不是沿着 θˉ,ϕˉLBYOL\nabla _ { \bar { \theta } , \bar { \phi } } \mathcal { L } ^ { \mathrm{BYOL} } 的方向。换句话说,所提出的损失和更新方式并未在 θ,ϕ\theta , \phiθˉ,ϕˉ\bar { \theta } , \bar { \phi } 上联合优化损失,否则会导致表示坍缩。Chen 和 He (2021) 提供了关于这与预测器如何相关的进一步见解:关于 (i),观察到在训练期间保持预测器的学习率固定而不是衰减它,可以提高性能,这支持了预测器应该学习最新表示的事实。关于 (ii),Chen 和 He (2021) 使用了一个将投影映射到恒等式的预测器。他们认为,使用恒等预测器时,对称损失的梯度,即两个投影之间的梯度,会抵消停止梯度算子。在这种情况下,两个投影之间的对称损失的梯度方向相同,因此导致了表示坍缩。请注意,此分析是针对 SimSiam (Chen and He, 2021) 进行的,该模型不使用动量编码器。然而,预测器在 BYOL 中很可能扮演着相同的角色。


图 10:DINO 由两个 ViT 组成,一个充当学生,另一个充当教师。ViT 的嵌入被转换为 Softmax 分布,为学生和教师产生软标签。然后,学生的知识被迭代地蒸馏到教师身上,教师为学生提供稳定的目标。

4.2 无标签自蒸馏 (DINO)

DINO (Caron et al., 2021) 的主要贡献之一是将师生架构更紧密地适配到知识蒸馏框架 (Gou et al., 2021),在该框架中,教师不是直接匹配输出嵌入,而是通过对其输出应用 softmax 操作来提供软标签。作者表明,这有助于防止表示坍缩。

DINO 定义了一个学生网络和一个教师网络。学生网络由一个编码器 fθf _ { \theta } 和一个投影器 gϕg _ { \phi } 组成,参数分别为 θ\thetaϕ\phi。编码器实现为视觉变换器 (ViT, Dosovitskiy et al., 2021),投影器实现为 MLP。教师网络由一个编码器 fθˉf _ { \bar { \theta } } 和一个投影器 gϕˉg _ { \bar { \phi } } 组成,其架构与学生网络相同,但使用一组独立的参数 θˉ\bar { \theta }ϕ\phi

DINO 使用 Caron 等人 (2020) 首次提出的多裁剪策略,为图像 xix _ { i } 创建一批 m 个视图 Xi=[xi(1),,xi(m)]X _ { i } = [ x _ { i } ^ { ( 1 ) } , \dots , x _ { i } ^ { ( m ) } ]。每个视图都是对 xix _ { i } 进行随机裁剪后再进行更多变换得到的。大多数裁剪覆盖图像的小区域,但有些裁剪是高分辨率的,我们分别称之为局部视图和全局视图。设 MiM _ { i } 为全局视图的索引集合。其思想是学生网络可以访问所有视图,而教师网络只能访问全局视图,这创建了“局部到全局”的对应关系 (Caron et al., 2021)。参见图 11 的图示。

学生网络为每个视图计算表示 yi(j)=fθ(xi(j))y _ { i } ^ { ( j ) } = f _ { \theta } ( x _ { i } ^ { ( j ) } ) 和投影 zi(j)=gϕ(yi(j))z _ { i } ^ { ( j ) } = g _ { \phi } ( y _ { i } ^ { ( j ) } )。教师网络为全局视图计算目标投影 zˉi(j)=gϕˉ(fθˉ(xi(j)))\bar { z } _ { i } ^ { ( j ) } = g _ { \bar { \phi } } ( f _ { \bar { \theta } } ( x _ { i } ^ { ( j ) } ) )


图 11:根据多裁剪增强策略为教师和学生定义的两组增强裁剪。教师组包含两个全局视图,覆盖增强图像至少 50% 的区域。学生组由 k 个块组成,这些块覆盖输入图像另一个增强版本少于 50% 的区域。

jMi.j \in M _ { i } .

防止坍缩。 Caron 等人 (2021) 通过实验发现了两种坍缩形式:要么计算出的概率分布是均匀的,要么某个维度占主导地位,与输入无关。这促使他们采取两项对策:

  1. 为防止坍缩为均匀分布,通过将温度参数 τ 设置为较小值来锐化教师的目标分布。

  2. 为防止某个维度占主导地位,对教师的输出进行居中处理以使其更均匀。这是通过向教师添加一个居中向量 c 作为偏置来实现的,该向量使用指数移动平均计算:

cβc+(1β)zˉ,(33)c \beta c + ( 1 - \beta ) \bar { z } ,\tag{33}

其中 β[0,1]\beta \in [ 0 , 1 ] 是一个衰减超参数,决定居中向量的更新程度,并且

zˉ=1ni=1n1MijMizˉi(j)(34)\bar { z } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \frac { 1 } { | M _ { i } | } \sum _ { j \in M _ { i } } \bar { z } _ { i } ^ { ( j ) }\tag{34}

是当前批次中教师所有投影的均值。

通过软标签学习不变特征。 DINO 将预测目标投影的任务表述为知识蒸馏任务。通过在所有分量上应用 softmax 函数,将教师和学生的投影转换为概率分布。由此,可以应用交叉熵损失,其中教师为学生计算软标签。总损失函数将学生的每个视图与教师的每个全局视图(除了相同的全局视图)进行匹配,即:

Lθ,ϕDINO=1ni=1njMikjdce(softmaxτ(zˉi(j)c),softmaxρ(zi(k))),(35)\mathcal { L } _ { \theta , \phi } ^ { \mathrm{DINO} } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \sum _ { j \in M _ { i } } \sum _ { k \neq j } d _ { \mathrm{ce} } ( \mathrm{softmax} _ { \tau } ( \bar { z } _ { i } ^ { ( j ) } - c ) , \mathrm{softmax} _ { \rho } ( z _ { i } ^ { ( k ) } ) ) ,\tag{35}

其中 τ,ρ>0\tau , \rho > 0 是分别控制教师和学生分布温度的超参数(参见第 1.4 节)。总体而言,参数更新与 BYOL 非常相似,因为学生网络通过使用 AdamW 优化器最小化损失 Lθ,ϕDINO\mathcal { L } _ { \theta , \phi } ^ { \mathrm{DINO} } 来更新,而教师网络则通过学生网络的指数移动平均来更新,即:

θˉαθˉ+(1α)θ,(36)\bar { \theta } \alpha \bar { \theta } + ( 1 - \alpha ) \theta ,\tag{36} ϕˉαϕˉ+(1α)ϕ,(37)\bar { \phi } \alpha \bar { \phi } + ( 1 - \alpha ) \phi ,\tag{37}

其中 α[0,1]\alpha \in [ 0 , 1 ] 控制教师网络权重随学生网络权重更新的速率。

作者发现了以自监督方式训练 ViT 时的一些有趣特性。通过自监督训练的 ViT 能够检测场景布局中的对象边界,这些信息可以从注意力层中提取。此外,学习到的注意力图可以学习分割掩码,即注意力掩码中的对象与背景分离。这些注意力掩码使得 DINO 仅通过在其表示上使用 k-最近邻分类器就能在下游任务上表现良好。

4.3 高效自监督视觉变换器 (EsVit)

Li等人 (2021) 保留了与Caron等人 (2021) 相同的师生架构,但将Caron等人 (2021) 中的ViT替换为多阶段变换器。作为对变换器架构的一种优化,多阶段变换器在每一层之后合并图像块,以减少需要处理的图像块数量。作者表明,这种合并过程破坏了在普通变换器中学到的重要的局部到全局的对应关系。因此,他们提出了一种额外的区域匹配损失,以减轻多阶段变换器架构在合并过程中丢失的语义对应关系。

多阶段视觉变换器。 Vaswani等人 (2021) 通过减少每一层通过变换器的图像块数量来降低标准变换器的计算复杂度。为此,一个特殊的图像块合并模块在每一层合并图像块,并通过稀疏自注意力模块在它们之间计算注意力。这个过程重复多次。该过程的示意图如图12所示。总的来说,需要通过一个自注意力模块评估的令牌(即特征图)数量在随后的每一层中都会减少,同时由于不同的自注意力头处理不同的合并块,允许学习更多样化的特征,从而可以学习到层次化的对应关系。


图12:多阶段变换器:将图像分解为图像块,随后对这些图像块进行合并并应用自注意力。这导致同时处理的图像块数量减少,同时也学习了层次化的嵌入。最后,对输出进行平均池化或直接使用输出序列。

扩展损失函数以实现区域级特征匹配。 Li等人 (2021) 提出将DINO的损失扩展到多阶段变换器,以学习在合并过程中丢失的局部到全局的对应关系。由于EsVit是DINO的扩展,教师网络和学生网络的定义与第4.2节相同。Li等人 (2021) 提出了一个由视图级损失 view\ell _ { \mathrm{view} } 和区域级损失 region\ell _ { \mathrm{region} } 组成的损失函数。视图级损失与用于训练DINO的损失相同,即:

view=1ni=1njMikjdce(softmaxτ(zˉi(j)cview),softmaxρ(zi(k))).(38)\ell _ { \mathrm{view} } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \sum _ { j \in M _ { i } } \sum _ { k \neq j } d _ { \mathrm{ce} } ( \mathrm{softmax} _ { \tau } ( \bar { z } _ { i } ^ { ( j ) } - c _ { \mathrm{view} } ) , \mathrm{softmax} _ { \rho } ( z _ { i } ^ { ( k ) } ) ) .\tag{38}

其中 Cview{ \mathcal { C } } _ { \mathrm{view} } 是视图级损失的居中向量。

EsVit的区域级损失直接根据每个图像块的编码器输出 Yi=[yi(1,1),,yi(m,T)]Y _ { i } = [ y _ { i } ^ { ( 1 , 1 ) } , \dots , y _ { i } ^ { ( m , T ) } ] 计算(见图12),其中T是序列长度,即给定视图 jj 的图像块数量。然后区域级损失定义为:

region=1ni=1njMikjt=1Tdce(softmaxτ(zˉi(j,s)cregion),softmaxρ(zi(k,t))).(39)\ell _ { \mathrm{region} } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \sum _ { j \in M _ { i } } \sum _ { k \neq j } \sum _ { t = 1 } ^ { T } d _ { \mathrm{ce} } ( \mathrm{softmax} _ { \tau } ( \bar { z } _ { i } ^ { ( j , s ^ { * } ) } - c _ { \mathrm{region} } ) , \mathrm{softmax} _ { \rho } ( z _ { i } ^ { ( k , t ) } ) ) .\tag{39}

其中 s=argmaxsscos(zˉ(j,s),z(k,t))s ^ { * } = \mathrm{argmax} _ { s } s _ { \mathrm{cos} } \big ( \bar { z } ^ { ( j , s ) } , { z } ^ { ( k , t ) } \big ) ,T是图像块的数量,cregionc _ { \mathrm{region} } 是区域级损失的居中向量。其思想是将学生的每个图像块投影 z(k,t)\boldsymbol { z } ^ { ( k , t ) } 与教师的最佳图像块投影 zˉ(j,s)\bar { z } ^ { ( j , s ^ { * } ) } 进行匹配。也就是说,对于图11中多裁剪策略定义的每个投影,区域级损失会匹配学生和教师之间最一致的图像块。最终的EsVit损失结合了视图级和区域级损失,即:

Lθ,ϕEsVit=view+region(40)\mathcal { L } _ { \theta , \phi } ^ { \mathrm{EsVit} } = \ell _ { \mathrm{view} } + \ell _ { \mathrm{region} }\tag{40}

作者表明,当仅使用视图级损失在多阶段变换器上训练时,模型无法捕获有意义的对应关系,例如同一图像的两个增强视图的背景匹配。添加区域级损失缓解了多阶段变换器架构中区域级对应关系丢失的问题,并恢复了部分由整体式变换器架构固有学习的对应关系。

4.4 简单孪生表示学习 (SimSiam)


图 13:SimSiam 最大化投影表示之间的余弦相似度。两个网络使用相同的参数。停止梯度操作符中断了梯度的反向传播,从而防止表示坍缩。

SimSiam 由 Chen 和 He (2021) 提出,其架构和损失函数与 BYOL 类似。然而,教师网络和学生网络共享相同的参数,因此不像之前介绍的教师-学生方法那样使用动量编码器。

给定一批图像 XX,对于每张图像 xix _ { i },通过随机变换 tτt \sim \tau 创建两个视图 xi(1)=t(xi),xi(2)=t(xi)x _ { i } ^ { ( 1 ) } = t ( x _ { i } ) , x _ { i } ^ { ( 2 ) } = t ( x _ { i } ),这些变换是针对每张图像和每个视图分别采样的。对于每个视图,一个孪生编码器 fθf _ { \theta } 计算表示 yi(j)=f(xi(j))y _ { i } ^ { ( j ) } = f ( x _ { i } ^ { ( j ) } ),一个孪生投影器 gϕg _ { \phi } 计算投影 zi(j)=gϕ(yi(j))z _ { i } ^ { ( j ) } = g _ { \phi } ( y _ { i } ^ { ( j ) } )。最后,投影通过一个预测器 qψq _ { \psi } 以获得预测 z^i(j)=qψ(zi(j))\hat { z } _ { i } ^ { ( j ) } = q _ { \psi } ( z _ { i } ^ { ( j ) } )

预测器的目标是预测另一个视图的投影。因此,损失函数计算第一个视图的预测与第二个视图的投影之间的负余弦相似度,反之亦然,即:

Lθ,ϕ,ψSimSiam=1ni=1n12[scos(z^i(1),sg(zi(2)))+scos(z^i(2),sg(zi(1)))],(41)\mathcal { L } _ { \theta , \phi , \psi } ^ { \mathrm{SimSiam} } = - \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \frac { 1 } { 2 } \Big [ s _ { \mathrm{cos} } \big ( \hat { z } _ { i } ^ { ( 1 ) } , \mathrm{sg} ( z _ { i } ^ { ( 2 ) } ) \big ) + s _ { \mathrm{cos} } \big ( \hat { z } _ { i } ^ { ( 2 ) } , \mathrm{sg} ( z _ { i } ^ { ( 1 ) } ) \big ) \Big ] ,\tag{41}

其中 sg()\operatorname{sg} ( \cdot ) 是停止梯度操作符,它阻止梯度通过计算图的该分支进行反向传播。

编码器 fθf _ { \theta } 实现为 ResNet (He et al., 2016)。投影器 gϕg _ { \phi } 和预测器 qψq _ { \psi } 是 MLP。作者通过实验证明,预测器对于避免坍缩至关重要。Chen 和 He (2021) 认为,当预测器为单位映射时,对称损失函数的梯度与两个投影之间对称损失函数的梯度方向相同,从而抵消了停止梯度操作,导致表示坍缩。使用随机预测器也不起作用,Chen 和 He (2021) 认为预测器应始终学习最新的表示。这一论点与第 4.1 节中 Grill 等人 (2020) 的观点类似,即预测器应始终保持接近最优状态。

他们方法的另一个关键要素是批归一化 (Iofe and Szegedy, 2015),该技术同时用于 fθf _ { \theta }gϕg _ { \phi }。此外,作者还尝试用交叉熵损失替换训练目标进行实验。他们的实验表明,这种方法也有效,但性能较差。SimSiam 的主要优势在于训练不需要大批量,从而可以使用 SGD 而不是 LARS。

5 对比表示学习

对比方法通过降低不相关数据点表示之间的相似性来防止表示坍缩。给定一个称为锚点(anchor)的数据点 xx ^ { * },需要定义机制来为该锚点生成正样本和负样本。正样本应保留锚点的相关信息,而负样本应包含与锚点不同的信息。对于视觉任务,正样本可以是同一图像的随机变换,而负样本则是其他图像(的变换)。对比方法的目标是使正样本的表示更接近锚点的表示,同时使负样本的表示远离锚点。

更正式地说,给定锚点 xx ^ { * },我们定义正样本的条件分布 ppos(x+x)p _ { \mathrm{pos} } ( x ^ { + } | x ^ { * } ) 和负样本的条件分布 pneg(xx)p _ { \mathrm{neg} } ( x ^ { - } | x ^ { * } )。这些分布由生成正样本和负样本的机制所诱导,并且不是显式已知的。设 y=fθ(x)y ^ { * } = f _ { \theta } ( x ^ { * } )y+=fθ(x+)y ^ { + } = f _ { \theta } ( x ^ { + } )y=fθ(x) { \boldsymbol { y } } ^ { - } = f _ { \theta } ( { \boldsymbol { x } } ^ { - } ) 为相应的表示,它们由参数为 θ\theta 的编码器 fθf _ { \theta } 计算得到。对比表示学习方法的任务是最大化正样本表示 ppos(y+y)p _ { \mathrm{pos} } ( y ^ { + } | y ^ { \ast } ) 的似然,同时最小化负样本表示 pneg(yy)p _ { \mathrm{neg} } ( y ^ { - } | y ^ { \ast } ) 的似然。请注意,在本引言中我们继续使用表示 yy,但相同的方法同样可以应用于投影 zz

噪声对比估计(NCE)。噪声对比估计(Gutmann and Hyvärinen, 2010)的思想是将对比表示学习任务表述为一个监督分类问题。NCE 的一个假设是负样本与锚点独立,即 pneg(xx)=pneg(x)p _ { \mathrm{neg} } ( x ^ { - } | x ^ { * } ) = p _ { \mathrm{neg} } ( x ^ { - } )。在此背景下,负样本通常被称为噪声。有两种广泛使用的方法:原始的 NCE 和 InfoNCE(van den Oord et al., 2018)。粗略地说,NCE 执行二分类以判断单个样本是正样本还是负样本,而 InfoNCE 则在一组样本上执行多分类以判断哪一个是正样本。下面我们将更详细地解释 InfoNCE。

InfoNCE。对于每个锚点 xx ^ { * },InfoNCE 从 ppos(x+x)p _ { \mathrm{pos} } ( x ^ { + } | x ^ { * } ) 生成一个正样本,并从 pneg(x)p _ { \mathrm{neg} } ( x ^ { - } ) 生成 n1n - 1 个负样本。设 X=[x1,,xn]X = [ x _ { 1 } , \ldots , x _ { n } ] 为这些样本的集合,其中 xcx _ { c } 是索引为 c{1,,n}c \in \{ 1 , \ldots , n \} 的正样本。在表示学习的背景下,我们进一步使用编码器 fθf _ { \theta } 计算表示,并得到集合 Y=[y1,,yn]Y = [ y _ { 1 } , \dots , y _ { n } ]

InfoNCE 现在定义了一个监督分类任务,其中输入是 (y,Y)( y ^ { * } , Y ),类别标签是正样本的索引 cc。使用参数为 ψ\psi 的分类器 pψ(cY,y)p _ { \psi } ( c | Y , y ^ { \ast } ) 进行训练,以匹配标签的真实数据分布 pdata(cY,y)p _ { \mathrm{data} } ( c | Y , y ^ { * } )。一个常见的监督学习目标是最小化数据分布与模型分布之间的交叉熵,即

minψ,θEY,y[H(pdata(cY,y),pψ(cY,y))](42)\operatorname*{min} _ { \psi , \theta } \mathbb{E} _ { Y , y ^ { * } } \left[ H ( p _ { \mathrm{data} } ( c | Y , y ^ { * } ) , p _ { \psi } ( c | Y , y ^ { * } ) ) \right]\tag{42} =minψ,θEY,y[EcY,y[logpψ(cY,y)]].(43)= \operatorname*{min} _ { \psi , \theta } \mathbb{E} _ { Y , y ^ { * } } \left[ \mathbb{E} _ { c | Y , y ^ { * } } \left[ - \log p _ { \psi } ( c | Y , y ^ { * } ) \right] \right] .\tag{43}

请注意,这是一个反因果预测问题,其中从结果(输入)预测潜在原因(标签)(Schölkopf et al., 2012)。在 InfoNCE 中,我们知道潜在的机制(因为我们人为地生成标签),因此我们可以使用贝叶斯定理推导出最优分类器。

首先,我们写出给定标签和锚点的情况下集合 YY 的数据分布,即

其中我们假设 YY 中的样本之间条件独立。InfoNCE 进一步假设标签是均匀采样的,即 pdata(c)=1n\textstyle p _ { \mathrm{data} } ( c ) = { \frac { 1 } { n } }。现在我们应用贝叶斯定理:

pdata(cY,y)=pdata(Yc,y)pdata(c)c=1npdata(Yc,y)pdata(c)(46)p _ { \mathrm{data} } ( c | Y , y ^ { * } ) = \frac { p _ { \mathrm{data} } ( Y | c , y ^ { * } ) p _ { \mathrm{data} } ( c ) } { \sum _ { c ^ { \prime } = 1 } ^ { n } p _ { \mathrm{data} } ( Y | c ^ { \prime } , y ^ { * } ) p _ { \mathrm{data} } ( c ^ { \prime } ) }\tag{46} ppos(ycy)pneg(yc)i=1npneg(yi)1n\begin{array} { r } { \frac { p _ { \mathrm{pos} } ( y _ { c } | y ^ { * } ) } { p _ { \mathrm{neg} } ( y _ { c } ) } \prod _ { i = 1 } ^ { n } p _ { \mathrm{neg} } ( y _ { i } ) \frac { 1 } { n } } \end{array} c=1nppos(ycy)pneg(yc)i=1npneg(yi)1n(47)\begin{array} { r } { \sum _ { c ^ { \prime } = 1 } ^ { n } \frac { p _ { \mathrm{pos} } ( y _ { c ^ { \prime } } | y ^ { * } ) } { p _ { \mathrm{neg} } ( y _ { c ^ { \prime } } ) } \prod _ { i = 1 } ^ { n } p _ { \mathrm{neg} } ( y _ { i } ) \frac { 1 } { n } } \end{array}\tag{47} =ppos(ycy)pneg(yc)c=1nppos(ycy)pneg(yc).(48)= \frac { \frac { p _ { \mathrm{pos} } ( y _ { c } | y ^ { * } ) } { p _ { \mathrm{neg} } ( y _ { c } ) } } { \sum _ { c ^ { \prime } = 1 } ^ { n } \frac { p _ { \mathrm{pos} } ( y _ { c ^ { \prime } } | y ^ { * } ) } { p _ { \mathrm{neg} } ( y _ { c ^ { \prime } } ) } } .\tag{48}

具有零交叉熵的最优分类器将匹配此分布。我们可以看到,一个类别的最优概率是密度比 ppos(ycy)pneg(yc)\frac { p _ { \mathrm{pos} } ( y _ { c } | y ^ { * } ) } { p _ { \mathrm{neg} } ( y _ { c } ) },并在所有类别上进行归一化。它描述了 ycy _ { c }yy ^ { \ast } 的正样本相对于是负样本的可能性。这促使了 InfoNCE 分类器的选择,其定义类似于公式 48:

pψ(cY,y)=sψ(y,yc)c=1nsψ(y,yc),(49)p _ { \psi } ( c | Y , y ^ { * } ) = \frac { s _ { \psi } ( y ^ { * } , y _ { c } ) } { \sum _ { c ^ { \prime } = 1 } ^ { n } s _ { \psi } ( y ^ { * } , y _ { c ^ { \prime } } ) } ,\tag{49}

其中 sψ(y,y)s _ { \psi } ( y ^ { * } , y ) 是一个计算实值正分数的预测器。最小化公式 42 中的交叉熵使模型分布 pψ(cY,y)p _ { \psi } ( c | Y , y ^ { \ast } ) 更接近数据分布 pdata(cY,y)p _ { \mathrm{data} } ( c | Y , y ^ { \ast } ),这确保了 sψs _ { \psi } 逼近数据的密度比,即 sψ(y,y)ppos(yy)pneg(y)\begin{array} { r } { s _ { \psi } ( y ^ { * } , y ) \approx \frac { p _ { \mathrm{pos} } ( y | y ^ { * } ) } { p _ { \mathrm{neg} } ( y ) } } \end{array}(事实上,它只需要与密度比成正比)。密度比对正样本来说很高,对负样本来说接近于零,这意味着 sψ(y,y)s _ { \psi } ( y ^ { * } , y ) 学习了表示之间的某种相似性度量。由于 ψ\psiθ\theta(即预测器和编码器)被联合优化,编码器被鼓励为锚点及其正样本学习相似的嵌入,并为锚点及其负样本学习不相似的嵌入(只要预测器不是过于表达能力强)。换句话说,编码器被鼓励提取对锚点和正样本“独特”的信息。此外,van den Oord et al. (2018) 表明,该目标最大化了 yy ^ { * }y+y ^ { + } 之间的互信息,这是 xx ^ { * }x+x ^ { + } 之间互信息的一个下界。

通过将负对数与分类器(公式43和49)相结合,针对(y,Y,c)( y ^ { * } , Y , c )的通用InfoNCE损失定义为

InfoNCEsψ(y,Y,c)=log(sψ(y,yc)c=1nsψ(y,yc)).(50)\mathrm{InfoNCE} _ { s _ { \psi } } ( y ^ { * } , Y , c ) = - \log \left( \frac { s _ { \psi } ( y ^ { * } , y _ { c } ) } { \sum _ { c ^ { \prime } = 1 } ^ { n } s _ { \psi } ( y ^ { * } , y _ { c ^ { \prime } } ) } \right) .\tag{50}

为了后续章节的符号表示方便,我们对此定义稍作调整。所有考虑的方法都计算某个分数的指数以获得sψs _ { \psi }的正值,因此我们将其直接包含在损失函数中。在这种情况下,InfoNCE损失计算的是常用的softmax交叉熵。我们不指定类别标签,而是将正样本记为y+y ^ { + },负样本集合记为Yˉ\bar { Y }。因此,对于评分函数sψ(y,y)s _ { \psi } ( y ^ { * } , y ),我们最终的InfoNCE损失定义为

InfoNCEsψ(y,y+,Yˉ)=log(exp(sψ(y,y+))exp(sψ(y,y+))+yˉYˉexp(sψ(y,yˉ))).(51)\mathrm{InfoNCE} _ { s _ { \psi } } ( y ^ { * } , y ^ { + } , \bar { Y } ) = - \log \left( \frac { \exp ( s _ { \psi } ( y ^ { * } , y ^ { + } ) ) } { \exp ( s _ { \psi } ( y ^ { * } , y ^ { + } ) ) + \sum _ { \bar { y } \in \bar { Y } } \exp ( s _ { \psi } ( y ^ { * } , \bar { y } ) ) } \right) .\tag{51}

5.1 对比预测编码(CPC)

CPC(van den Oord等人,2018)是一种具有影响力的自监督表示学习技术,适用于多种输入模态,如文本、语音和图像。它基于预测编码理论,该理论起源于神经科学文献,通过观察生物神经回路的学习行为得出(Huang和Rao,2011;Bastos等人,2012)。简而言之,模型试图根据过去或上下文预测未来结果。因此,学习到的上下文表示应包含预测所需的所有信息,同时去除不重要的噪声。这一预测编码任务通过将其表述为对比学习问题来解决。CPC处理序列数据,这对于音频数据是自然的选择,但也可通过将图像分割成补丁序列应用于视觉任务。

给定一批图像X,我们考虑单个图像xix _ { i }。该图像被分割成m个补丁[xi(1),,xi(m)][ x _ { i } ^ { ( 1 ) } , \dots , x _ { i } ^ { ( m ) } ]。注意,这些补丁是重叠的,并且每个补丁都应用了额外的图像增强。一个孪生编码器fθf _ { \theta }将每个补丁转换为表示yi(j)=fθ(xi(j))y _ { i } ^ { ( j ) } \overset { \cdot } { = } f _ { \theta } ( x _ { i } ^ { ( j ) } )。一个补丁的上下文包括同一行中的补丁以及上方所有行中的补丁。设Ci(j){1,,m}C _ { i } ^ { ( j ) } \subset \{ 1 , \dots , m \}为这些补丁的索引集合。一个投影器gϕg _ { \phi }为每个补丁计算上下文表示zi(j)=gϕ([yi(k):kCi(j)])z _ { i } ^ { ( j ) } = g _ { \phi } ( [ y _ { i } ^ { ( k ) } : k \in C _ { i } ^ { ( j ) } ] )。网络gϕg _ { \phi }通过一个掩码CNN(PixelCNN,van den Oord等人,2016)实现,该CNN将其感受野限制在上下文中的补丁内。


图14:在CPC训练中,图像被变换并分割成重叠的补丁编码,其中顶部行(蓝色)作为锚点。正样本(紫色)位于锚点正下方的列中,整个数据集中的其他每个补丁都是负样本。应用InfoNCE来区分这两种分布。

给定上下文表示zi(j)z _ { i } ^ { ( j ) },CPC的预测编码任务是预测未来补丁的表示,即补丁下方列中的补丁。设Fi(j)=[ki,1(j),,ki,K(j)]{1,,m}F _ { i } ^ { ( j ) } = [ k _ { i , 1 } ^ { ( j ) } , \ldots , k _ { i , K } ^ { ( j ) } ] \stackrel { \cdot } { \subset } \{ 1 , \ldots , m \}为这些补丁的索引集合。预测任务通过最小化每个未来表示的InfoNCE损失来解决。对于第l个未来表示,其补丁索引为k=ki,l(j)k = k _ { i , l } ^ { ( j ) },一个独立的预测器qψlq _ { \psi _ { l } }从上下文表示计算锚点y^i(k)=qψl(zi(j))\hat { y } _ { i } ^ { ( k ) } = q _ { \psi _ { l } } ( z _ { i } ^ { ( j ) } ),正样本是未来表示yi(k)y _ { i } ^ { ( k ) }。负样本可以是任何无关的表示,例如上下文和未来之外的所有补丁的表示,以及X中其他图像的所有表示。我们将负样本集合记为Y˚i(j)\mathring { Y } _ { i } ^ { ( j ) }。损失函数累积批次中所有上下文和未来的InfoNCE损失,即

Lθ,ϕ,ψCPC=1ni=1n1mj=1mkFi(j)InfoNCEs(y^i(k),yi(k),Yˉi(j)),(52)\mathcal { L } _ { \theta , \phi , \psi } ^ { \mathrm{CPC} } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \frac { 1 } { m } \sum _ { j = 1 } ^ { m } \sum _ { \boldsymbol { k } \in { F } _ { i } ^ { ( j ) } } \mathrm{InfoNCE} _ { s } ( \hat { y } _ { i } ^ { ( \boldsymbol { k } ) } , y _ { i } ^ { ( \boldsymbol { k } ) } , \bar { Y } _ { i } ^ { ( j ) } ) ,\tag{52}

其中相似度使用点积s(y^,y)=y^ys ( \hat { y } , y ) = \hat { y } ^ { \top } y计算,所有预测器的参数合并为ψ=[ψ1,,ψK]\psi = [ \psi _ { 1 } , \dots , \psi _ { K } ]。有关该方法的图示,请参见图14。

CPC v2。CPC的第二版(Henaf,2020)针对样本效率问题。迄今为止,对比方法需要大量数据,尤其是需要寻找难负样本,才能在ImageNet等常见基准上表现良好(Bardes等人,2021)。这项工作侧重于改进训练流程,而不是修改CPC背后的总体思想。最显著的变化包括改进的图像增强、更大的网络规模、使用层归一化(Ba等人,2016)替代批归一化(Iofe和Szegedy,2015)(批归一化会在补丁之间产生意外的相互依赖),以及将预测任务扩展到所有四个方向,而不仅仅是从顶部补丁预测底部补丁。


图15:CMC假设存在不同的世界接口,它们收集关于共享源的信息。目标是找到来自不同模态的感知信息之间的共识。这是通过提取视图不变特征以学习共享表示来实现的。

5.2 对比多视图编码 (CMC)

CMC (Tian et al., 2020) 考虑同一场景的多个视图,并试图最大化这些视图之间的互信息。对于每个视图,一个特定于视图的编码器提取视图不变的特征。对比学习目标迫使编码器尽可能多地提供关于其他视图的信息。通常,这些视图可以是同一场景的不同感官输入(例如,颜色、深度、表面法线)。对于只能访问 RGB 图像的视觉任务,不同的视图可以是单独的颜色通道。在本文中,作者考虑了将图像转换为 Lab 色彩空间后的 L 和 ab 通道。请注意,视图可以被解释为图像增强,但是,每个视图对所有图像使用相同的图像增强,这与其他方法形成对比。

为了将 CMC 应用于图像,我们定义了 mm 个固定的图像变换 [t(1),,t(m)][ t ^ { ( 1 ) } , \dots , t ^ { ( m ) } ]。设 XX 为一个图像批次,对于每个视图 j{1,,m}j \in \{ 1 , \dots , m \},该批次被变换为 Xˉ(j)=t(j)(X)\bar { X } ^ { ( j ) } = t ^ { ( j ) } ( X )。编码器 fθ1,,fθmf _ { \theta _ { 1 } } , \ldots , f _ { \theta _ { m } } 为每个 j{1,,m}j \in \{ 1 , \dots , m \} 计算特定于视图的表示 yi(j)=fθj(xi(j))y _ { i } ^ { ( j ) } = f _ { \boldsymbol { \theta } _ { j } } ( x _ { i } ^ { ( j ) } )。用于下游任务的表示可以是特定视图的表示,也可以是跨多个或所有视图的表示的拼接。

CMC 的思想是将 InfoNCE 损失应用于视图对。具体来说,锚点是第 jj 个视图的表示 yi(j)y _ { i } ^ { ( j ) },正样本是来自同一图像但来自第 kk 个视图的表示 yi(k)y _ { i } ^ { ( k ) },其中 kjk \neq j,负样本是来自其他图像但也来自第 kk 个视图的表示。我们用 Yˉi(k)\bar { Y } _ { i } ^ { ( k ) } 表示这些负样本图像的集合,这些图像是使用记忆库 (Wu et al., 2018) 获得的。使用记忆库,可以高效地获得大批量的负样本,但代价是表示可能略微过时。

单个图像 xix _ { i } 的损失累积了所有有序视图对的 InfoNCE 损失,因此整个批次的总体损失函数为

LθCMC=1ni=1nj=1mk=1;kjmInfoNCEsτ(yi(j),yi(k),Yˉi(k)),(53)\mathcal { L } _ { \theta } ^ { \mathrm{CMC} } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \sum _ { j = 1 } ^ { m } \sum _ { \boldsymbol { k } = 1 ; \boldsymbol { k } \neq j } ^ { m } \operatorname{InfoNCE} _ { s _ { \tau } } ( y _ { i } ^ { ( j ) } , y _ { i } ^ { ( \boldsymbol { k } ) } , \bar { Y } _ { i } ^ { ( \boldsymbol { k } ) } ) ,\tag{53}

其中相似度计算为 sτ(y,y)=scos(y,y)/τ;s _ { \tau } ( y , y ^ { \prime } ) = s _ { \mathrm{cos} } ( y , y ^ { \prime } ) / \tau ;,即余弦相似度除以温度超参数 τ>0\tau > 0,并且 θ=[θ1,,θm]\theta = [ \theta _ { 1 } , \ldots , \theta _ { m } ] 结合了所有编码器的参数。有关该方法的图示,请参见图 15。

5.3 视觉表示对比学习的简单框架 (SimCLR)


图 16:SimCLR 将批次中由不同图像构建的视图定义为负样本。

用于 SimCLR (Chen et al., 2020a) 的架构与之前的方法(如 VICReg 或 Barlow Twins)类似。给定一个图像批次 X,使用随机变换 tτt \sim \tau 创建两个视图 X(1)=t(X)X ^ { ( 1 ) } = t ( X )X(2)=t(X)X ^ { ( 2 ) } = t ( X )。一个孪生编码器 fθf _ { \theta } 计算表示 Y(1)=fθ(X(1))Y ^ { ( 1 ) } = f _ { \theta } ( X ^ { ( 1 ) } )Y(2)=fθ(X(2))Y ^ { ( 2 ) } = f _ { \theta } ( X ^ { ( 2 ) } ),然后将这些表示输入一个孪生投影器 gϕg _ { \phi } 以获得投影 Z(1)=[z1(1),,zn(1)]=gϕ(Y(1)){ \cal Z } ^ { ( 1 ) } = [ z _ { 1 } ^ { ( 1 ) } , \dots , z _ { n } ^ { ( 1 ) } ] = g _ { \phi } ( Y ^ { ( 1 ) } )Z(2)=Z ^ { ( 2 ) } = [z1(2),...,zn(2)]=gϕ(Y˙(2))[ z _ { 1 } ^ { ( 2 ) } , . . . , z _ { n } ^ { ( 2 ) } ] = g _ { \phi } ( \dot { Y } ^ { ( 2 ) } )。图 16 概述了这一过程。

SimCLR 使用对比损失来最大化同一图像的两个投影之间的相似性,同时最小化与其他图像投影的相似性。具体来说,对于图像 xix _ { i },应用两个 InfoNCE 损失。第一个使用锚点 zi(1)z _ { i } ^ { ( 1 ) }、正样本 zi(2)z _ { i } ^ { ( 2 ) } 以及负样本 Zˉi=[z1(1),z1(2),,zn(1),zn(2)]{zi(1),zi(2)}\bar { Z } _ { i } = [ z _ { 1 } ^ { ( 1 ) } , z _ { 1 } ^ { ( 2 ) } , \ldots , z _ { n } ^ { ( 1 ) } , z _ { n } ^ { ( 2 ) } ] \setminus \{ z _ { i } ^ { ( 1 ) } , z _ { i } ^ { ( 2 ) } \},这些负样本是批次中所有其他图像的投影。第二个 InfoNCE 损失交换了锚点和正样本的角色,但使用相同的负样本集。因此,损失函数定义为

Lθ,ϕSimCLR=1ni=1n12[InfoNCEsτ(zi(1),zi(2),Zˉi)+InfoNCEsτ(zi(2),zi(1),Zˉi)],(54)\mathcal { L } _ { \theta , \phi } ^ { \mathrm{SimCLR} } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \frac { 1 } { 2 } \Big [ \mathrm{InfoNCE} _ { s _ { \tau } } ( z _ { i } ^ { ( 1 ) } , z _ { i } ^ { ( 2 ) } , \bar { Z } _ { i } ) + \mathrm{InfoNCE} _ { s _ { \tau } } ( z _ { i } ^ { ( 2 ) } , z _ { i } ^ { ( 1 ) } , \bar { Z } _ { i } ) \Big ] ,\tag{54}

其中相似度计算为 sτ(z,z)=scos(z,z)/τs _ { \tau } ( z , z ^ { \prime } ) = s _ { \mathrm{cos} } ( z , z ^ { \prime } ) / \tau,即余弦相似度除以温度超参数 τ>0\tau > 0

这些变换包括随机裁剪后调整回原始大小、随机颜色失真和随机高斯模糊。编码器 fθf _ { \theta } 使用 ResNet,投影器 gϕg _ { \phi } 实现为带有一个隐藏层的 MLP。为了训练 SimCLR,使用大批量大小并结合 LARS 优化器 (You et al., 2017)。作者指出,他们的方法不需要像其他对比方法那样使用记忆库 (Wu et al., 2018),因此更容易实现。

5.4 动量对比(MoCo)


图 17:MoCo 使用学生网络和教师网络计算不同视图的投影,并最小化对比性 InfoNCE 损失。投影 zz ^ { * }z+z ^ { + } 是即时计算的,而负投影则缓存在一个队列中,该队列存储了来自先前迭代的最新版本的 z+z ^ { + },从而显著提高了计算效率。

动量对比(Momentum Contrast)(He et al., 2020) 是一种对比学习方法,它使用带有编码队列的动量编码器来弥合对比端到端方法与记忆库方法 (Wu et al., 2018) 之间的差距。本质上,它允许在显著降低计算成本(包括时间和 GPU 内存)的情况下优化对比目标 (Chen et al., 2020b)。图 17 给出了该架构的概览。

与教师-学生方法(第 4 节)类似,MoCo 定义了一个学生网络,该网络由参数为 θ 和 ϕ\phi 的编码器 fθf _ { \theta } 和投影器 gϕg _ { \phi } 组成,以及一个教师网络,该网络由参数为 θˉ\bar { \theta }ϕˉ\bar { \phi } 的编码器 fθˉf _ { \bar { \theta } } 和投影器 gθˉg _ { \bar { \theta } } 组成。给定一张图像 xix _ { i },使用随机变换 tτt \sim \tau 创建两个视图 xi=t(xi)x _ { i } ^ { * } = t ( x _ { i } )xi+=t(xi)x _ { i } ^ { + } = t ( x _ { i } )。学生网络计算表示 yi=fθ(xi)y _ { i } ^ { * } = f _ { \theta } ( x _ { i } ^ { * } ) 和投影 zi=gϕ(yi)z _ { i } ^ { * } = g _ { \phi } ( y _ { i } ^ { * } ),而教师网络计算表示 yi+=fθˉ(xi+)y _ { i } ^ { + } = f _ { \bar { \theta } } ( x _ { i } ^ { + } ) 和投影 zi+=gϕˉ(yi+)z _ { i } ^ { + } = g _ { \bar { \phi } } ( y _ { i } ^ { + } )

MoCo 最小化 InfoNCE 损失,以学习使得同一图像的两个视图的投影相似,而与其他图像视图的投影不相似的投影。在我们的符号表示中,学生网络计算锚点 ziz _ { i } ^ { * },教师网络计算正样本 zi+z _ { i } ^ { + },负样本集 Zˉi{ \bar { Z } } _ { i } 的选择如下所述。MoCo 的损失定义为

Lθ,ϕMoCo=1ni=1nInfoNCEsτ(zi,zi+,Zˉi),(55)\mathcal { L } _ { \theta , \phi } ^ { \mathrm{MoCo} } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \mathrm{InfoNCE} _ { s _ { \tau } } ( z _ { i } ^ { * } , z _ { i } ^ { + } , \bar { Z } _ { i } ) ,\tag{55}

其中相似度使用点积 sτ(z,z)=zz/τs _ { \tau } ( z ^ { * } , z ) = z ^ { \top } z ^ { * } / \tau 计算,并除以温度超参数 τ>0\tau > 0。教师网络通过学生网络的指数移动平均进行更新,即

θˉαθˉ+(1α)θ,(56)\bar { \theta } \alpha \bar { \theta } + ( 1 - \alpha ) \theta ,\tag{56} ϕˉαϕˉ+(1α)ϕ(57)\bar { \phi } \alpha \bar { \phi } + ( 1 - \alpha ) \phi\tag{57}

其中 α[0,1]\alpha \in [ 0 , 1 ] 控制教师网络权重随学生网络权重更新的速率。

在端到端设置中,负样本在一个批次内即时计算(参见第 5.3 节的 Sim-CLR),导致相对较大的资源消耗。相比之下,记忆库 (Wu et al., 2018) 描述了为数据集中的所有项目保存投影的概念,这大大减少了资源消耗,但可能引入来自不一致或过时投影的负面影响。MoCo 旨在结合端到端训练和记忆库的优点。与记忆库类似,MoCo 仅计算正样本的投影并将其保存以供后续迭代重用。MoCo 不是为数据集中的所有图像保存投影,而是使用一个队列仅缓存最后 K 个计算出的投影,从而避免了过时的投影。由于较旧的投影会从队列中移除,保存的投影不再需要动量更新。教师网络提供待缓存的投影,而学生网络则通过使用对比损失的反向传播进行更新。

MoCo v2. MoCo 的第二个版本 (Chen et al., 2020b) 引入了几个较小的更改,以进一步提高下游性能并超越 SimCLR。最显著的更改包括将 MoCo 的线性投影层替换为 MLP,以及应用余弦学习率调度器 (Loshchilov and Hutter, 2017) 和额外的数据增强。新的 2 层 MLP 头是遵循 SimCLR 采用的。请注意,MLP 仅在无监督训练期间使用,并非用于下游任务。在额外增强方面,MoCo v2 也采用了 SimCLR 中使用的模糊操作。

5.5 预文本不变表示学习 (PIRL)

在前文介绍的预文本任务中,我们计算变换后图像的表示,以预测特定变换的属性,例如旋转角度 (Noroozi 和 Favaro, 2016) 或图像块排列 (Gidaris 等人, 2018)。通过这种方式,表示被鼓励与特定变换协变,但不能保证无论使用何种变换都能捕获相同的底层语义信息。尽管这种协变性在某些情况下是有利的,但我们更感兴趣的是具有语义意义的表示,因此学习对变换不变的表示是可取的。为了实现这一目标,Misra 和 Maaten (2020) 改进了预文本任务的损失公式,并提出了一种称为预文本不变表示学习 (PIRL) 的方法,该方法也利用了记忆库 (Wu 等人, 2018)。

PIRL 的目标是训练一个编码器网络 fθf _ { \theta },将图像 xi(1)=xix _ { i } ^ { ( 1 ) } = x _ { i } 和变换后的图像 xi(2)=tπ(xi)x _ { i } ^ { ( 2 ) } = t _ { \pi } ( x _ { i } ) 分别映射到表示 yi(1)y _ { i } ^ { ( 1 ) }yi(2)y _ { i } ^ { ( 2 ) },这些表示对所应用的变换是不变的。与第 2.32 . 3 节类似,tπt _ { \pi } 表示由图像块随机排列组成的拼图变换,其中 π\pi 是对应的排列。第 2 节中定义的预文本任务的损失公式强调编码器学习包含变换信息而非语义信息的表示。设 zi(1)=gϕ(fθ(xi(1)))z _ { i } ^ { ( 1 ) } = g _ { \phi } ( f _ { \theta } ( x _ { i } ^ { ( 1 ) } ) )zi(2)=gψ(fθ(xi(2)))z _ { i } ^ { ( 2 ) } = g _ { \psi } ( f _ { \theta } ( x _ { i } ^ { ( 2 ) } ) ) 是由编码器 fθf _ { \theta } 和两个独立的投影器 gϕg _ { \phi }gψg _ { \psi } 获得的投影。网络通过最小化两个噪声对比估计 (NCE) (Gutmann 和 Hyv¨arinen, 2010) 的凸组合来训练

Lθ,ϕ,ψPIRL=1ni=1nλNCE(mi,zi(2),Mˉi)+(1λ)NCE(mi,zi(1),Mˉi),(58)\mathcal { L } _ { \theta , \phi , \psi } ^ { \mathrm{PIRL} } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \lambda \ell _ { \mathrm{NCE} } \left( m _ { i } , z _ { i } ^ { ( 2 ) } , \bar { M } _ { i } \right) + ( 1 - \lambda ) \ell _ { \mathrm{NCE} } \left( m _ { i } , z _ { i } ^ { ( 1 ) } , \bar { M } _ { i } \right) ,\tag{58}

其中 mim _ { i } 是来自记忆库的、对应于原始图像 xix _ { i } 的投影,每个正样本被分配一组从记忆库中获得的、除 xix _ { i } 之外的图像的随机抽取的负投影 Miˉ\bar { M _ { i } }λ[0,1]\lambda \in [ 0 , 1 ] 是一个超参数。与之前介绍的预文本任务相比,PIRL 的损失公式并不明确旨在预测所应用变换的特定属性,例如旋转或图像块索引。相反,它仅基于图像及其对应的变换后对应物来定义。NCE 对每个数据点应用二元分类以区分正样本和负样本。此处,NCE 损失公式为

NCE(m,z,Mˉ)=log[h(m,z,Mˉ)]mˉMˉlog[1h(z,mˉ,Mˉ)],(59)\ell _ { \mathrm{NCE} } ( m , z , \bar { M } ) = - \log [ h ( m , z , \bar { M } ) ] - \sum _ { \bar { m } \in \bar { M } } \log [ 1 - h ( z , \bar { m } , \bar { M } ) ] ,\tag{59}

其中 h 对 (xi,xi)( x _ { i } , x _ { i } ^ { \prime } ) 源自 XX 的概率进行建模,如下所示

h(u,v,Mˉ)=exp(scos(u,v)/τ)exp(scos(u,v)/τ)+mˉMˉexp(scos(mˉ,v)/τ)(60)h ( u , v , \bar { M } ) = \frac { \exp ( s _ { \mathrm{cos} } ( u , v ) / \tau ) } { \exp ( s _ { \mathrm{cos} } ( u , v ) / \tau ) + \sum _ { \bar { m } \in \bar { M } } \exp ( s _ { \mathrm{cos} } ( \bar { m } , v ) / \tau ) }\tag{60}

其中温度 τ>0\tau > 0。考虑到投影依赖于中间表示,公式 59 中的各个项鼓励 yi(1)y _ { i } ^ { \left( 1 \right) }yi(2)y _ { i } ^ { ( 2 ) } 相似,同时也鼓励 yi(2)y _ { i } ^ { ( 2 ) } 与其他图像的表示不相似。由于仅此公式不比较不同未变换图像之间的特征,作者建议使用公式 58 中定义的两个 NCE 损失的凸组合。此方法的概述如图 18 所示。编码器网络 fθf _ { \theta } 由 ResNet50 (He 等人, 2016) 的最后一层、平均池化和一个 128 维全连接层组成。对于图 18 下分支中的图像变换,我们首先提取九个图像区块,并将它们分别应用于 fθf _ { \theta } 以获得区块表示 yi(2,k)y _ { i } ^ { ( 2 , k ) }。然后将这些表示随机拼接,并通过另一个全连接层以获得 128 维表示 yi(2)y _ { i } ^ { ( 2 ) }。尽管作者将工作重点放在 Jigsaw 预文本任务上,但他们的方法可以推广到任何其他预文本任务。为了演示目的,作者还使用旋转预文本任务及其与 Jigsaw 任务的组合进行了实验。这样,我们必须调整图 18 的下分支,在开始时变换图像,并前向传递变换后的图像以直接获得表示 yi(2)y _ { i } ^ { ( 2 ) }。因此,不再需要使用第二个全连接层。


图 18:PIRL 的架构。最小化对比损失促进了图像表示与其对应变换表示之间的相似性。

请注意,PIRL 也可以归类为第 2 节中定义的预文本任务方法。然而,它也使用了对比表示学习的思想,这就是我们决定在此处讨论它的原因。

6 基于聚类的方法

到目前为止,一些介绍的表示学习方法定义了带有手工标签的分类问题来解决辅助任务(见第 2 节)。聚类算法,例如 k-means (Lloyd, 1982),可以代替手工指定这些类别标签,以无监督的方式创建标签。

基于聚类的表示学习的目标是将具有相似表示的图像分组到聚类中。例如,在对比学习中,这将允许我们区分聚类分配,而不是单个图像或表示,这显著提高了效率。随着时间的推移,已经开发了许多基于聚类的方法,每种方法都有其自身的优缺点。在接下来的章节中,我们将介绍最重要的一些方法。

6.1 DeepCluster

首个将聚类思想应用于表示学习的方法是DeepCluster(Caron等人,2018),该方法在通过聚类分配生成伪标签与调整表示以根据生成的标签对图像进行分类之间交替进行。其背后的动机是提升已经具备强大归纳偏置的卷积架构的性能,因为这些架构在随机初始化权重时已经表现良好(Noroozi和Favaro,2016)。总体而言,作者提出反复交替执行以下两个步骤,以进一步改进编码器网络:

  1. 将当前编码器 fθf _ { \theta } 生成的表示 yi=fθ(xi)y _ { i } = f _ { \theta } ( x _ { i } ) 分组为 k 个簇(例如,使用 k-means 聚类)。

  2. 使用步骤1中的簇分配作为伪标签 βi\beta _ { i } 进行监督,以更新权重,即:

Lθ,ψDeepCluster1ni=1ndclassification(qψ(yi),βi),(61)\mathcal { L } _ { \theta , \psi } ^ { \mathrm{DeepCluster} } \frac { 1 } { n } \sum _ { i = 1 } ^ { n } d _ { \mathrm{classification} } ( q _ { \psi } ( y _ { i } ) , \beta _ { i } ) ,\tag{61}

其中,预测器网络 qψq _ { \psi } 尝试预测表示 yi=fθ(xi)y _ { i } = f _ { \theta } ( x _ { i } ) 的簇分配。

在实验中,作者使用了带有 k-means 的标准 AlexNet(Krizhevsky等人,2017),并认为聚类算法的选择并不关键。

6.2 自标记(SeLa)

朴素结合聚类与表示学习的一个常见弱点是其容易产生退化解,例如所有表示都被分配到同一个簇。为了解决这个问题,Asano等人(2019)开发了一种改进的交替更新方案,称为自标记(SeLa),该方案对标签施加约束,使得每个簇被分配相同数量的数据点。对应于图像 x1,,xnx _ { 1 } , \ldots , x _ { n } 的伪标签被编码为独热向量 β1,,βn{0,1}k\beta _ { 1 } , \ldots , \beta _ { n } \in \{ 0 , 1 \} ^ { k }。为了分配伪标签 β1,,βn\beta _ { 1 } , \ldots , \beta _ { n } 并分别拟合编码器网络 fθf _ { \theta } 和预测器网络 qψq _ { \psi },作者考虑了以下优化问题:

minβ,θ,ψ 1ni=1ndce(qψ(fθ(xi)),βi),(62)\operatorname*{min} _ { \beta , \theta , \psi } \ { \frac { 1 } { n } } \sum _ { i = 1 } ^ { n } d _ { \mathrm { { c e } } } ( q _ { \psi } ( f _ { \theta } ( x _ { i } ) ) , \beta _ { i } ) ,\tag{62} s.t.i=1nβi[j]=nk,βi[j]{0,1}for j{1,,k},(63){ \mathrm { s . t . } } \quad \sum _ { i = 1 } ^ { n } \beta _ { i } [ j ] = { \frac { n } { k } } , \quad \beta _ { i } [ j ] \in \{ 0 , 1 \} \quad { \mathrm { f o r ~ } } j \in \{ 1 , \ldots , k \} ,\tag{63}

他们通过交替执行以下两个步骤来解决该问题:

  1. 将伪标签分配给图像的问题被表述为一个最优传输问题,并使用 Sinkhorn-Knopp 算法的快速变体(Cuturi,2013)求解。

  2. 固定步骤1中的伪标签,并通过最小化交叉熵损失来更新参数 θ\thetaψ\psi

注意,步骤2与DeepCluster中使用的步骤相同。然而,在DeepCluster中,所有数据点可能被分组到单个簇中,这会导致学习到一个恒定的表示,从而在两个优化步骤中都达到最小值。

6.3 同一图像多视图间的交换分配(SwAV)


图19:SwAV实际上并不测量不同视图图像表示之间的相似性,而是将表示与通过将特征分配给参数化原型而获得的代码进行比较。

一般来说,对比方法由于需要大量显式的成对特征比较而计算上具有挑战性。然而,Caron等人(2020)提出了一种替代算法,称为SwAV,该算法通过数据聚类来规避此问题,同时促进不同视图间聚类分配的一致性。与DeepCluster和SeLa相比,SwAV是一种基于聚类的在线方法,即它不在聚类分配步骤和训练步骤之间交替进行。使用编码器网络 fθf _ { \theta } 计算同一图像 x 的两个视图的图像表示 y(1)y ^ { ( 1 ) }y(2)y ^ { ( 2 ) }。然后将这些表示映射到一组 k 个参数化原型 Cψ=[c1,,ck]\boldsymbol { C } _ { \psi } = [ c _ { 1 } , \ldots , c _ { k } ] 2,从而产生相应的代码 q(1)q ^ { ( 1 ) }q(2)q ^ { ( 2 ) }。接下来,解决一个交换预测问题,即使用来自第二个视图的编码来预测从一个视图导出的代码。为了实现这一点,我们最小化:

Lθ,ψSwAV=1ni=1n(qi(1),yi(2))+(qi(2),yi(1)),(64)\mathcal { L } _ { \theta , \psi } ^ { \mathrm{SwAV} } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \ell ( q _ { i } ^ { ( 1 ) } , y _ { i } ^ { ( 2 ) } ) + \ell ( q _ { i } ^ { ( 2 ) } , y _ { i } ^ { ( 1 ) } ) ,\tag{64}

其中 (q,y)=dce(q\ell ( q , y ) = d _ { \mathrm{ce} } ( q , softmaxτ (Cy))( C ^ { \top } y ) ) 量化了表示 y 与代码 qq 在温度 τ>0\tau > 0 下的对应关系。有关架构的概述,请参见图19。请注意,尽管SwAV利用了对比学习,但它不需要使用大型存储库或动量网络。

除了这种方法,作者还提出了一种称为 multi-crop 的增强技术,该技术也用于DINO(见第4.2节)。该方法不使用两个全分辨率视图,而是使用具有不同分辨率的视图混合。在这种方法中,通过使用相当小的变换来比较多个变换,这进一步改进了先前的方法,如SimCLR、DeepCluster和SeLa。

7 表示学习方法的分类

正如我们在本综述中所见,有几种方法可以学习有意义的图像表示。这些方法包括解决特定的预训练任务,例如预测图像的旋转角度,最大化同一图像不同视图之间的互信息,使用对比损失以在潜在空间中分离正负样本,从教师网络学习,以及聚类并随后对图像进行自标记。基于这些区别,我们在以下部分改编并扩展了Bardes等人(2021)提出的分类法,该分类法包括以下五个类别:

  1. 前置任务方法

  2. 信息最大化

  3. 教师-学生方法

  4. 对比表示学习

  5. 基于聚类的方法

请注意,某些方法可能属于多个类别,因为它们结合了不同的方法。 例如,CPC (v2) 和 CMC 都使用了对比损失以及信息最大化。 PIRL 包括解决前置任务和对比损失来学习表示。

图20给出了所提出分类法中所有方法的可视化概览。内部节点显示了连接到每个被评述方法的五个类别。可以归入多个类别的方法具有多条入边。作为补充概览,表1列出了所有方法,包括它们的主要类别分配以及Github1上原始实现的URL(如果可用)。

iew over the representation learning approaches discussed


图20:图像表示学习方法分类的图形概览。

8 定量结果的元研究

评估学习到的表示质量可能颇具挑战性。文献中已确立的一种方法是在下游计算机视觉任务上评估所获得的表示,如图像分类、目标检测或实例分割。在本节中,我们解释了表示学习方法的评估过程,并更详细地审视文献中最常见的评估任务。我们根据性能对所有回顾的方法进行比较,并在三个不同的数据集上报告结果。我们进行了定量比较,并为进一步评估和比较所回顾的方法提供了关于潜在未来方向的一些见解。

8.1 表示学习方法的评估

表示学习模型的性能通常通过让预训练模型解决下游任务(如图像分类)来衡量和比较。对于预训练,选择一个基础架构作为编码器,并以自监督方式训练,不使用标签。许多作者会尝试多种架构。图像分类的一个默认架构是ResNet-50(He等人,2016),较新的方法通常使用Vision Transformers(ViT)(Dosovitskiy等人,2020)作为编码器。学习到的表示随后在不同的下游任务上进行评估。我们将在本节后面更详细地介绍评估协议。

我们确定了五个最常用于评估表示学习方法的数据集:ImageNet(Russakovsky等人,2015)、Pascal视觉对象类别(VOC)(Everingham等人,2009)、Microsoft上下文中的常见对象(COCO)(Lin等人,2014)、CIFAR-10、CIFAR-100(Krizhevsky等人,2009)和Places205(Zhou等人,2014)。所有列出的数据集都包含以下一项或多项任务:图像分类(IC)、目标检测(OD)和实例分割(Seg)。表2显示了哪些最常用的数据集被用于评估每种方法。

为了快速了解所有被评述方法的性能,我们在下面进行定量比较。我们报告了ImageNet、Pascal VOC和Microsoft COCO的评估结果,并指出了进一步评估可能有趣的空白之处。所有方法在进一步评估之前都已在ImageNet训练集上进行了预训练。

表2:每种表示学习方法所评估的数据集(ImageNet、Pascal VOC、Microsoft COCO、CIFAR和Places-205)和任务(图像分类、目标检测和实例分割)概览。下方的数字表示所展示的20种方法中有多少种使用了相应的数据集进行评估。


图21:被评述方法使用ResNet-50编码器在ImageNet上的Top-1准确率,按其首次在arXiv2上发布的时间排序。灰色线条标记了监督学习的基准。

ImageNet。ImageNet上的图像分类包含1000个不同的类别,并已成为表示学习方法的评估标准,主要通过两种方式进行评估。一种是在冻结的预训练表示之上训练线性分类器,另一种是使用预训练权重初始化模型权重,并分别在1%和10%的带标签ImageNet训练数据上进行微调。表3显示了每种方法使用ResNet-50编码器(为了更好的可比性)或不同架构的准确率。我们同时报告了Top-1和Top-5准确率。在使用ResNet-50评估的方法中,DINO和SwAV表现最佳,几乎达到了监督训练的ResNet50的性能。考虑到所报告的Top-5准确率,BYOL表现最佳,紧随其后的是VicReg和Barlow Twins。对于其他更大的架构,EsViT和DINO均表现最佳,同时使用了参数数量相对较少的架构。

图21按首次在arXiv2上发布的时间顺序,显示了所有方法使用ResNet-50编码器在ImageNet训练集上的准确率。请注意,并非每种被评述的方法都出现在图中,因为有些方法未使用ResNet-50架构在ImageNet上进行评估。在相同条件下衡量每种方法的性能以使它们具有可比性将是有意义的。尽管如此,该图揭示了一些有趣的点,例如,CPC v2和CMC的表现优于大多数其他早期发布的自监督方法,而SwAV尚未被任何被比较的方法超越。

表3:ImageNet分类的Top-1和Top-5准确率,包括线性评估(左侧)和半监督学习(右侧,分类器分别在1%和10%的带标签ImageNet数据上微调)。上半部分显示ResNet-50编码器的性能,下半部分显示了使用其他架构的更多结果。我们还报告了每个网络的参数数量。

3使用RandAugment训练(Cubuk等人,2020)。
4报告的数字来自Kolesnikov等人(2019)。

每种表示学习方法的目标是从图像中提取对各种任务有用的有意义的特征。因此,在ImageNet数据上学到的提取特征的质量可以通过将其迁移到解决其他数据集(如Pascal VOC和COCO目标检测及实例分割)上的任务来进一步评估。为了在其他任务上评估特征,学习到的权重作为网络的初始化,并在其上训练线性分类器,同时对网络层进行微调。通常,从网络的不同层提取特征,同时冻结其他层的权重。每种方法报告最佳值。下面我们仔细看看Pascal VOC和Microsoft COCO数据集上的结果。在这两个数据集上执行目标检测的目标是为图像中显示的每个对象预测边界框。实例分割任务是逐像素进行的,每个像素被单独分类。

Pascal VOC。Pascal VOC(Everingham等人,2009)数据集仅有20个类别,规模相对较小,旨在模拟真实世界场景。该数据包括图像分类、目标检测和实例分割的标注。分类和目标检测任务的标准指标是使用不同交并比(IoU)阈值下的平均精度(AP)。对于分割任务,报告平均IoU。关于上述指标的详细概述,我们参考Padilla等人(2020)的工作。

表4的前五列显示了不同架构在Pascal VOC任务上的结果。对于目标检测任务,Fast R-CNN(Girshick,2015)和Faster R-CNN(Ren等人,2015)使用最为广泛。使用多裁剪的SwAV在图像分类任务上表现最佳,紧随其后的是VicReg和Barlow Twins。Barlow Twins和SwAV在目标检测任务上也表现最佳。在所有已评估分割任务的方法中,BYOL远远优于其他所有方法。然而,由于缺乏其他方法的比较值,这些结果不能被视为具有代表性。

COCO。Microsoft COCO数据集是一个用于目标检测和分割的大型数据集,包含来自91个不同类别的对象,并以其自然场景呈现。在表4的后半部分,我们展示了目标检测和实例分割的平均精度。在目标检测的情况下,它是边界框(BB)AP,在分割的情况下,它是分割掩码(MK)的AP。请注意,我们再次报告了不同编码器架构的值。用于目标检测和分割的最常用架构是Mask R-CNN(He等人,2017)模型,其编码器为C4或特征金字塔网络(Lin等人,2017)。对于这两项任务,MAE的整体AP最佳,其他值缺失,而EsViT在AP50和AP75上优于所有其他方法。同样,为了获得深入的见解,需要进行更详细的实验评估。

依赖 初始化 所提出 Kr¨ ahenb¨ uhl
在PASCAL VOC图像分类IC)对象 (, (Seg) COCO OD Seg 任务。 对于 IC 我们 报告 m平均 平均 精度 75用于 VOC OD, COCO OD COCO Seg 以及 对于 PASCAL VOC Seg )。 We 报告 原始 论文 使用 不同 方法 报告 最佳

8.2 未来方向

为了总结我们的定量元研究,我们想指出一些有趣的见解,并建议未来进行的一些实验。

正如对所有表示学习方法的比较所示,性能在很大程度上依赖于所使用的网络架构。在各种工作中,已经使用了一些架构、数据集和任务来评估自监督训练的图像表示的质量。然而,目前还没有一个标准化的基准来一致地比较方法。Goyal等人(2019)建议一系列任务作为基准,以覆盖多个方面,并在未来获得方法的详细比较。

这项元研究的一个主要贡献是对不同方法进行分类和全面呈现,以实现学习有意义图像表示的总体目标。在第7节中,描述了五个主要类别,可以将不同的方法归入其中。已经有一些方法结合了多种效果良好的方法,这表明不同表示学习方法的结合具有未来研究的潜力。

9 结论

自监督表示学习的目标是从未标记的图像数据中提取有意义的特征,并用它们来解决各种下游任务。在这项工作中,我们看到了不同的表示学习策略以及它们之间的关联。我们对过去几年开发的方法进行了广泛的概述,并调整了一个框架来对它们进行分类。