Advertisement

自监督学习(Self-Supervised Learning)

阅读量:

自监督学习(Self-Supervised Learning)

Self-Supervised Learning.

自监督学习(Self-Supervised Learning) 是一种无监督表示学习方法,旨在根据无标签数据集中的一部分信息预测剩余的信息,并以有监督的方式来训练该数据集。

自监督学习的优势包括:

  • 能够充分利用大型无标签数据集,利用数据集本身以较低成本构造大量标签;
  • 能够学习携带语义或结构信息的数据特征表示,从而有益于下游任务。

自监督学习已被广泛应用在自然语言处理任务中,比如语言模型默认的预训练任务就是根据过去的序列预测下一个单词。本文主要关注计算机视觉领域的自监督学习方法,即如何构造适用于图像数据集的自监督任务,包括:

  • 前置任务(pretext task) :通过从数据集中自动构造伪标签而设计的对目标任务有帮助的辅助任务,如Exemplar-CNN , Context Prediction , Jigsaw Puzzle , Image Colorization , Learning to Count , Image Rotation , Evolving Loss , Jigsaw Clustering
  • 对比学习(contrastive learning)
  • 掩码图像建模(masked image modeling)

⭐扩展阅读:

1. 基于前置任务的自监督学习方法

前置任务(pretext task) 也叫代理任务(surrogate task) ,是指通过从数据集中自动构造伪标签而设计的对目标任务有帮助的辅助任务。

Exemplar-CNN

Exemplar-CNN 从图像数据集的梯度较大区域(通常覆盖边缘并包含目标的一部分)中采样32 \times 32大小的图像块;对每一个图像块应用不同的随机图像增强,同一个图像块的增强样本属于同一个代理类别;自监督学习的前置任务旨在区分不同的代理类别。

Context Prediction

随机在图像中选取一个图像块;然后考虑以该图像块为中心的3\times 3网格,随机选择其8个邻域图像块中的一个;则自监督学习的前置任务是预测后者属于哪个邻域的八分类任务。

Jigsaw Puzzle

随机打乱图像中的九个图像块,通过共享权重的模型分别处理每一个图像块,并根据预定义的排列集合输出图像块排列的索引概率,则自监督学习的前置任务是一种多分类任务。

Image Colorization

着色 是指把输入灰度图像转化为彩色图像,即将灰度图像映射到量化颜色值输出的分布上。彩色图像设置在Lab* 颜色空间,其中取值0-100的整数值 L 匹配人眼对亮度的感知, ab 值控制不同的颜色取值,量化为313种颜色对。则自监督学习的前置任务构造为在量化颜色值上预测概率分布的交叉熵损失。

Learning to Count

把图像的特征看作一种标量属性,如果把一幅图像划分成2\times 2的图像块,则四个图像块中特征的数量之和应该与原始图像的特征数量相同。把模型看作特征计数器\phi(\cdot),对于输入图像x定义2\times下采样操作D(\cdot)2\times 2图像块划分操作T_i(\cdot),i=1,2,3,4,则自监督学习的前置任务定义为如下目标函数:

\mathcal{L} = ||\phi(D \circ x) - \sum_{i=1}^4 \phi(T_i \circ x)||_2^2 + \max(0,c-||\phi(D \circ y) - \sum_{i=1}^4 \phi(T_i \circ x)||_2^2)

Image Rotation

对输入图像随机地旋转四种不同的角度:,则自监督学习的前置任务是预测图像旋转哪种角度的四分类任务。

Evolving Loss

本文提出了一种用于视频表示学习的多模态多任务框架。该方法处理四种数据模态:RGB 、光流图像、灰度图像和音频;对每种模态设置七种自监督学习任务;并且构建其他模态网络对处理RGB 网络的数据蒸馏。

Jigsaw Clustering

Jigsaw Clustering 把一批图像拆分成m\times m的图像块,打乱后构成一批新的图像,并通过卷积网络提取每个图像块的特征。则自监督学习的前置任务包括:聚类损失:对于每一个图像块特征z_i,属于同一个原始图像的特征z_j为正样本,其余特征为负样本;定位损失:每个图像块的位置可以构造一个mm分类问题。

2. 基于对比学习的自监督学习方法

对比学习(Contrastive Learning) 旨在学习一个特征嵌入空间,使得相似的样本对(正样本对)彼此靠近,不相似的样本对(负样本对)相互远离。在无监督形式的对比学习中,可以通过数据增强 等方法构造样本对,从而实现有意义的特征表示学习。

(1)对比损失函数

对比学习中的损失函数可以追溯到监督学习中的深度度量学习,通过给定类别标签构造正负样本对,最小化正样本对(x,x^+)的嵌入距离,最大化负样本对(x,x^-)的嵌入距离。

Noise Contrastive Estimation (NCE)

噪声对比估计 是一种统计模型的参数估计方法,其想法是运行逻辑回归来区分目标样本x和噪声。逻辑回归模型f(\cdot)通过Sigmoid 激活建模属于目标而不是噪声的概率,进而建立二元交叉熵损失:

\mathcal{L}_{NCE} = - \Bbb{E}_{x \text{~~} p_{\text{data}}} [\log f(x)] - \Bbb{E}_{\tilde{x} \text{~~} p_{\text{noise}}} [\log(1-f(\tilde{x}))]

Contrastive Predictive Coding (CPC)

对比预测编码 把二元NCE 损失扩展为多元InfoNCE 损失。给定上下文向量c,正样本通过p(x|c)构造,N-1个负样本通过p(x)构造;使用类别交叉熵损失区分正样本和噪声样本:

\begin{aligned} \mathcal{L}_{InfoNCE} &= - \Bbb{E}_{x \text{~~} p_{\text{data}}} [\log\frac{f(x,c)}{\sum_{x' \text{~~} p_{\text{data}}} f(x',c)}] \ &= - \Bbb{E}_{x,x^+,{x^-_i}_{i=1}^N} [\log\frac{e^{f(x)^Tf(x^+)}}{e^{f(x)^Tf(x^+)}+\sum_{i=1}^N e^{f(x)^Tf(x^-_i)}}] \end{aligned}

CPC v2

InfoNCE 应用到图像数据集中,把输入图像x的每个图像块压缩为潜在表示z_{i,j},从中构造上下文特征c_{i,j}=g_{\phi}(z_{\leq i,\leq j}),并进一步预测潜在表示\hat{z}_{i+k,j} = W_kc_{i,j}

\begin{aligned} \mathcal{L}_N = - \sum_{i,j,k} \log\frac{\exp(\hat{z}_{i+k,j}^Tz_{i+k,j})}{\exp(\hat{z}_{i+k,j}^Tz_{i+k,j}) + \sum_l \exp(\hat{z}_{i+k,j}^Tz_{l})} \end{aligned}

Alignment and Uniformity

对比学习的损失函数具有两种性质:对齐性(Alignment)一致性(Uniformity) 。对齐性用于衡量正样本对之间的相似程度;一致性用于衡量归一化的特征在超球面上分布的均匀性。

\begin{aligned} \mathcal{L}_{align}(f;\alpha) &= \Bbb{E}_{(x,y)\text{~~}p_{pos}} [||f(x)-f(y)||_2^{\alpha}] \ \mathcal{L}_{uniform}(f;t) &= \log \Bbb{E}_{(x,y)\text{~~}p_{data}} [e^{-t||f(x)-f(y)||_2^2}] \end{aligned}

Debiased Contrastive Loss

由于样本的真实标签是未知的,因此负样本可能采样到假阴性样本。在构造对比损失时,对负样本项进行偏差修正:

g(x,{u_i}_{i=1}^N,{v_i}_{i=1}^M) = \max(\frac{1}{\eta^-}(\frac{1}{N}\sum_{i=1}^N \exp(f(x)^Tf(u_i))-\frac{\eta^+}{M}\sum_{i=1}^M \exp(f(x)^Tf(v_i))),\exp(-1/\tau)) \ \mathcal{L}_{unbiased} = \Bbb{E}_{x,{u_i}_{i=1}^N\text{~}p;x^+,{v_i}_{i=1}^M\text{~}p_x^+} [-\log \frac{\exp(f(x)^Tf(x^+))}{\exp(f(x)^Tf(x^+))+Ng(x,{u_i}_{i=1}^N,{v_i}_{i=1}^M)}]

Hard Negative Samples

对对比损失中的负样本对项进行加权,权重正比于负样本与anchor 样本的相似度,设置为:

FlatNCE

对比学习损失在批量较小时效果较差的原因之一是损失和梯度计算的浮点误差。把对比损失修改为:

\begin{aligned} \mathcal{L}_{FlatNCE} &= - \Bbb{E}_{x,x^+,{x^-_i}_{i=1}^N} [\log\frac{e^{f(x)^Tf(x^+)}}{\sum_{i=1}^N e^{f(x)^Tf(x^-_i)}}] \end{aligned}

(2)并行数据增强 Parallel Augmentation

基于并行数据增强 的对比学习方法为anchor 样本同时生成两个数据增强样本,并使得它们共享相同的特征表示。

Invariant and Spreading Instance Feature (InvaSpread)

InvaSpread 对于一批样本进行数据增强,把样本x的增强样本视为正样本,其余所有样本视为负样本;正样本特征应具有不变性,负样本特征应尽可能地分开。

\mathcal{L}_{\text{InvaSpread}} = -\sum_i \log \frac{\exp(f_i^T\hat{f}_i/\tau)}{\sum_{k=1}^N\exp(f_k^T\hat{f}_i/\tau)}-\sum_i \sum_{j\neq i} \log(1- \frac{\exp(f_i^Tf_j/\tau)}{\sum_{k=1}^N\exp(f_k^Tf_j/\tau)})

Simple Framework for Contrastive Learning of Visual Representation (SimCLR)

SimCLR 随机采样N个数据样本,对每个样本应用两次同一类的不同数据增强,构造2N个增强样本;对于任意样本,为正样本,其余2(N-1)个样本为负样本。通过编码网络f(\cdot)和映射层g(\cdot)提取特征表示,并构造对比损失:

\mathcal{L}^{(i,j)}_{\text{SimCLR}} = -\log \frac{\exp(\text{sim}(z_i,z_j)/\tau)}{\sum_{k=1,...,2N;k\neq i}\exp(\text{sim}(z_i,z_k)/\tau)}

SimCLRv2

SimCLRv2SimCLR 的基础上采用更大的卷积网络和更深的映射头,并通过微调和数据蒸馏实现半监督学习:

Bootstrap your own latent (BYOL)

BYOL 没有构建负样本对,而是使用参数为\theta的在线网络和参数为\xi的目标网络分别从图像x的两个增强版本中提取特征z,z',根据z预测z'(或交换顺序后根据z'预测z)。损失函数设置为归一化特征的均方误差损失,更新参数\theta,参数\xi是参数\theta的滑动平均:。

\begin{aligned} \mathcal{L}_{\text{BYOL}} \propto -2(\frac{ }{||q_{\theta}(z_{\theta})||_2 \cdot ||z'_{\xi}||_2}+\frac{ }{||q_{\theta}(z'_{\theta})||_2 \cdot ||z_{\xi}||_2}) \end{aligned}

Simple Siamese Representation Learning (SimSiam)

SimSiam 使用孪生网络f从图像x的两个增强版本x_1,x_2中提取特征z_1,z_2,并使用预测头h根据一个特征预测另一个特征。损失函数设置为负余弦相似度:

Swapping Assignments between multiple Views (SwAV)

SwAV 使用样本特征和预定义的K个原型向量(聚类中心) 进行对比学习。给定两个数据样本x_t,x_s,构造特征向量z_t,z_s,并进一步构造编码q_t,q_s。则损失函数定义为聚类预测和编码之间的交叉熵:

\mathcal{L}_{\text{SwAV}} = -\sum_k q_s^{(k)} \log \frac{\exp(z_t^Tc_k/ \tau)}{\sum_{k'} \exp(z_t^Tc_{k'}/ \tau)} -\sum_k q_t^{(k)} \log \frac{\exp(z_s^Tc_k/ \tau)}{\sum_{k'} \exp(z_s^Tc_{k'}/ \tau)}

Pixel-level Contrastive Learning (PixContrast)

PixContrast 是一种像素级的对比学习方法。对于一幅图像中的目标,分别选取两个子图像,则两个图像中对应同一个目标位置的像素可以看作正样本对。

Barlow Twins

Barlow Twins 把数据样本x的两个增强版本x^A,x^B喂入同一个神经网络以提取特征表示z^A,z^B,并使得两组输出特征的互相关矩阵接近单位矩阵。

\mathcal{L}_{\text{BT}} = \sum_i (1-\mathcal{C}_{ii})^2 + \lambda \sum_i \sum_{j\neq i} \mathcal{C}_{ij}^2 , \quad \mathcal{C}_{ij} = \frac{\sum_bz^A_{b,i}z^B_{b,j}}{\sqrt{\sum_b(z_{b,i}^A)^2}\sqrt{\sum_b(z^B_{b,j})^2}}

Self-distillation with no labels (DINO)

DINO 使用学生网络f_s和滑动平均更新的教师网络f_t从图像x的两个增强版本x_1,x_2中提取特征f_s(x_1),f_t(x_2)。为教师网络的预测特征引入centering 操作,然后把特征f_s(x_1),f_t(x_2)通过softmax 函数映射为概率分布。则损失函数构建为两个概率分布的交叉熵:

(3)存储体 Memory Bank

基于存储体(Memory Bank) 的对比学习方法把所有样本的特征向量存储在内存中,以减小计算开销。

Instance-level Discrimination (InstDisc)

InstDisc 把每一个数据样本看作一个类别,把样本的特征向量存储在Memory Bank 中。每次更新时从Memory Bank 中采样负样本,采用NCE 的形式区分不同样本类别:

\begin{aligned} \mathcal{L}_{InstDisc} = &\- \Bbb{E}_{p_{\text{data}}} [\log h(i,v_i^{(t-1)})-\lambda ||v_i^{(t)}-v_i^{(t-1)}||_2^2] \ & \- M \cdot \Bbb{E}_{P_N} [\log(1-h(i,v'^{(t-1)}))] \end{aligned}

Momentum Contrast (MoCo)

MoCo 通过编码器f_q(\cdot)构造查询样本x_q的查询表示q=f_q(x_q),通过滑动平均更新的矩编码器f_k(\cdot)构造键表示k_i=f_k(x_k^i),并维持一个存储键表示的先入先出队列。

\mathcal{L}_{\text{MoCo}} = -\log \frac{\exp(q \cdot k^+/\tau)}{\sum_{i=0}^{N}\exp(q \cdot k_i/\tau)}

MoCo v2

MoCo v2MoCo 的基础上引入了映射头、采用更多数据增强、余弦学习率策略和更长的训练轮数。

MoCo v3

MoCo v3 把矩对比方法应用到视觉Transformer 的自监督训练中,没有采取MoCo 中的队列设计,而是根据每批样本构造正负样本对,并在编码器后引入预测头。

给定一批样本x,分别做两次数据增强得到x_1,x_2,通过编码器构造q_1,q_2,通过矩编码器构造k_1,k_2。则对比损失对称地构造为:

\mathcal{L}_{\text{MoCov3}} = -\log \frac{\exp(q_1 \cdot k_2^+/\tau)}{\sum_{i=0}^{N}\exp(q_1 \cdot k_2^i/\tau)}-\log \frac{\exp(q_2 \cdot k_1^+/\tau)}{\sum_{i=0}^{N}\exp(q_2 \cdot k_1^i/\tau)}

(4)多模态 Multi-Modality

Contrastive Multiview Coding (CMC)

CMC 把来自不同传感器的多模态数据之间视为正样本,对于样本xM种不同的模态,可构造任意两种模态之间的对比损失:

\mathcal{L}^{(i,j)}_{\text{CMC}} = -\log \frac{\exp(f(v_i)^Tf(v_j)/\tau)}{\sum_{k}\exp(f(v_i)^Tf(v_j^k)/\tau)} -\log \frac{\exp(f(v_j)^Tf(v_i)/\tau)}{\sum_{k}\exp(f(v_j)^Tf(v_i^k)/\tau)}

Contrastive Language-Image Pre-training (CLIP)

CLIP 方法用于在图像和文本数据集中进行匹配。给定N个图像-文本对,首先计算任意一个图像和文本之间的余弦相似度矩阵,尺寸为N \times N;通过交叉熵损失使得匹配的N个图像-文本对的相似度最大,其余N(N-1)个相似度最小。

(5)应用 Applications

Contrastive Unsupervised Representations for Reinforcement Learning (CURL)

CURL 把对比学习应用到强化学习领域。它采用MoCo 方法学习强化学习任务的视觉表示,通过随机裁剪构造观测o的两个数据增强版本o_q,o_k

Contrastive Unpaired Translation (CUT)

CUT 是一种基于对比学习的图像到图像翻译方法。它构造输入图像x和生成图像\hat{y}特征的PatchNCE 损失:特征的每个像素位置对应原始图像的一个图像块;则两个相同位置的特征向量为正样本对,其余位置的特征向量为负样本。

Background Augmentation

Background Augmentation 是一种增强对比学习的性能表现的数据增强策略。使用显著性图生成方法提取图像的前景区域,并调整图像的背景区域。

3. 基于掩码图像建模的自监督学习方法

⭐ 参考文献

全部评论 (0)

还没有任何评论哟~