一 Exemplar-CNN(NIPS2014)
Discriminative Unsupervised Feature Learning with Convolutional Neural Networks
提出了一种使用无标签数据训练深度神经网络的方法。
- 创建训练数据
(1)输入数据:一系列无标签的图片。
(2)从不同图片的各种位置和尺度上随机采样[50,32000]个大小为32*32的patches。
(3)定义一系列的变换(translation,scaling,rotation等)
(4)在每一个patch上应用一系列变换得到变换后的一系列patches。
(5)将每个patch变换出的一系列图片指定为一个类别( surrogate classes)。
(6)采用softmaxwithloss对所有surrogate classed进行分类训练。 - 详细分析
(1)Surrogate Classes为8000个时达到最优解。
(2)每个类包含样本数为100个左右时,模型精度基本饱和。 - 实验结果
提取图片特征后在相关数据集上(比如CIFAR-10)训练SVM,最终结果达到无监督的SOTA,在CIFA10等数据集上和监督训练方法仍然有差距。
二 Memory Bank(CVPR2018)
Unsupervised Feature Learning via Non-Parametric Instance Discrimination
code and pretrained models
动机:在ImageNet分类任务上,top-5分类错误率明显低于top-1分类错误率,并且softmax预测第二大的类别相比其他类别(第三、第四等)往往有更大的视觉关联度。——》显著的相似特征不是通过标签学习得到而是从图片本身学习得到。
与Exemplar-CNN的不同:Exemplar CNN在训练时候采用经典的softmaxwithloss,测试的时候在提取特征的基础上训练SVM进行分类。
- 非参数的Softmax分类器
参数Softmax下,向量v被识别为第i个类别的概率:
其中是类别j的权重向量,表示v距离类别j有多远。
问题:权重向量W作为类原型和其他特征向量进行对比,而不是让实例的特征直接进行对比。于是提出非参数的Softmax,其概率表示为:,其中t是一个控制分布集中程度的温度系数。最终的目标函数变为:。
在计算的时候,所有图片的特征都要被计算,为了防止在每次迭代中都进行如此巨大的计算,维持一个特征memory bank来存储所有特征。每次迭代中将本次计算的特征更新到memory bank。
该方法不用计算和存储的梯度,能更好的扩展大大数据训练上。 - NCE
当类别数n非常大时,非参数的Softmax计算量非常大,所以采用NCE近似计算该Softmax。大概意思是不用所有负例,而是每个正例采样m(4096)个负例?然后各种简化,最终计算很快,但是不太稳定,又引入一个正则化项,约束当前迭代提取的样本特征与上次迭代提取的样本特征距离尽可能接近。 - 结论
在自监督学习任务上达到SOTA;在半监督学习任务上(先采用该方法在大量无标签数据上训练,然后在少量带标签数据上finetune)超过其他方法;在PASCAL VOC 2007检测任务上(作为pretrain model)超过其他自监督学习方法,但是与imagenet监督学习得到的pretrain model仍有差距(76.2-65.4)。
三 MOCO(CVPR2020)
Momentum Contrast for Unsupervised Visual Representation Learning
code and pretrained models
最近采用contrasive loss在无监督视觉特征训练上取得了不错的效果,好几个工作都能看作是在建立一个动态字典,字典里面的key采用一个编码网络对图片预测得到.无监督训练训练编码器进行字典查询:一个编码的query应该和与之匹配key相似,而和不匹配的key不相似.
从上述观点出发,我们假设所建立的字典应该:(1)足够大;(2)在整个训练推进的过程中保持一致性(字典中的key应该由相同的或者相似的编码网络产生).
提出MOCO的目的: 产生大(维护一个队列)并且一致(只SGD更新query的编码网络, Momentum更新key的编码网络)的字典,帮助采用contrasive loss的无监督学习.
相比Memory bank更优的原因: memory bank中key是过去一些epoch节点的非常不同的编码器产生的,没有良好的一致性.
结论: MOMO预训练能在7个检测和分割任务上超过imagenet 监督预训练.
四 SimCLR(ICML2020)
A Simple Framework for Contrastive Learning of Visual Representations
code and pretrained models
- 数据增广很重要,自监督学习中数据增广比监督学习收益更多。
- 在representation和contrasive loss之间添加非线性变换能强化representation;
- 与监督学习相比,contrasive learning能从更大batch和更多训练epoch中收益更多。与监督学习一样,更深和更宽的网络都能带来好处。
五 MOCO V2
Improved Baselines with Momentum Contrastive Learning
在MOCO的基础上添加了SimCLR的两个组件:(1)MLP projection head;(2)more data
augmentation——>在不用大batchsize的前提下,结果比SimCLR更好。
六 SimCLR V2
Big Self-Supervised Models are Strong Semi-Supervised Learners
- 有少量标注样本和大量无标签样本的前提下,进行深度学习的一个范式是:先进行无监督预训练,再进行有监督的finetune。我们的一个关键点是在预训练和finetune阶段使用一个超大的模型,带标签的数据越少,越能从一个超大模型中获益。finetune之后,超大模型可以采用无标签数据将学到的知识蒸馏到一个小模型上,精度损失极小。提出的算法包括三步:采用SimCLRV2无监督预训练一个超大的ResNet;在少量带标签的数据上进行finetune;采用无标签数据进行知识蒸馏以将任务相关的知识迁移到小模型上。——》采用ResNet50以及10%的标签数据训练,在imagenet上达到77.5%的top1 accuracy,超过采用所有标签数据进行监督训练(76.6%)。
- 主要发现
(1)对于半监督学习,标签越少,大模型的优势越大,即便有过拟合的风险;
(2)大模型对于学习通用represntations非常重要,但是对于特定的任务不需要这么大的模型容量,因此,其任务相关的知识能通过蒸馏迁移到小模型;
(3)更深的非线性变化不仅能提高linear evaluation的准确率,还能提高finetune的准确率(从非线性变换的中间层进行finetune)。 - SimCLR V2相对SimCLR主要改进
(1)使用了更大的网络:ResNet-152 (3×+SK);
(2)增加非线性网络的容量(3层的MLP),并且从非线性网络的中间层进行finetune,这一点对于标签极少(1%标签数据)的情况有帮助。
(3)采用了MOCO中的memory queue,由于该工作中batchsize较大,这点提神不显著。
七 SwAV(NIPS2020)
Unsupervised Learning of Visual Features by Contrasting Cluster Assignments
code and pretrained models
八 BYOL
Bootstrap Your Own Latent A New Approach to Self-Supervised Learning
code and pretrain model
九 Simsiam(CVPR2021)
Exploring Simple Siamese Representation Learning
code and pretrain models
simple Siamese网络能在不使用以下组件的前提下学习得到有意义的特征:
(1)负例pairs;(2)大batch size;(3)momentum encoder。
——stop-gradient 扮演很重要的角色。
simsiam ~ BYOL - momentum encoder.
simsiam ~ SimCLR - negtive pairs.(需要大batch size)
simsiam ~ SwAV - online cluster.(需要大batch size)
十 (Barlow Twins)
Barlow Twins: Self-Supervised Learning via Redundancy Reduction
code and pretrained models