【摘 要】 表示学习是一种训练机器学习模型的特殊类型,它学着将原始的输入数据变换为对实现未来任务更有用的新形式。近年关于表示学习的研风头日胜,因为在很多实际工作中,增加预训练以学习有用的表示,确实提升了很多下游任务的性能。本文主要对表示学习的门类和方法做一概述,文章内容主要来自 Murphy 的《Machine Learning: Advanced Topics》第 32 章。

【参 考】 Murphy, 《Machine Learning: Advanced Topics》ch. 20

【思维导图】

1 概述

表示学习是一种训练机器学习模型以将原始输入变换为更容易解决新任务的形式的范式。与在训练时就已经知道了任务的监督学习不同,表示学习通常假设我们并不知道希望解决的任务是什么。但如果没有这些知识,是否真的可以学习到对后续任务有用的输入呢?

表示学习存在可能性的证据之一来自我们自身。人类可以快速形成对新类的丰富表示,并且支持多种行为:找到该类的更多实例,将该实例分解为多个部分,从该类生成新实例等。但是,很难直接指定我们希望机器学习系统学习哪些表示。我们可能希望用少量数据轻松解决新任务,我们可能希望构建新的输入或回答有关输入之间相似性的问题,我们可能希望表示在丢弃其他信息的同时对某些信息进行编码。

在构建表示学习方法时,目标是设计一个任务,其解决方案需要学习输入的改进表示,而不是直接指定表示应该做什么。这些任务可以有很大的不同,从构建数据集的生成模型到对数据点进行聚类。不同的方法通常涉及对数据集、不同类型数据的不同假设,并在学习表示上产生不同的差别。在本章中,我们首先讨论评估学习表示的方法,然后讨论基于监督学习、生成建模和自监督学习的表示学习方法,最后讨论表示学习背后存在的理论问题。

表示学习示意图

图 1:表示学习将输入数据(左),其中来自不同类(颜色)的数据混合在一起,转换为更容易区分类等性质的表示(右)。

2 表示学习的评估和比较

我们如何理解不同神经网络学习的表示,或者同一网络不同层学习的表示之间的差异?尽管将神经网络的表示想象为空间中的点很具有吸引力,但该空间是高维的,并不一定好理解。为了确定表示的质量以及不同表示的区别,我们需要方法来总结这些高维表示或者其与某些相关标量之间的关系。这样做需要对表示中的哪些结构是重要的做出假设。

2.1 下游任务的性能

评估表示质量的最常见方法是使其拟合一个或多个被认为代表现实世界场景的下游任务。原则上,可以选择任何策略来拟合表示,但少数拟合策略在文献中占据了主导地位。我们会在下面讨论这些策略。

显然,如果下游任务与预训练任务不同,则下游性能与预训练性能也会不同。下游任务的输入分布、目标分布或两者都可能不同于预训练任务。

  • 对于无监督或自监督表示学习的下游任务评估,通常采用与预训练任务相同的输入分布,但需要预测一些预训练期间未提供的目标。例如,在自监督视觉表示学习中,在不使用标签的 ImageNet 数据集上学习表示,但在有标签的 ImageNet 上进行评估,可以对所有数据执行线性评估,也可以使用数据子集进行一定的微调。
  • 对于有监督表示学习(迁移学习),下游任务的输入分布与预训练任务的分布大概率存在不同。例如,我们可能会在大量自然图像上对表示进行预训练,然后评估其在对未曾见过的鸟类进行分类时,会有何种表现。

2.1.1 线性分类和估计

线性估计将经过训练的神经网络视为固定特征提取器,并在从选定的神经网络层提取的固定特征之上,训练线性分类器。在早期工作中,此类线性分类器通常是一个支持向量机,但在最近的工作中,它通常是 L2L_2 正则化的多项逻辑斯谛回归分类器[@Kolesnikov_2019_CVPR]。训练这个分类器的过程相当于将一个新层附加到选定表示层之后,冻结神经网络的其余权重,而仅训练这个新层,并将任何归一化/正则化层设置为 “推断模式(inference mode)”(见图 2) .

尽管与深度神经网络相比,线性分类器在概念上很简单,但它们不一定易于训练。与深度神经网络训练不同,与常用线性分类器相关的目标是凸的,因此可以找到全局最小值,但使用随机梯度方法可能具有挑战性。使用 SGD 时,重要的是调整学习率规划和权重衰减。即使经过仔细调整,SGD 在训练分类器时仍可能需要比训练原始神经网络更多的 epochs 来收敛[@Kolesnikov_2019_CVPR]。尽管如此,使用 SGD 进行线性估计仍然是表示学习文献中常用的方法。

当可以同时维护内存中所有特征时,可以使用含线搜索的全批量优化方法(如 L-BFGS)代替 SGD。这些优化方法确保在每次训练迭代中损失都会减少,因此不需要手动调整学习率。为了获得最大的准确性,调整正则化量仍然很重要。不过,这可以通过扫描超参数值,并通过对先前的超参数值加权并热启动来有效地解决。使用全批量优化器通常意味着在执行优化之前需要预先计算特征,而不是在每个小批量上重新计算特征。预计算特征可以节省大量计算,因为通过冻结模型的前向传递通常比计算线性分类器的梯度要昂贵得多。但预计算功能也限制了每个样本可考虑的数据增强类型和数量。

重要的是:通过在有限数据集上训练线性分类器获得的准确度,只是贝叶斯最优线性分类器准确度的下限。相对于要训练的参数数量而言,用于线性评估的数据集通常很小,并且通常需要对分类器进行正则化以获得最大的准确度。因此, 线性评估的准确性不仅取决于是否可以线性分离表示中的不同类别,还取决于需要多少数据才能找到具有给定训练目标和正则化器的良好决策边界。在实践中,即便是表示的可逆线性变换,也会影响线性评估的准确性。

2.1.2 微调

也可以将所有层从预训练任务搬迁到下游任务。这个过程通常被称为 微调(Fine-tuning)。在最简单的形式(如线性估计)中,微调涉及将新层附加到选定的表示层,但与线性估计不同,所有网络参数(而不仅是新层参数)都需要根据下游任务做调整。新层可以用零初始化,也可以在所有其他参数冻结的情况下对其进行训练而获得。通常,当网络以低于预训练时的学习率进行微调时,可以获得最佳结果。

相对于在固定特征表示上训练线性分类器而言,微调的成本要高得多,因为每个训练步骤都需要通过多个层进行反向传播。然而,微调网络通常优于线性分类器,特别是当预训练和下游任务非常不同的时候。通常仅当训练样本的数量非常少(每类约 5 个)时,线性分类器才能更好地执行。

微调还可能涉及添加新的网络层。对细粒度空间位置知识比较关注的检测和分割任务,通常会添加一个特征金字塔网络 [@Lin2017Feature],它将来自预训练网络中不同特征图的信息结合起来。或者,新层可以散布在旧层之间并初始化以保留网络的输出。 Net2Net [@Chen2016Net2Net] 遵循这种方法来构建更高容量的网络,该网络利用包含在较小网络的预训练权重中的表示,而 Adapter modules [@Houlsby2019Parameterefficient] 将新的、参数有效的模块合并到预训练网络中并冻结旧网络参数,以减少在使模型适应不同任务时需要存储的参数数量。

2.1.3 特征解缠

如果已知如何生成数据集的知识,例如可用于生成数据的位置、形状和颜色等某些变化因素,我们经常希望能够在学习表示时恢复估计这些因素的能力。这需要具备解缠能力的表示学习方法。虽然有多种指标用于评价解缠效果,但大多数指标都基于测量隐因素和某个学得的表示维度之间一对一对应的程度。

2.2 表征相似性

在某些应用场景中,我们会寻求直接检查两个固定表示之间的关系,而非测量表示和下游任务之间的兼容性。

在本节中,我们假设有两组固定表示对应于相同的 nn 个样本。这些表示可以从同一神经网络的不同层或不同网络的层中提取,并且不需要具有相同维度。为了符号方便,我们假设每组表示已按行堆叠形成矩阵 XRn×p1X \in \mathbb{R}^{n \times p_1}YRn×p2Y \in \mathbb{R}^{n \times p_2},使得 Xi,:X_{i,:}Yi,:Y_{i,:} 是同一样本的两个不同表示。

2.2.1 表征相似性分析和居中核对齐

(1)表征相似性分析

表征相似性分析 (Representational similarity analysis, RSA) 是测量神经科学中表征相似性的主要技术,但已应用于机器学习。RSA 把表示矩阵之间的相似性测量问题简化为单个样本的表示之间的相似性测量问题。 RSA 首先从每个表示形成 表示相似性矩阵 (RSM)。给定两个函数 k:X×XRk : \mathcal{X} \times \mathcal{X} \rightarrow \mathbb{R}k:Y×YRk^{′} : \mathcal{Y}^{′} \times \mathcal{Y}^{′} \rightarrow \mathbb{R},分别测量单个样本表示对 x,xXx, x^{′} \in \mathcal{X}y,yYy, y^{′} \in \mathcal{Y} 之间的相似性,其对应的 表示相似性矩阵 K,KRn×nK, K^{′} \in \mathbb{R}^{n×n} 包含所有的样本表示对 Kij=k(Xi,:,Xj,:)K_{ij} = k(X_{i,:}, X_{j,:})Kij=k(Yi,:,Yj,:)K^{′}_{ij} = k^{′}(Y_{i,:}, Y_{j,:}) 之间的相似性。通过应用某种矩阵相似度函数 s(K,K)s(K, K^{′}),将这些 表示相似度矩阵 变换为标量形式的相似度量值。

RSA 框架可以通过选择相似性度量函数 k(,)k(·,·)k(,)k^{′}(·,·)s(,)s(·,·) 来包含许多不同形式的相似性。应该如何选择这些功能是一个有争议的话题。在实践中,通常选择 k(x,x)=k(x,x)=corr[x,x]k(x, x^{′}) = k^{′}(x, x^{′}) = corr[x, x^{′}],即样本之间的 Pearson 相关系数s(,)s(·,·) 通常被选为表征相似性矩阵之间的 Spearman 秩相关,计算该相关度量需要将 KKKK^{′} 塑形为向量,然后计算其元素排名,并测量这些排名之间的 Pearson 相关性

(2)居中核对齐

居中核对齐 (CKA) 是一种在机器学习文献中首次提出的技术,但可以解释为 RSA 的一种形式。在居中核对齐中,每个样本的相似度函数 kkkk^{\prime} 被选择为正半定核,使得 K\boldsymbol{K}K\boldsymbol{K}^{\prime} 是内核矩阵。矩阵相似度函数 ss 是中心核矩阵之间的余弦相似度

s(K,K)=HKH,HKHFHKHFHKHF,s\left(\boldsymbol{K}, \boldsymbol{K}^{\prime}\right)=\frac{\left\langle\boldsymbol{H} \boldsymbol{K} \boldsymbol{H}, \boldsymbol{H} \boldsymbol{K}^{\prime} \boldsymbol{H}\right\rangle_{\mathrm{F}}}{\|\boldsymbol{H} \boldsymbol{K} \boldsymbol{H}\|_{\mathrm{F}}\left\|\boldsymbol{H} \boldsymbol{K}^{\prime} \boldsymbol{H}\right\|_{\mathrm{F}}},

其中 A,BF=vec(A)vec(B)=tr(AB)\langle\boldsymbol{A}, \boldsymbol{B}\rangle_{\mathrm{F}}=\operatorname{vec}(\boldsymbol{A})^{\top} \operatorname{vec}(\boldsymbol {B})=\operatorname{tr}\left(\boldsymbol{A}^{\top} \boldsymbol{B}\right) 是 Frobenius 积,H=I1n11\boldsymbol{H}=\boldsymbol{I} -\frac{1}{n} \mathbf{1 1}^{\top} 是中心矩阵。正如上面所应用的,中心矩阵从相似性索引的行和列中减去均值。

kkkk^{\prime} 被选为线性核 k(x,x)=k(x,x)=xxk\left(\boldsymbol{x}, \boldsymbol{x}^{\prime}\right)=k^{\prime}\left(\boldsymbol{x}, \boldsymbol{x}^{\prime}\right)=\boldsymbol{x}^{\top} \boldsymbol{x}^{\prime}。在这种情况下,K=XX\boldsymbol{K}=\boldsymbol{X} \boldsymbol{X}^{\top}K=YY\boldsymbol{K}^{\prime}=\boldsymbol{Y} \boldsymbol{Y} ^{\top},允许根据特征对而不是样本对之间的相似性来表示 CKA。表示本身必须首先通过从它们的列中减去均值来居中,得到 X~=HX\tilde{\boldsymbol{X}}=\boldsymbol{H} \boldsymbol{X}Y~=HY\tilde{\boldsymbol{Y}}= \boldsymbol{H} \boldsymbol{Y}。然后,所谓的线性居中内核对齐由下式给出:

s(K,K)=X~X~,Y~Y~FX~X~FY~Y~F=X~Y~F2X~X~FY~Y~F.s\left(\boldsymbol{K}, \boldsymbol{K}^{\prime}\right)=\frac{\left\langle\tilde{\boldsymbol{X}} \tilde{\boldsymbol{X}}^{\top}, \tilde{\boldsymbol{Y}} \tilde{\boldsymbol{Y}}^{\top}\right\rangle_{\mathrm{F}}}{\left\|\tilde{\boldsymbol{X}} \tilde{\boldsymbol{X}}^{\top}\right\|_{\mathrm{F}}\left\|\tilde{\boldsymbol{Y}} \tilde{\boldsymbol{Y}}^{\top}\right\|_{\mathrm{F}}}=\frac{\left\|\tilde{\boldsymbol{X}}^{\top} \tilde{\boldsymbol{Y}}\right\|_{\mathrm{F}}^2}{\left\|\tilde{\boldsymbol{X}}^{\top} \tilde{\boldsymbol{X}}\right\|_{\mathrm{F}}\left\|\tilde{\boldsymbol{Y}}^{\top} \tilde{\boldsymbol{Y}}\right\|_{\mathrm{F}}} .

线性居中核对齐相当于居中特征之间的 RV 系数,如 [@Kornblith2019Similarity] 所示。

2.2.2 正则相关分析及相关方法

给定两个数据集(在这种情况下,表示矩阵 X\boldsymbol{X}Y\boldsymbol{Y}),正则相关分析(或 CCA)试图将两个数据集映射到共享的隐空间,而它们在这个空间中具有最大的相关性。第 ith i^{\text {th }} 对正则权重 (wi,wi)\left(\boldsymbol{w}_i, \boldsymbol{w}_i^{\prime}\right) 最大化对应的正则向量之间的相关性 ρi=corr[Xwi,Ywi]\rho_i=\operatorname{corr}\left[\boldsymbol{X} \boldsymbol{w}_i, \boldsymbol{Y} \boldsymbol{w}_i^{\prime}\right] 受限于新的正则向量与以前的正则向量正交,

maximizecorr[Xwi,Ywi]\operatorname{maximize} \operatorname{corr}\left[\boldsymbol{X} \boldsymbol{w}_i, \boldsymbol{Y} \boldsymbol{w}_i^{\prime}\right]

subject to j<iXwiXwj\text{subject to } \forall_{j<i} \quad \boldsymbol{X} \boldsymbol{w}_i \perp \boldsymbol{X} \boldsymbol{w}_j

j<iYwiYwj\forall_{j<i} \quad \boldsymbol{Y} \boldsymbol{w}_i^{\prime} \perp \boldsymbol{Y} \boldsymbol{w}_j^{\prime}\\

Xwi=Ywi=1\left\|\boldsymbol{X} \boldsymbol{w}_i\right\|=\left\|\boldsymbol{Y} \boldsymbol{w}_i^{\prime}\right\|=1

非零正则相关的最大数量是秩的最小值,p=min(rk(X),rk(Y))p=\min (\operatorname{rk}(\boldsymbol{X}), \operatorname{rk}(\boldsymbol{Y}))

用于计算正则权重和相关性的标准算法首先将各个表示分解为正交矩阵和第二个矩阵的乘积,X~=QQQ=I\tilde{\boldsymbol{X}}=\boldsymbol{Q}:\boldsymbol{Q}^ {\top} \boldsymbol{Q}=\boldsymbol{I}Y~=QR: boldsymbolQQ=I\tilde{\boldsymbol{Y}}=\boldsymbol{Q}^{\prime} \boldsymbol{R}^{\prime}: \ boldsymbol{Q}^{\prime \top} \boldsymbol{Q}^{\prime}=\boldsymbol{I}。这些分解可以通过 QR 分解或奇异值分解来获得。 QQ=UΣV\boldsymbol{Q}^{\top} \boldsymbol{Q}^{\prime}=\boldsymbol{U} \boldsymbol{\Sigma} \boldsymbol{V}^{\top} 的第二个奇异值分解提供确定正则权重和相关性所需的数量。

具体来说,正则相关是奇异值 ρ=diag(Σ)\boldsymbol{\rho}=\operatorname{diag}(\boldsymbol{\Sigma}); 正则向量是 XW=QU\boldsymbol{X} \boldsymbol{W}=\boldsymbol{Q} \boldsymbol{U}YW=QV\boldsymbol{Y} \boldsymbol{W}^{\prime}=\boldsymbol {Q}^{\prime} \boldsymbol{V} 的列; 并且正则权重是 W=R1U\boldsymbol{W}=\boldsymbol{R}^{-1} \boldsymbol{U}W=R1V\boldsymbol{W}^{\prime}=\boldsymbol{R}^{\prime -1} \boldsymbol{V}

将正则相关的结果向量转换为标量的两种常见策略是采用均方正则相关:

RCCA2(X,Y)=ρ22/p=QQF2/p,R_{\mathrm{CCA}}^2(\boldsymbol{X}, \boldsymbol{Y})=\|\boldsymbol{\rho}\|_2^2 / p=\left\|\boldsymbol{Q}^{\top} \boldsymbol{Q}^{\prime}\right\|_{\mathrm{F}}^2 / p,

或正则相关均值:

ρˉ=i=1pρi/p=QQ/p,\bar{\rho}=\sum_{i=1}^p \boldsymbol{\rho}_i / p=\left\|\boldsymbol{Q}^{\top} \boldsymbol{Q}^{\prime}\right\|_* / p,

其中 \|\cdot\|_* 表示核范数。均方正则相关有几个替代名称,包括 Yanai 的 GCD、Pillai 的迹线或特征空间重叠分数。

虽然 CCA 是一个强大的工具,但它遭受维度的诅咒。如果至少一个表示具有比样本更多的神经元,并且每个神经元与其他神经元线性无关,则所有正则相关都是 1。在实践中,由于神经网络表示是高维的,我们可以发现自己处于没有足够的数据来准确估计正则相关。此外,即使我们可以准确地估计正则相关性,相似性度量也可能不太重视低方差方向的相似性。

奇异向量 CCA (SVCCA) 通过在执行 CCA 时仅保留 X~\tilde{\boldsymbol{X}}Y~\tilde{\boldsymbol{Y}} 的最大主成分来缓解这些问题。给定表示 X~=UΣV\tilde{\boldsymbol{X}}=\boldsymbol{U} \boldsymbol{\Sigma} \boldsymbol{V}^{\top}Y的奇异值分解~=UΣV\tilde{\boldsymbol{Y 的奇异值分解}}=\boldsymbol{U}^{\prime} \boldsymbol{\Sigma}^{\prime} \boldsymbol{V}^{\prime \top},SVCCA 只保留U\boldsymbol{U} 的前 kk 列对应于 σ=diag(Σ)\sigma=\operatorname{diag}(\boldsymbol{\Sigma}) 的最大 kk 奇异值(即 kk 最大的主成分)和第一个 kk^{\prime}U\boldsymbol{U}^{\prime} 对应最大的 ksingulark^{\prime} \operatorname{singular}σ=diag(Σ)\boldsymbol{\sigma}^{\prime}= \operatorname{diag}\left(\boldsymbol{\Sigma}^{\prime}\right)。通过这些奇异值分解,然后可以使用上述 Björck 和 Golub 的算法计算正则相关性、向量和权重,通过设置

Q=U:,1:k,R=Σ1:k,1:kV:,1:k,Q=U:,1:k,R=Σ1:k,1:kV:,1:k\boldsymbol{Q}=\boldsymbol{U}_{:, 1: k}, \quad \boldsymbol{R}=\boldsymbol{\Sigma}_{1: k, 1: k} \boldsymbol{V}_{:, 1: k}^{\top}, \quad \boldsymbol{Q}^{\prime}=\boldsymbol{U}_{:, 1: k}^{\prime}, \quad \boldsymbol{R}^{\prime}=\boldsymbol{\Sigma}_{1: k, 1: k}^{\prime} \boldsymbol{V}_{:, 1: k}^{\top}

Raghu 等建议保留足够的分量来解释 99%99 \% 的方差,即将 kk 设置为最小值使得 σ1:k2/σ2=0.99\left \| \boldsymbol{\sigma}_{1: k}\right \|^2 / \|\boldsymbol{\sigma}\|^2=0.99kk^{\prime} 到最小值,使得 σ1:k2/σ2=0.99\left\|\sigma_{1: k^{\prime}}^{\prime}\right\|^2 /\left\|\boldsymbol{\sigma}^{\prime}\right\|^2=0.99。然而,对于 min(k,k)\min \left(k, k^{\prime}\right) 的固定值,基于 CCA 的相似性度量随着 max(k,k)\max \left(k, k^{\prime}\right) 的值而增加。因此,需要更多分量来解释 99%99\% 的表示方差的表示可能看起来与所有其他表示 “更相似”,而不是具有更快衰减的奇异值谱的表示。在实践中,通常最好将 kkkk^{\prime} 设置为相同的固定值。

相反,投影加权 CCA (PWCCA) 通过测量他们解释的原始表示中的可变性来对相关性进行加权。得到的相似性度量是

PWCCA(X,Y)=i=1pαiρii=1pαi,αi=(Ywi)Y1\operatorname{PWCCA}(\boldsymbol{X}, \boldsymbol{Y})=\frac{\sum_{i=1}^p \alpha_i \rho_i}{\sum_{i=1}^p \alpha_i}, \quad \quad \alpha_i=\left\|\left(\boldsymbol{Y} \boldsymbol{w}_i^{\prime}\right)^{\top} \boldsymbol{Y}\right\|_1

PWCCA 在代表性相似性文献中享有一定程度的广泛使用,但它具有潜在的不良特性。首先,它是不对称的;它的值取决于用于加权的两种表示中的哪一种。其次,不清楚为什么应该使用 L1L^1 范数来确定权重,这对于表示的旋转不是不变的。可以说,直接通过正则组件解释的表示中的方差量来加权相关性更直观,这对应于用平方 L2L^2 范数替换 L1L^1 范数。得到的相似性度量是

RLR2(X,Y)=i=1pαiρi2i=1pαi,αi=j=1p2(Ywi)Y22.R_{\mathrm{LR}}^2(\boldsymbol{X}, \boldsymbol{Y})=\frac{\sum_{i=1}^p \alpha_i^{\prime} \rho_i^2}{\sum_{i=1}^p \alpha_i^{\prime}}, \quad \alpha_i^{\prime}=\sum_{j=1}^{p_2}\left\|\left(\boldsymbol{Y} \boldsymbol{w}_i^{\prime}\right)^{\top} \boldsymbol{Y}\right\|_2^2 .

如 Kornblith 等人所示。 , 当 p2p1p_2 \geq p_1 时,这种替代相似性度量等效于使用线性回归来拟合 Y~\tilde{\boldsymbol{Y}} 中的每个神经元所解释的整体方差,使用表示 X~\tilde{\boldsymbol{ X}}

RLR2(X,Y)=1i=1p2minβY~:,iX~β2/Y~F2.R_{\mathrm{LR}}^2(\boldsymbol{X}, \boldsymbol{Y})=1-\sum_{i=1}^{p_2} \min _{\boldsymbol{\beta}}\left\|\tilde{\boldsymbol{Y}}_{:, i}-\tilde{\boldsymbol{X}} \boldsymbol{\beta}\right\|^2 /\|\tilde{\boldsymbol{Y}}\|_{\mathrm{F}}^2 .

最后,CCA 和线性 CKA 之间有密切的关系。这种关系可以通过根据奇异值分解直接编写相似性索引来阐明 X~=UΣV\tilde{\boldsymbol{X}}=\boldsymbol{U} \boldsymbol{\Sigma} \boldsymbol{V}^{\top}Y~=UΣV\tilde{\boldsymbol{Y}}=\boldsymbol{U}^{\prime} \boldsymbol{\Sigma}^{\prime} \boldsymbol{V}^{\prime \top}。左奇异向量 ui=U:,i\boldsymbol{u}_i=\boldsymbol{U}_{:, i} 对应于归一化为单位长度的 X\boldsymbol{X} 的主成分,平方奇异值 λi=Σii2\lambda_i=\Sigma_{i i}^2 是这些主成分解释的方差量(高达 1/n1/n 的因子)。鉴于这些奇异值分解,RCCA2RLR2R_{\mathrm{CCA}}^2、R_{\mathrm{LR}}^2 和线性 CKA 变为:

RCCA2(X,Y)=i=1p1j=1p2(uiuj)2/p1RLR2(X,Y)=i=1p2j=1p2λj(uiuj)2/j=1p2λjCKAlinear (X,Y)=i=1p1j=1p2λiλj(uiuj)2i=1p1λi2j=1p2λj2.\begin{aligned} R_{\mathrm{CCA}}^2(\boldsymbol{X}, \boldsymbol{Y}) &=\sum_{i=1}^{p_1} \sum_{j=1}^{p_2}\left(\boldsymbol{u}_i^{\top} \boldsymbol{u}_j^{\prime}\right)^2 / p_1 \\ R_{\mathrm{LR}}^2(\boldsymbol{X}, \boldsymbol{Y}) &=\sum_{i=1}^{p_2} \sum_{j=1}^{p_2} \lambda_j^{\prime}\left(\boldsymbol{u}_i^{\top} \boldsymbol{u}_j^{\prime}\right)^2 / \sum_{j=1}^{p_2} \lambda_j^{\prime} \\ \mathrm{CKA}_{\text {linear }}(\boldsymbol{X}, \boldsymbol{Y}) &=\frac{\sum_{i=1}^{p_1} \sum_{j=1}^{p_2} \lambda_i \lambda_j^{\prime}\left(\boldsymbol{u}_i^{\top} \boldsymbol{u}_j^{\prime}\right)^2}{\sqrt{\sum_{i=1}^{p_1} \lambda_i^2} \sqrt{\sum_{j=1}^{p_2} \lambda_j^{\prime 2}}} . \end{aligned}

因此,这些相似性指标都涉及来自 X\boldsymbol{X}Y\boldsymbol{Y} 的所有主成分对之间的相似性,但是根据这些主成分解释的方差分数对这些相似性赋予不同的权重。

2.2.3 表征相似性度量的比较

在表征相似性度量中,“哪些性质是所需的?” 是一个悬而未决的问题,这个问题可能没有唯一的答案。尽管下游任务的准确性评估,接近于神经网络表示的现实世界真实用例,但表示的相似性度量与之不同,其目标是为了理解所学表示在神经网络中的演变机制,或者它们在具有不同架构或训练设置的神经网络之间的差异。

有一种对不同的相似性度量进行分类方法,那就是对那些相对它们而言不变的表示进行变换。不变性的最小形式是构成表示的神经元具有排列不变性,这是必需的,因为神经网络中的神经元通常没有正则排序:对于常用的初始化策略,给定初始化的任何排列都是等概率的,并且几乎所有架构和优化器产生在置换下等变的训练 trace。由互信息提供的任意可逆变换的不变性显然不可取,因为许多现实的神经网络是输入的单射函数 [@Goldfeld2019Estimating],因此在任何一对表示之间,总是存在可逆变换。在实践中,大多数常用的相似性度量对于表示的旋转(正交变换)具有不变性,这意味着置换的不变性。仅基于 CCA 相关性的相似性度量,例如 RCCA2R^2_{CCA} 和 ̄ρˉ\bar \rho,对于表示的所有可逆线性变换都具有不变性。但 SVCCA 和 PWCCA 却不是。

区分相似性度量的另一种方法是调查我们已知的表示之间关系,并凭经验评估表示恢复这些关系的能力。[~@Kornblith2019Similarity] 提出了一个简单的“健全性检查”:给定从不同随机初始化训练的两个架构相同的网络 A 和 B,网络 A 中的任何层都应该更类似于网络 B 中的架构对应层,而不是任何其他层。他们表明,当考虑 CNN 的 flatten 表示时,基于中心核对齐的相似性度量满足这种健全性检查要求,而其他相似性度量则不满足。相比之下,当考虑 Transformer 中单个 token 的表示时,所有相似性度量都表现得相当好。然而,[~@Maheswaranathan2019Universality] 表明 CCA 和线性 CKA 都对看似无害的 RNN 设计选择(例如激活函数)高度敏感,尽管对不同网络动态的不动点的分析表明它们的操作方式相似.。

3 学习表示的方法

表示学习的目标是学习输入的变换,以便更容易解决未来的任务。通常,我们希望未来任务在学习表示时是未知的,因此我们无法直接通过训练提高未来任务的性能。学习这样的通用表示需要收集大规模的未标记或弱标记数据集,并为无需直接访问下游任务即可解决的表示识别任务或先验。大多数方法专注于学习参数化映射 z=fθ(x)z = f_{\theta}(x),它接受输入 xx 并使用具有参数 θ{\theta} 的神经网络将其变换为表示 zz

表示学习的主要挑战在于:提出一个需要通过学习表示来解决的任务。如果任务太简单,则无需学习表示也许就可以解决。如果提出的任务与用于评估表示的下游任务存在太大不同,那么学得的表示也可能没有用。例如,如果下游任务是对象检测,则需要表示能够对图像中对象的类型和位置进行编码。但如果我们只关心分类,那么表示可以丢弃关于位置的信息。这种情况导致 学习表示的方法通常是不通用的:不同的表示学习训练任务可能对不同的下游任务有不同的表现。

监督学习与自监督学习

图 2:从图像中学习表示的三种方法。输入的图像通过深度神经网络(绿色)编码后产生表示(蓝色)。额外的浅层或深层神经网络(黄色)通常用于训练表示,并在解决下游任务时被丢弃。(a)在有监督的情况下,从表示到 logits 的映射通常是线性的(b)对于自编码器,从表示到图像的映射可能非常复杂和随机;(c)与监督或生成方法不同,对比方法依赖正对(通常通过数据增强创建)和负对(通常是其他数据点)形式的其他数据点来学习表示。

图 2 中,我们概述了即将讨论的三种表示学习方法。

  • 监督方法:使用标准的监督损失函数,对大规模监督或弱监督数据进行训练。
  • 生成方法:旨在学习数据集或部分数据集的生成模型。
  • 自监督方法:基于变换预测或多视图学习,实现一个无需人工输入的标签合成任务。

3.1 监督表示学习和迁移

(1)标准监督–迁移学习

视觉表示学习的第一个重大成功来自在大型标记数据集上训练的深度神经网络。在发现有监督深度神经网络可以在自然图像分类方面优于经典计算机视觉模型后,人们已经达成共识:深度神经网络能够学习到比传统任务中的手工特征更好的表示。尽管最近无监督视觉表示学习在许多领域取得了具有竞争力的结果,但监督表示学习仍然是主导方法。

关于神经网络架构和数据集的一些经验观察:

  • 在大型数据集上训练的大型神经网络,通常在预训练和下游任务上都能获得更好的性能。
  • 在保持其他设计选择不变的情况下,在对自然图像数据集(如 ImageNet)的预训练期间具有更高准确度的神经网络架构,也能够为下游自然图像任务学习到更好的表示(通过线性评估和微调精度等指标已经得到证明)。
  • 但当从预训练任务到下游任务的数据分布域转移较大时(例如,从 ImageNet 到医学图像),预训练和下游任务的准确率之间会表现出更低的相关性。
  • 更大的预训练数据集可以更好地表示下游任务(尽管模型大小和数据集之间存在交互)。
  • 当训练小模型以迁移到特定下游任务时,最好在与该任务更相关的数据集(哪怕比较小)上进行预训练,而不是在相关性较低的较大数据集上进行预训练。
  • 大模型似乎能够从更大、更多样化的数据集中获得更多好处。

关于预训练与迁移之间 tradefof,有些设计选择会以迁移为代价来提高预训练准确性,或反之。例如:

  • 倒数第二层的 dropout 和标签平滑等正则化器可以提高预训练任务的准确性,但会对下游任务产生更差的表示。
  • 尽管大多数卷积神经网络都通过批量归一化训练,但 Kolesnikov 等发现组归一化和权重标准化的组合在神经网络预训练任务上表现相当,但在迁移任务上表现较好。
  • 与标准的训练相比,对抗训练形成的神经网络在预训练任务上表现更差,但其表示可以更好地转移到其他任务。
  • 对于预训练和下游数据集的某些组合,增加神经网络最后一层的权重衰减量可以提高可迁移性,但会牺牲预训练的准确性。

(2)弱监督

收集越来越大的预训练数据集面临很大的挑战,这导致了 弱监督表示学习 的出现。

弱监督表示学习避开了 ImageNet 等数据集的昂贵人工标注,而是依赖于从互联网上轻松收集但具有更大数据噪音的标签。监督来源包括 Instagram 和 Flickr 等,图像标签可以使用用户反馈、图片说明等信息通过专门算法自动获得。Hashtags 和自动标注会引起与严格监督样本非常相似的图像分类问题。

弱监督表示学习与标准监督表示学习的主要区别在于: 数据噪声更大,不过在实际工作中,更多数据带来的好处往往超过了噪声带来的不利影响

(3)图文(多模)监督

图文监督为创新提供了更多沃土,文本和图像的联合处理方式多种多样。最简单的方法是将数据转换为图像分类问题,其中神经网络被训练来预测哪些单词或词袋( n-gram )会出现在给定图像的文本中 [@Li2017Learning]。更复杂的方法会训练以图像为条件的 条件语言模型 [@Desai2021VirTex] 或 掩码语言模型 [@Sariyildiz2020Learning],以便更好地利用文本结构信息。

近年,人们对 对比图像/文本预训练模型(contrastive image/text pretraining models) 的兴趣激增,例如 CLIP [@Radford2021Learning] 和 ALIGN[@Jia2021Scaling],我们将在 第 3.4 节 中详细讨论。这些模型使用两个独立的 “塔” 分别处理图像和文本,并学习一个使图像和相应文本在嵌入空间中更接近的表示。如 Radford 等人所示,对比图像/文本预训练能够比其他方法更快地学习高质量表示。

除了学习良好的视觉表示之外,将图像和文本嵌入到公共空间的预训练模型,还可以实现所学表示的 零样本迁移(zero-shot transfer)。在零样本迁移中,仅使用感兴趣类别的文本信息来构建图像分类器,而不使用来自下游任务的任何图像。早期的 协同嵌入模型 分别采用图像预训练模型和词嵌入,然后将它们适配到公共嵌入空间 ,但 对比图像/文本预训练 提供了一种端到端直接学习协同嵌入模型的方法。与使用图像嵌入训练的线性分类器相比,零样本分类器的性能通常较差,但零样本分类器对分布偏移的鲁棒性要强得多 [@Radford2021Learning]。

3.2 生成表示学习

监督表示学习通常无法学习与训练表示的任务显著不同的任务表示。当我们希望解决的任务与大型标记数据集的任务有很大不同时,我们该如何学习表示呢?

生成表示学习使用参数化模型 pθ(x)p_{\theta}(x) 对数据集的整个分布 q(x)q(x) 进行建模。如果可以建立一种模型来创建所见过的所有数据,那么我们就隐式地学习了一种表示,该表示可以用于回答有关数据的任何问题,而不仅仅是那些有标签的监督任务。例如,在手写数字分类场景中,很难为手写数字的风格采集标签,但如果希望模型能够在数据集基础上生成所有可能的手写数字,它就必须学会生成具有不同风格的数字;而监督学习方法则旨在学习一种风格不变的表示。

使用生成模型学习表示的主要方法有两种:

  • 隐变量模型:旨在捕捉数据变化的隐因素,其中隐变量 zz 可以充当学得的表示(参见变分自编码器)。
  • 完全可观测模型:旨在直接捕捉可观测变量之间的特征,神经网络架构用易于处理的生成目标进行训练(参见自回归模型和流模型),然后从学得的架构中提取出表示。

3.2.1 隐变量模型

学习良好表示的准则之一是:它对于人工合成可观测数据有用。

如果能够建立一个可以创建新观测的模型,并且该模型具有一组简单的隐变量,那么我们通常希望这个模型学到的,是与底层物理生成过程相关的变量。例如,如果我们试图对形状的 2d 图像数据集进行建模,那么知道形状的位置、大小、类型等因素将使图像合成变得更为容易。此类学习方法被称为 合成分析(analysis-by-synthesis),旨在识别一组可用于合成新观测的隐因子。

隐变量模型的目标是在可观测变量 xx 和隐变量 zz 上学习参数为 θ{\theta} 的生成模型 pθ(x,z)p_{\theta}(x, z)。给定观测 xx,分析需要运行推断以计算(或采样得到)后验分布 pθ(zx)p_{\theta}(z|x) 的均值。对模型 pθ(x,z)p_{\theta}(x, z) 的不同选择以及对 pθ(zx)p_{\theta}(z|x) 推断过程的不同选择,往往代表了从数据集中学习表示的不同方式。

(1)早期堆叠方法

深度隐变量生成模型的早期工作旨在学习特征的堆叠,通常基于训练简单的 能量模型有向稀疏编码模型,每个模型都可以解释之前的一组隐因子,并且学习越来越抽象的表示 [@hinton2006fast]。[~@Bengio2014Representation] 概述了几种基于堆叠隐变量生成建模的方法,以学习越来越抽象的表示。然而,表示学习的贪婪式生成方法未能被扩展到更大的自然数据集。

如果创建数据的生成过程很简单并且可描述,那么将该结构编码到生成模型中是学习表示的一种强大方法。[~@Humanlevel] 和 [~@George2017generative] 使用了字符如何由笔画组成的知识,来构建了一个在多个下游任务中表现出色的分层表示生成模型。但对于许多现实世界的数据集,生成结构本身大多是未知的,生成模型也必须有能力学习。在生成过程中强加的结构(例如稀疏性)与从数据中学得的结构之间需要权衡取舍。

(2)变分自编码器

有向隐变量生成模型已被证明更容易训练和扩展到自然数据集。

  • 变分自编码器 [@Kingma2014AutoEncoding] 通过变分推断训练有向隐变量生成模型,并学习可以使用的先验 pθ(z)p_{\theta}(z)、解码器 pθ(xz)p_{\theta}(x|z) 以及能够提取新数据点表示的摊销推断网络 qϕ(zx)q_{\phi}(z|x)
  • [~@higgins2016beta] 表明 ββ -VAE 能够学习与合成数据集上的变化因素相对应的隐变量。
  • [~@Kingma2014SemiSupervised] 和 [~@Semisupervised] 等展示了使用变分自编码器改进半监督学习的性能。

尽管近年在将变分自编码器扩展到自然数据集方面取得了一些进展,但此类方法都还没有得到对下游任务更具竞争力的表示。

(3)生成对抗方法

用于训练有向隐变量模型的对抗性方法也也被证明对表示学习有用。特别是,使用 BiGAN [@Donahue2017Adversarial] 、ALI [@Dumoulin2017Adversarially] 和 InfoGAN [@Chen2016InfoGAN] 等编码器训练的 GAN 能够学习在对象分类方面表现良好的小规模数据集的表示。

来自 GAN 的鉴别器也被证明对学习表示很有用。最近,这些方法在 BigBiGAN [@Donahue2019Large] 中被扩展到了 ImageNet,学得的表示在分类和分割任务上表现出色。

3.2.2 完全可观测模型

完全可观测生成模型中使用的神经网络架构,在不存在隐变量的情况下学习有用的表示。

  • ImageGPT 证明了在像素上训练的自回归模型,可以学到在图像分类方面表现出色的内部表示。与隐变量模型不同,ImageGPT 从用于计算 token 的 Transformer 架构的确定性层中提取表示。
  • 类似方法在语言模型的特征学习中也得到了发展 [@Raffel2020Exploring],不过基于掩码训练的新目标(如在 BERT 中),通常会带来更好的性能。

3.2.3 自编码器

另外还有一类表示学习方法,旨在学习一种可以重建原始数据的表示。此类方法通常称为自编码器,因为数据的编码方式使得输入数据本身可以重新创建。与生成模型不同,自编码器通常无法从头开始合成观测数据或为观测数据赋予似然。

自编码器学习一个能够输出表示 z=fθ(x)z = f_{\theta}(x) 的编码器和一个能够输入表示 zz 并尝试重新创建输入数据 xx 的解码器 gϕ(z)g_{\phi}(z)。重建的质量 x^=gϕ(z)\hat{x} = g_{\phi}(z) 通常使用特定域的损失来衡量,例如图像的均方误差:

L(θ,ϕ)=1DxDxgϕ(fθ(x))22(13)\mathcal{L}(\theta,\phi) = \frac{1}{|\mathcal{D}|} \sum_{x \in \mathcal{D}} \| x - g_{\phi}(f_{\theta}(x)) \| ^2_2 \tag{13}

如果编码器或解码器没有约束,并且表示 zz 的维度与输入 xx 的维度相匹配,则存在最小化自编码目标的简单解决方案:将 fθf_{\theta}gϕg_{\phi} 设置为恒等函数。在这种情况下,表示没有学到任何有意义的东西,因此在实践中,通常会在待学习的表示上放置一个额外的正则化器。

降低表示 zz 的维数是避免自编码目标出现无意义解的一种有效机制。如果编码器和解码器网络都是线性的,并且损失是均方误差,那么最终线的线性自编码器模型能够学到数据集的主要成分 。

还有一些其他方法通过添加稀疏性(如 Ng 等添加 z1\| z \|_1 惩罚)、平滑正则化器、向输入或中间层添加噪声等方式来维持高维的表示。这些正则化器旨在形成编码器和解码器偏差,以防止学到一个恒等函数,而且争取学到一个可能对下游任务有用的非线性变换。有关正则化自编码器及其应用的更详细讨论,请参见 [@Bengio2014Representation]。

最近有人通过堆叠正则化自编码器,对迭代学习特征的几种算法进行了重新评估,结果表明:与从头开始端到端训练相比,其性能会降低。但我们将在 第 3.3.1 节 中看到,去噪自编码器已经显示出在离散域中以及更复杂的噪声和遮蔽模式时的表示学习前景。

3.2.4 生成方法面临的挑战

尽管表示的生成学习方法取得了一些成功,但它们在实践经验上已经落后了。表示的生成学习方法必须学会匹配复杂的高维和多样化的训练数据集,这需要对输入的所有变化维度进行建模,无论其在语义上是否与下游任务相关。例如,图像中草叶的确切图案对生成质量很重要,但对于许多常用的语义估计并没有用。(注:但是使生成模型偏向于语义特征并忽略输入中 “噪声” 的方法有可能是一个开放的研究领域)。

3.3 自监督表示学习

当给定大量有标记数据时,标准监督学习是训练深度神经网络的一种强大机制。但当仅有未标记数据时,生成学习方法需要对数据中的所有变化建模,且并不明确在表示中需要捕获哪些信号和噪声。在技术方法和网络架构上,两者也有很大不同,监督学习通常使用前馈神经网络架构来预测低维表示。于是,人们想到:能否(在有限任务目标下)使用有监督方法来对数据中特定的变化进行建模呢?这种思想催生了自监督的表示学习方法。

自监督学习不试图对变化的所有方面进行建模,而是人为设计一个可以廉价生成标签的任务,进而帮助我们编码有助于其他下游任务的结构。也就是说,自监督学习方法允许我们通过设计一个可以廉价生产标签的任务,将监督学习工具和技术应用于未标记数据。

在图像领域,一些自监督任务(也称为 Pretext 任务)已被证明对学习表示有效。自监督模型以监督方式被训练来执行某项人为设计的任务,其中训练所需的样本由自监督任务根据无监督样本自己生成;然后,将学到的表示应用于训练一个线性分类器或微调模型,实现面向感兴趣任务(如对象识别)的迁移。

3.3.1 去噪和掩码预测

表示的生成学习方法具有非常大的挑战性,因为模型必须学习生成整个数据分布。解决该问题的一个简单选择是 去噪(Denoising),即先向原始数据中添加各种人为制造的噪声,然后将其作为输入训练模型去重建无噪声的原始输入,进而使学得的表示具有倾向性(根据人为制造的噪声形式而定)。一种比较成功的去噪方法是 掩码预测(Masked Prediction),该方法将原始输入的部分 patches 或 tokens 替换为无信息的掩码,然后训练神经网络去预测这些缺失的 patches 或 tokens。

(1)去噪自编码器

去噪自编码器(Denoising Autoencoder) [@vincent2008extracting; @vincent2010stacked] 是最早利用去噪进行表示学习的深度模型。去噪自编码器在架构上类似于标准自编码器,但经过训练可以执行不同的任务。标准自编码器试图准确地重建其输入,而去噪自编码器试图从有噪声的输入中产生无噪声的输出。[~@vincent2008extracting] 认为神经网络必须学习数据流形的结构才能解决去噪任务。

个人理解: 可以理解为利用去噪,使学得的表示更倾向于对数据流形建模。

一些新方法保留了去噪自编码器的概念方法,但调整了掩码策略和目标。

(2)BERT 语言模型

BERT 引入了掩码语言建模任务[@Devlin2018Bert],其中 15%15\% 的输入 tokens 被选择用于掩码,并训练神经网络来预测它们。上述 tokens 中,80%80\% 的 tokens 被替换为无信息的 [MASK] 标记。但 [MASK] 标记在微调时不会出现,因此在预训练和微调之间存在一些域偏移。有 10%10\% 的tokens 会被随机 tokens 替换,另外 10%10\% 的 tokens 保持原样。BERT 和掩码语言建模任务对自然语言处理中的表示学习产生了极大影响,激发了大量后续工作 。

(3)上下文编码器

去噪表示学习方法最早用于计算机视觉,但在随后十年中很少受到关注。[@vincent2008extracting] 贪婪训练了最多三个去噪自编码器的堆叠,然后对这些堆叠进行端到端微调以对手写数字分类。贪婪无监督预训练方法基本上已经被放弃了,因为使用 CNN 和其他端到端训练架构可以获得更好的性能。 上下文编码器 [@pathak2016context] 通过遮蔽连续的图像 patches 并训练模型执行修复,能够实现与其他当代无监督视觉表示学习方法竞争的迁移学习性能。

(4)图像着色

图像着色(Image Colorize) 作为自监督任务 [@Zhang2016Colorful; @Zhang2017SplitBrain] 也与去噪有关,因为着色涉及从损坏的输入重建原始图像,尽管通常颜色以确定性方式而不是随机方式丢弃。

(5)ImageGPT

Image GPT [@chen2020generative] 直接在像素上训练 Transformer 以执行 BERT 风格的掩码图像建模任务。最终的模型在微调 CIFAR-10 时实现了非常高的准确度,但自注意力成本在像素数量上呈二次方,限制了其对大尺寸图像的适用性。

(6)BEiT

BEiT [@Bao2022BEiT] 将掩码图像建模思想与 Vision Transformers 的 patches 架构结合,解决了上述挑战。 BEiT 将图像分割成 16×1616 × 16 像素的图像块,然后使用离散变分自编码器 [@Ramesh2021Zeroshot] 将这些块离散化。在训练时,40%40\% 的 tokens 被屏蔽。该神经网络接受连续的 patches 作为输入,并被训练用于预测离散化的确实 tokens(在所有可能的 tokens 上 softmax )。

(7) 掩码自编码器

掩码自编码器(Masked AutoEncoder, MAE) [@He2021Masked] 进一步简化了掩码图像建模任务(见图 3)。 MAE 取消了对 patches 的离散化,直接使用经过 L2L_2 损失训练的浅层解码器来预测每个 patches 的组成像素。因为 MAE 编码器只对未屏蔽的 tokens 进行操作,所以即使在屏蔽大部分( 75%75\% )tokens 时也可以有效地进行训练。使用掩码预测进行预训练而后使用标签进行微调的模型,目前在没有额外数据的情况下,其结果一直占据着 ImageNet 排行榜的首位。

MAE

图 3:掩码自编码器通过随机屏蔽输入 patches 并尝试预测它们来学习图像的表示

3.3.2 变换预测

表示学习的一种更简单的方法是对输入图像应用变换,然后预测所使用的变换(见 图 4)。这个预测任务通常被表述为一个分类问题。对于视觉的表示学习,变换预测非常有吸引力,因为它允许重用与标准有监督图像分类任务完全相同的训练 pipeline。不过,目前尚不清楚经过训练的变换预测网络是否学习了更为丰富的视觉表示。变换预测任务可能会受到 “快捷” 解决方案的影响,其中神经网络学到了并不重要的特征,但该特征却足以高精度解决目标任务。多年以来,基于变换预测的自监督学习方法一直是表现最好的方法之一,但最近逐步被 对比学习掩码预测 方法所取代

Transform

图 4:变换预测涉及训练神经网络以预测应用于输入的变换。上下文编码器预测第二个作物相对于第一个作物的位置。拼图任务涉及预测 patches 的排列方式。旋转预测涉及预测应用于输入的旋转。

(1)图像排列

一些自监督任务将图像切割成 patches ,通过训练神经网络来恢复 patches 的空间排列。在上下文预测(context prediction) [@Doersch_2015_ICCV] 中,神经网络接收两个相邻的图像块作为输入,通过对八种类别的分类训练恢复其空间关系。为了防止神经网络直接匹配 patches 边界处的重叠像素,两个 patches 之间必须由一个小的可变间隙隔开。此外,为了防止网络使用色差来定位相对于镜头的色块,颜色通道被扭曲或随机丢弃。其他工作 [@noroozi2016unsupervised] 通过将图像分割成 3×33 × 3 的 patches 网格来训练网络来解决拼图游戏。神经网络接收打乱的 patches 作为输入,并学着预测其排列。通过将排列限制为所有可能性的一个子集,拼图任务可以表述为标准分类任务。

(2)图像旋转

另一个广泛使用的自监督变换任务是旋转预测 [@Gidaris2018Unsupervised],其中输入图像被旋转 009090180180270270 度,然后训练神经网络来对旋转进行分类预测。尽管该任务非常简单,但其学习到的表示通常比基于 patches 方法得到的表示性能更好。

然而,目前所有基于变换预测的方法在基准数据集(如 CIFAR-10 和 ImageNet)上的性能,都低于掩码预测和多视图对比方法

3.4 多视图表示学习

多视图表示学习(Multiview Representation learning) 旨在学习一种表示,使得 “相似” 的输入或其视图被映射在表示空间的接近区域,而 “不相似” 的输入则被映射得更远。这种表示空间通常是高维的,并且依赖于所收集的数据或所设计的一项任务,在该任务中,人们可以生成相似的 正样本对 和不同的 负样本对

多视图表示学习有许多动机和目标,但都依赖于提出一组正对,以及一种能够防止所有表示都坍缩到同一点的机制。在这里,我们使用术语 多视图表示学习 来涵盖 对比学习(Contrastive Learning),其中包含正负对、度量学习以及一些非对比式的学习方法。

与表示学习的生成方法不同, 多视图表示学习很容易将 “哪些输入应该在嵌入空间中更接近” 的先验知识结合到模型中来。此外,这些输入不必来自相同的模态,因此多视图表示学习也可以应用于丰富的多模态数据集。这种通过数据将先验知识整合到模型中的简单方式,使多视图表示学习成为最强大和最高效的表示学习方法之一。

虽然多视图表示学习有多种方法,但都涉及:

  • (1)将正对在嵌入空间中拉得更近的一种互斥组件;
  • (2)防止表示坍缩到嵌入空间中某个单点的一种机制。

下面我们首先描述多视图表示学习中正负样本的构造,然后讨论损失函数的设计,并介绍其结合 吸引排斥 对表示进行塑型的方法,最后讨论部署多视图表示学习需要考虑的实际因素。

正对和负对

图 5:不同多视图表示学习方法使用的正负对。

3.4.1 视图的选择

多视图表示学习依赖于一个数据点(或 “锚”)xx、一个吸引 xx 的正样本 x+x^{+} 、零个或多个排斥 xx 的负样本 xx^−(解释:早期的多视图方法要求必须存在正负样本,近年已经出现了不需要副样本的方法)。假设我们可以访问正对的数据生成过程:p+(x,x+)p^{+}(x, x^{+}),以及在给定数据点 xx 的情况下生成负样本的过程:p(xx)p^{-}(x^{-}|x)。其中 p+(x,x+)p^{+}(x, x^{+}) 生成 (x,x+)(x, x^{+}) 的过程来自于对数据集中原始图像的增强,而 xx^{-} 则来自于数据集随机的不同图像的增强。假设 xx^{-} 的生成过程与 xx 无关,即 p(xx)=p(x)p^{-}(x^{-}|x) = p^{-}(x^{-})

正负对视图的选择对于表示学习是否成功至关重要。图 5 显示了下面即将讨论的几种方法的正对 (x,x+)(x, x^{+}) 以及SimCLR、CMC、SupCon 、CLIP 等算法的负样本 xx^{-}

(1)SimCLR

SimCLR 通过对原始图像 x0x_0 应用两次由变换 tttt^{\prime} 定义的数据增强来创建正对,其中 x=t(x0)x = t(x_0), x+=t(x0)x^{+} = t(x_0)。所采用的数据增强包括:随机裁剪(带有水平翻转和调整大小)、颜色失真和高斯模糊。这些增强的强度(例如模糊量)会影响性能,通常被视为超参数。

(2)SupCon

如果能够访问附加信息(如分类标签),则我们可以使用具有相同标签的正对和具有不同标签的负对。当与对比损失一起使用时,结果目标被称为 SupCon ,类似于邻域分量分析。与标准监督学习相比,SupCon 被证明可以提高鲁棒性。

(3)CMC

对比多视图编码 (Contrastive Multiview Coding,CMC) 将原始图像转换至正交维度(例如亮度和色度)来生成视图。这些视图现在不再位于相同的空间(或维度)中,因此必须为不同的输入学习不同的编码器。但这些编码器的输出都存在于统一维度的嵌入空间中,并且可以用于做对比损失。在测试时,可以通过平均或连接来组合来自不同视图的嵌入。

(4)CLIP

CLIP 中的视图可以来自不同模态。 CLIP 对 图像-文本对 使用对比学习,其中 xx 是图像,x+x^{+}xx^{-} 是文本描述。当应用于从互联网上抓取的大量 图像-文本对 数据集时,CLIP 能够学习稳健的表示,而无需 SimCLR 或其他单一图像对比方法所需的任何额外数据增强。

关于反例

在大多数对比方法中,反例是从小批量中的其他元素中随机选择 x+x^{+} 来得到的。但如果批量较小,则可能在嵌入空间中没有一个负样本接近正样本,因此学习会变得很慢。与其随机选择负样本,不如通过 硬负挖掘(hard negative mining) [@Faghri2018VSE] 方法更智能地选择负样本。该挖掘在嵌入空间中选择与正样本接近的负样本,而这通常需要在训练过程中维护和更新负样本数据库。这会带来比较大的计算开销,以至于该技术很少使用。不过,在小批量中重新加权样本也可以提高性能 。

正面和负面视图的选择直接影响学习哪些特征以及鼓励哪些不变性。[~@tian2020makes] 讨论了视图选择对学习表示的作用,展示了基于共享属性(如在 SupCon 中)选择正样本会导致学习或忽略这些属性。他们还提出了一种学习视图的方法(所有先前介绍的方法都采用了固定视图),该方法基于在既不太高也不太低的视图之间的互信息级别中定位 “最佳位置”。

到目前为止,哪些视图适用于哪些下游任务仍然是一个开放的研究领域。

3.4.2 对比损失函数

给定 p+p^{+}pp^{-},我们寻求一个能够学习嵌入 fθ(x)f_\theta(x) 的损失函数,使得 xxx+x^{+} 在嵌入空间中很接近,而 xxxx^{-} 则相距甚远,这称为度量学习(metric learning)

(1)对比损失

[~@Chopra2005Learning] 提出一系列目标函数,通过强制 负对之间的距离 始终至少大于 正对之间的距离 来实现上述期待。下面是一个对比损失的实例:

Lcontrastive =Ex,x+,x[fθ(x)fθ(x+)2+max(0,ϵfθ(x)fθ(x)2].\mathcal{L}_{\text {contrastive }}=\mathbb{E}_{x, x^{+}, x^{-}}\left[\left\|f_\theta(x)-f_\theta\left(x^{+}\right)\right\|^2+\max \left(0, \epsilon-\left\|f_\theta(x)-f_\theta\left(x^{-}\right)\right\|^2\right] .\right.

上述损失使正对之间的平方 2\ell_2 距离变小来将其组合在一起,并试图确保负对至少相隔 ϵ\epsilon 的距离。在实践中,使用上述对比损失的主要挑战是如何设置超参数 ϵ\epsilon

(2)Triplet 损失

类似地,triplet loss [@Schroff2015FaceNet] 试图确保正对 (x,x+)\left(x, x^{+}\right) 之间的距离总是至少比负对 (x,x)\left(x , x^{-}\right) 之间的距离近 ϵ\epsilon:

Ltriplet =Ex,x+,x[max(0,fθ(x)fθ(x+)2fθ(x)fθ(x)2+ϵ)]\mathcal{L}_{\text {triplet }}=\mathbb{E}_{x, x^{+}, x^{-}}\left[\max \left(0,\left\|f_\theta(x)-f_\theta\left(x^{+}\right)\right\|^2-\left\|f_\theta(x)-f_\theta\left(x^{-}\right)\right\|^2+\epsilon\right)\right]

triplet loss 损失的一个缺点是必须非常小心地选择 ϵ\epsilon:如果负对之间的距离已经足够远,那么目标函数会等于零,导致学习不会发生。

(3) InfoNCE 损失

另一种对比损失被称为 InfoNCE 损失 [@Oord2019Representation] 或 多类 N 对损失 [@Sohn2016Improved],它们因为不需要设置超参数或经验判断而受到欢迎:

LInfoNCE =Ex,x+,x1:M[logexpfθ(x)Tgϕ(x+)expfθ(x)Tgϕ(x+)+i=1Mexpfθ(x)Tgϕ(xi)]\mathcal{L}_{\text {InfoNCE }}=-\mathbb{E}_{x, x^{+}, x_{1: M}^{-}}\left[\log \frac{\exp f_\theta(x)^T g_\phi\left(x^{+}\right)}{\exp f_\theta(x)^T g_\phi\left(x^{+}\right)+\sum_{i=1}^M \exp f_\theta(x)^T g_\phi\left(x_i^{-}\right)}\right]

其中 MM 是负例数量。通常嵌入 f(x)f(x)g(x)g\left(x^{\prime}\right)2\ell_{2^{-}} 归一化的,并且可以引入额外的超参数 τ\tau 重新调整内积。与使用硬阈值 ϵ\epsilon 的三元组损失不同,LInfoNCE \mathcal{L}_{\text {InfoNCE }} 总是可以通过将负样本推得更远来改进。直观地说,InfoNCE 损失确保正对比小批量中的任何 MM 个负对更靠近。

InfoNCE 损失可能与输入 xx 和学习表示 zz 之间的互信息的下限有关 [@Oord2019Representation; @Poole2019Variational]:

I(X;Z)logMLInfoNCE ,I(X ; Z) \geq \log M-\mathcal{L}_{\text {InfoNCE }},

该损失也被视为一种通过信息最大化原则进行表示学习的方法 [@Oord2019Representation]。当将 InfoNCE 损失应用于具有相同模态和维度的并行视图时,可以共享锚点 xx 的编码器 fθf_\theta 以及正例和负例的 gϕg_\phi

3.4.3 无负损失

无负样表示学习(有时称为非对比表示学习)仅使用正对学习表示,而不显式构建负对。对比方法通过强制正对之间比负对之间更靠近来防止坍缩,而无负的方法利用其他机制。其中一类目标函数包括 吸引项防止坍缩项;另一类方法的目标函数仅包含 吸引项 ,但依靠动态学习来防止坍缩。

(1)Barlow Twins 损失

Barlow Twins 损失 [@Zbontar2021Barlow] 是:

LBT=i=1p(1Cii)2+λi=1pjiCij2\mathcal{L}_{\mathrm{BT}}=\sum_{i=1}^p\left(1-\boldsymbol{C}_{i i}\right)^2+\lambda \sum_{i=1}^p \sum_{j \neq i} \boldsymbol{C}_{i j}^2

其中 CC 是来自两个视图的两批特征之间的互相关矩阵。第一个项是一个吸引项,它鼓励两个视图的表示之间的高度相似性,而第二个项防止坍缩到低等级的表示。当 C\boldsymbol{C} 是单位矩阵时,损失最小化。确保特征方差非零的类似损失也可用于防止坍缩 [@Bardes2022VICReg]。 Barlow Twins 损失可能与基于核的独立性标准(例如 HSIC)有关 [@Li2021SelfSupervised],后者也可用作表示学习的损失。

(2) BYOL 和 SimSiam

BYOL [@Grill2020Bootstrap] 和 SimSiam [@Chen2020simple] 只是最小化了两个表示之间的均方误差:

LBYOL=Ex,x+[gϕ(fθ(x))fθ(x+)2].\mathcal{L}_{\mathrm{BYOL}}=\mathbb{E}_{\boldsymbol{x}, \boldsymbol{x}^{+}}\left[\left\|g_\phi\left(f_\theta(\boldsymbol{x})\right)-f_{\theta^{\prime}}\left(\boldsymbol{x}^{+}\right)\right\|^2\right] .

沿用 Grill 等 [@Grill2020Bootstrap] 的叫法, gϕg_\phi 称为预测器,fθf_\theta 是在线网络,fθf_{\theta^{\prime}} 是目标网络。在优化这个损失函数时,权重被反向传播以更新 ϕ\phiθ\theta,但优化 θ\theta^{\prime} 会直接导致表示坍缩[@Chen2020simple]。为此,BYOL 将 θ\theta^{\prime} 设置为 θ\theta 的指数移动平均值,而 SimSiam 在每次训练迭代中设置 θθ\theta^{\prime} \leftarrow \theta。 BYOL 和 SimSiam 能够避免坍缩的机理并不完全清楚,但[~@Tian2021Understanding] 分析了简化的线性 BYOL 模型的梯度流体动力学,并表明在适当设置超参数的情况下确实可以避免坍缩。

(3) DINO

DINO(没有标签的自蒸馏)[@Caron2021Emerging] 是另一种无负损失,它通过学习的动态来避免坍缩。与 BYOL 一样,DINO 使用的损失仅包含在线网络和由在线网络权重的指数移动平均值形成的目标网络之间的 吸引项。与 BYOL 不同之处在于,DINO 使用交叉熵损失,其中目标网络为在线网络生成目标,避免了对预测器网络的需要。 DINO 损失为:

LDINO =Ex,x+[H(fθ(x)/τ,center(fθ(x+))/τ)].\mathcal{L}_{\text {DINO }}=\mathbb{E}_{\boldsymbol{x}, \boldsymbol{x}^{+}}\left[H\left(f_{\theta^{\prime}}(\boldsymbol{x}) / \tau, \operatorname{center}\left(f_\theta\left(\boldsymbol{x}^{+}\right)\right) / \tau^{\prime}\right)\right] .

其中,符号存在一些滥用,center\text{center} 代表居中均值操作,应用于包含 x+x^{+} 的小批量。将目标网络的输出居中是有必要的,可以防止坍缩到单个 “类”,而对目标网络使用较低的温度 τ<τ\tau^{\prime}<\tau 也是必要的,它可以防止坍缩到均匀分布。在 ImageNet 上使用 Vision Transformers 执行自监督表示学习时,DINO 损失确实比 BYOL 损失提升了边际增益。

3.4.4 实用技巧

除了视图选择和损失之外,还有许多有用的架构和修改可以实现更有效的多视图表示学习。

(1)编码器输出的归一化

对编码器的输出进行归一化并计算余弦相似度而不是预测无约束的表示已经证明可以提高性能 。这种归一化限制了 1-111 之间的点之间的相似性,因此通常会在学习过程中引入并固定或退火一个额外的温度参数 ττ

(2)与数据增强结合

虽然多视图学习的表示通常对下游任务有用,但与数据增强相结合时的损失通常会导致某些任务的不变性太大。相反,可以在编码器中提取较早的层作为表示,或者在计算损失之前向编码器添加一个称为投影头的附加层。在训练时,我们计算投影头输出的损失,但在评估表示的质量时,丢弃这个额外的层。

(3)批量大小

在 InfoNCE 损失中,分母项中负样本的和通常对批量大小很敏感(在实践中,需要 40964096 或更大的批量才能在这种损失下实现良好性能),这是计算上的一个负担。

MoCo (Momentum Contrast) [@He2020Momentum] 引入了一个内存队列来存储来自先前小批量的负样本,以在每次迭代时扩大负样本的大小。此外,他们使用动量编码器,其中正例和负例的编码器使用锚编码器参数的指数移动平均值。这种动量编码器方法也被发现在 BYOL 中对防止坍缩很有用。与 BYOL 一样,添加一个从在线网络映射到目标网络的额外预测器网络已证明可以提高 MoCo 的性能,并消除对内存队列的需求 [@Chen2021Empirical]。

(4)网络架构

编码器网络的主干架构在表示质量方面发挥着重要作用。对于视觉中的表示学习,最近的工作已经从基于 ConvNet 的主干转向 vision transformer,从而产生了更大规模的模型,在多个下游任务上具有更高的性能 [@Chen2021Empirical]。

4 表征学习理论

虽然深度表示学习已经取代了大多数应用程序的手工设计特征,但学习特征背后的理论以及这些方法提供的保证是有限的。在这里,我们回顾了理解表示学习的几个理论方向:可识别性、信息最大化和转移界限。

4.1 可识别性

在本节中,我们假设采用隐变量生成模型来学习表示,其中 zp(z)z \sim p(z) 是隐变量,x=g(z)x = g(z) 是从隐变量到可观测变量的确定性生成器。我们的目标是学习一个表示 h=fθ(x)h = f_{\theta}(x),它能够反转生成模型,从 xx 恢复 h=zh = z。如果能够做到这一点,我们就说模型是可识别的。通常我们无法准确地恢复真正的隐变量,例如,隐变量的维度可能存在置换,或某个维度可能是基础隐变量的变换版本:hi=fi(zi)h_i = f_i(z_i)。因此,大多数关于可识别性的理论研究工作,都聚焦在学习一个能够 置换和转化元素以匹配真实隐变量 的表示上。此类表示被称为被解缠(disentangled),因为其学得的表示维度不会将多个真实隐变量的维度混合在一起。

恢复方法通常基于隐变量模型,例如变分自编码器与各种正则化器相结合。虽然一些出版物显示了有希望的实证进展,但 [~@Locatello2020Sober] 的一项关于解缠表示学习方法的大规模研究研究表明,如果不对数据或模型进行额外假设,几种现有方法根本无法工作。他们的论点依赖于我们可以形成一个双射 ff 的观察,它从阶乘先验 p(z)=ipi(zi)p(z) = \prod_i p_i(z_i) 中获取样本,并映射到 z=f(z)z^′ = f (z),即 (a) 保留边缘分布,并且 (b) 具有完全纠缠的隐变量( zz 的每个维度都会影响 z^' 的每个维度)。以这种方式变换边缘会在改变表示同时,保留数据的边缘似然,因此不能单独使用边缘似然来识别或区分纠缠和解缠模型。从经验上看,过去方法的成功,在很大程度上是因为对需要监督标签的目标解缠指标进行仔细的超参数选择。虽然进一步的工作已经开发出超参数的无监督方法来解决其中的几个问题 [@Duan2020Unsupervised],但目前还没有已知的鲁棒方法可以在没有进一步假设的情况下学习解开表示。

为了解决学习解耦表示的经验和理论差距,几篇论文提出使用弱标记数据形式的额外信息源来提供保证。在非线性 ICA 的理论工作中 [@Roeder2020Linear] ,此信息以每个数据点的附加观测值的形式出现,这些观测值通过指数族与隐的隐变量相关。因果表示学习的工作扩展了这些方法的适用性,并强调了可以实现对弱标记数据进行如此强假设的设置 [@Scholkopf2021Causal]。

或者,可以假设访问成对的观察值,其中隐变量之间的关系是已知的。[~@Shu2020Weakly] 表明,当访问一次仅更改一个隐变量的数据对时,可以证明可以学习数据的解耦表示。在现实世界的数据集中,访问这样的数据对是具有挑战性的,因为并非模型的所有隐变量都可能在数据收集器的控制之下,并且覆盖隐变量的整个设置空间可能是禁止的昂贵的。[~@Locatello2020WeaklySupervised] 进一步发展了这种方法,但利用启发式方法来检测哪个隐变量发生了变化,并表明这在经验上表现良好,并且在某些受限设置下可能会导致学习解开的表示。可以对数据集的性质做出哪些现实的假设仍然是一个悬而未决的问题,这些假设可以轻松地学习解开的表示,并且对于任意数据集的实用方法仍然遥不可及。

4.2 信息最大化

(1)信息最大化的由来

当学习输入 xx 的表示时,一个直觉要求是尽可能多地保留关于 xx 的信息。因为我们丢弃的任何信息都无法恢复,如果该信息对下游任务有用,那么性能就会下降。

[~@Linsker1988Selforganization] 和 [~@Bell1995InformationMaximization] 早期关于生物表示学习的工作认为,信息最大化(或 InfoMax)是生物系统的一个很好的学习原则,因为它使下游处理系统能够访问尽可能多的感官输入;但生物系统旨在传递受强约束的信息,并且这些约束可能会随着时间推移通过进化进行调整,以塑造所学习的表示类型。

在将生物系统的信息最大化原则应用于神经网络时,我们会面临生物系统不会面临的新问题,即神经网络可能会产生无意义的解:只是无损地复制了输入。信息论不会对不同 bits 产生偏好,不会告诉我们输入的哪些 bits 比其他 bits 更重要。如果依据 第 2 节 中所阐述的指标,简单地无损发送图像就可以最大化信息,但却无法提高性能。架构和优化约束可以引导我们区分所学和所处理的 bits,但我们也可以利用其他信息源(例如标签)来识别哪些要提取的 bits。

(2)信息瓶颈方法

信息瓶颈方法 旨在学习输入 XX 的表示 ZZ,这些表示 ZZ 可预测另一个可观测变量 YY,同时实现尽可能的压缩。可观测变量 YY 将在表示 ZZ 中学习到的 bits 引导到具有预测性的 bits 上,并惩罚不预测 YY 的内容。我们可以将信息瓶颈形式化为一个优化问题 [@Tishby2000information] :

maximizeθI(Z;Y)βI(X;Z)\text{maximize}_{\theta}I(Z;Y ) - \beta I(X;Z)

估计高维互信息具有挑战性,但互信息可以形成能够通过现代神经网络进行优化的变分界限,例如 变分信息瓶颈(Variational Information Bottleneck,VIB)。并且,建立在变分信息瓶颈上的方法已经表现出了对自然变化和对抗性样本的更好的鲁棒性 [@Fischer2020CEB] 。

(3)信息论方法的迷惑

与信息瓶颈方法不同,信息最大化推动的许多近期方法没有明确的压缩目标。它们旨在最大化受约束的信息,但不对表示中包含的信息进行任何明确的惩罚。尽管用信息论解释表示学习很有吸引力,但仍然存在许多挑战。应用信息论来理解所学表示内容的最大挑战之一是:大多数学得的表示都具有判别式编码器,z=fθ(x)z = f_{\theta}(x),它从连续输入 xx 映射到连续表示 zz。这些映射通常可以保留有关输入的无限信息。由于互信息估计器与真实互信息的扩展性很差,因此在此情形中估计最大信息很困难,并且通常会导致较弱的下界。

在没有约束的情况下,最大化输入和所学表示之间的信息存在无意义的解,即无法对输入产生任何有意义的变换。典型如恒等映射 z=xz = x,恒等映射能够最大化信息但不改变输入。 [~@Tschannen2020Mutual] 表明,对于可逆神经网络(输入和所表示之间的真实互信息是无限的),最大化互信息的估计可以产生有意义的表示。这表明,这些估计的几何依赖性和偏差可能更多地与其在表示学习方面的成功有关,而并非在于信息本身(因为它在整个训练过程中无限)。

(4) 随机表示问题

已经提出了几种学习 随机表示(stochastic representations) 的方法,这些方法限制了所学表示中的信息量 [@Alemi2019Deep]。然而,这些方法还没有提高大多数下游任务的性能。 [~@Fischer2020CEB] 表明,对信息实施约束可以提高某些基准的鲁棒性,但到目前未知,采用确定性表示来扩大模型规模和数据集大小依然呈现出最好的实际效果[@Radford2021Learning] 。需要更多的工作来确定约束信息是否可以改善所学的表示。

[bibliography]