导言
迁移学习在CV任务的作用已经广为人知。其一般会使用预训练的深度卷积网络来解决新任务。这些网络在大规模标注数据集,如ImageNet中监督训练好。它们的提取的特征能很好适应新任务。
但是当训练数据缺少标注时,我们通常会使用预训练网络的权重,然后给网络加上新的分类层,然后重新训练网络。这个技巧被称为迁移学习。使用预训练模型的权重来做新任务,模型的学习速度会加快,并且比从零开始训练的模型要更准确。
但是这种迁移学习方法依赖于监督训练的模型。这些标注数据并不易得。但我们仔想想想无监督样本是充足的。因此使用无监督数据来学习特征表来学习更好的监督模型是很有意义的。实际上,这是个很早就存在的问题,最近研究发现无监督表示学习方法能渐渐赶上了监督学习的方法效果。其中对比学习就是一个典型的例子。
对比学习的目标是让相似样本产生相同的表示,不相似的样本产生不同的表示。对比学习的核心是噪声对比估计损失(Noise Contrastive Estimator (NCE) loss),其其表示如下:
其中x+是输入x的相似点,(x,x+)又可称为正对。通常x+由x变换得来,如图像裁剪,旋转变换或其他的数据增广手段。反之,x-则是x的不相似样本,则有负对(x,x-),NCE loss会使得负对与正对区别开。一般对于每组正对,都会有K组负对。负对的数目对对比学习效果影响很大。
sim(.)代表相似度度量。通常其使用内积或余弦相似度。g(.)是一个卷积神经网络。有的对比学习会用siamese网络。
A Simple Framework for Contrastive Learning of Visual Representations - SimCLR
SimCLR基于上述的对比框架。SimCLR的思想是统一同一图片的两种增广版本的表示。在训练中,每个样本i与batch里其他样本j构成pair对。不会与自身或变换的自身样本组成负对。因此就得到2*(N-1)个负对。这种方式使得SimCLR不像PIRL和MOCO那样需要额外的存储负对样本。
SimCLR使用ResNet-50作为主要的卷积提取器,接受图像输入后得到嵌入向量h,然后使用给MLP(relu激活函数)输出z=g(h)。对比损失在z上计算。当训练结束,丢弃g,直接使用h在做其它任务。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。