无监督视觉特征学习的参数化实例分类.
参数化实例分类(Parametric Instance Classification, PIC)是一种自监督学习范式,该框架把每张输入图像作为一个类别,通过预测类别来进行特征学习。
把输入图像经过数据增强后送入需要预训练的backbone网络提取特征,并通过一个映射头网络进行类别预测;数据集的类别数恰好与图像的数量相等。
直接使用上述策略训练的结果很差,使用适当的策略如余弦Softmax损失、更强的数据增强与两层映射头网络之后,预训练性能有显著提高。
余弦Softmax损失计算为:
\[L = -\frac{1}{|B|} \sum_{i\in B} \log \frac{\exp(\cos(w_i,z_i)/\tau)}{\sum_{j=1}^N \exp(\cos(w_j,z_j)/\tau)}\]其中$z$是映射头网络的输出特征,$w$是余弦分类器参数化的权值矩阵。
影响 PIC 框架性能的一个问题是在每一轮训练中,每个类(对应每张图像)都只会被访问一次。当使用大规模数据集时,该现象可能会影响优化,并可能导致次优的特征学习。假设每轮训练访问到图像数量是$N$,对于每轮训练访问每张图像1次的任意数据读取与采样策略,同一张图像的两次连续访问之间的距离的期望值为$N$。
作者提出了Sliding Window Data Scheduler,大多数图像的两次连续访问之间的距离的期望值为$D<N$,很好地解决了在无监督的实例分类中每个实例类被访问的频率太低的问题。
Sliding Window Data Scheduler在每轮训练中只遍历一部分图像 (一个窗口尺寸大小$D$的图像子集),并在下一轮训练时对窗口进行偏移一段距离$S$。连续窗口之间有重叠,重叠的图像占大多数,因此它们在相对较短的时间内被访问了两次。
比如设置$D=2^{17}=131072,S=2^{14}=16384$,对于大多数图像而言,两次连续访问之间的距离的期望值都是$131072$。
影响 PIC 框架性能的另一个问题是训练时间和 GPU 内存占用随数据集规模的增大而线性增加。原因有以下2方面:
- 前向/反向阶段的问题:前向传播/反向传播时,计算余弦Softmax损失,分母中包含了所有负样本,因为数据集规模很大,造成这里计算复杂度高。
- 权重更新阶段的问题:使用的 SGD 优化器会存储当前的 momentum,导致训练时间和 GPU 内存占用相对于数据大小线性增加,限制了对大规模数据的实用性。
作者提出了两种方法来显著减少训练时间和GPU 内存占用,使它们随着数据大小的增加而接近恒定。第一个是 Recent Negative Sampling,以解决前向/反向阶段的问题;第二个是分类权重更新校正 (Classification Weight Update Correction),以解决权重更新阶段的问题。
- Recent Negative Sampling是指计算余弦Softmax损失时分母中只包含了最近的$K$个负样本,因此减少了损失函数的计算成本。作者发现$K=65536$时在 ImageNet 上进行200轮预训练,获得了与使用所有实例 (约1280000个) 相似的精度。
- 分类权重更新校正是指在更新分类头的权重$w$和动量$u$时,只更新Recent Negative Sampling采样到的负样本。实验结果表明在采样实例数量很小时,分类权重更新校正方法很重要。