一、写在前面
对比学习(Contrastive Learning)
对比学习是一种自监督学习方法,在无标签数据集上仍可以学习到较好的表征。
对比学习的主要思想就是相似的样本的向量距离要近,不相似的要远,以此获得数据的高阶信息。
自监督学习(Self-Supervised Learning)
Self-Supervised Learning,又称为自监督学习,我们知道一般机器学习分为有监督学习,无监督学习和强化学习。 而 Self-Supervised Learning 是无监督学习里面的一种,主要是希望能够学习到一种通用的特征表达用于下游任务 (Downstream Tasks)。
二、对比学习经典论文SimCLR
- Paper: A Simple Framework for Contrastive Learning of Visual Representations https://arxiv.org/pdf/2002.05709.pdf
- PPT: SimCLR: A Simple Framework for Contrastive
Learning of Visual Representations
(1)SimCLR预训练阶段(类比BERT预训练阶段)
- Data augmentation
- Encoding (x~i→zi,x~j→zj\tilde x_i \rightarrow z_i, \tilde x_j \rightarrow z_jx~i→zi,x~j→zj)
- Contrastive loss function
SimCLR用了一种叫做 NT-Xent loss (Normalized Temperature-Scaled Cross-Entropy Loss)的对比学习损失函数,也就是我们一般提到的对比学习里面的InfoNCE loss
(2)对下游任务Fine-tune阶段(类比BERT对下游任务微调)
- 输入图片xxx
- Encoding h=f(x)h=f(x)h=f(x)
- 将表征hhh,作为下游任务的输入
- 用少量标注数据微调模型
(3)下游任务预测阶段
SimCLR框架
SimCLR详细架构图
SimCLR的伪代码
计算每个Batch里面的所有Pair的损失之和取平均:
常见的数据增强方法
三、相关问题
问题1:SimCLR是有两个独立的Encoder网络吗?不是的,共享网络层参数
显然不是,SimCLR中不同view的图片用的是相同的网络 fff(共享网络参数),而不是f1,f2f_1, f_2f1,f2,这个在论文里也有说明。因此在预测阶段输入一张图片,经过网络fff,就可以得到图片的表征。
这种共享网络参数的思想是很常见的,比如BERT Mask任务的Softmax分类器(如下图所示)、Transformer的全连接层是所有位置共享的,ESMM双塔结构的底层网络是共享。想想也是,我们不可能给每个位置都初始化一个网络吧,这代价也太大了。
问题2:SimCLR预测阶段是怎么样的?
我们通过对比学习,巧妙地在没有任何标签的情况下训练好了 SimCLR 模型,使得其Encoder的输出可以像正常有监督训练的模型一样表示图片的Representation信息。所以接下来就是利用这些 Representation的时候了,也就是在下游任务上Fine-tune。一旦 SimCLR 模型在对比学习任务上得到训练,它就可以用于迁移学习,如 ImageNet 分类,如下图19所示。此时在下游任务上 Fine-tune 模型时需要labeled data,但是数据量可以很小了。
The hidden layer before the projection head is a better representation than the layer after.
zzz只是用来做contrastive learning的训练,而真正当我们使用feature来做下游任务时,还是选取nonlinear projection前的hhh特征。这是因为hhh的信息量是要比zzz的信息量要高的。
四、相关资料
- 🤩 视频:李沐 对比学习论文综述【论文精读】
- 对比学习(Contrastive Learning)中的损失函数
- https://keremturgutlu.github.io/self_supervised/10%20-%20simclr.html
- [论文笔记]——SimCLR(Google Brain)ICML2020
- https://ai.googleblog.com/2020/04/advancing-self-supervised-and-semi.html
- Self-Supervised Learning 超详细解读 (二):SimCLR系列(推荐阅读)
五、To Do