【ICML 2020对比学习论文解读】SimCLR: A Simple Framework for Contrastive Learning of Visual Representations

一、写在前面

对比学习(Contrastive Learning)

对比学习是一种自监督学习方法,在无标签数据集上仍可以学习到较好的表征。

对比学习的主要思想就是相似的样本的向量距离要近,不相似的要远,以此获得数据的高阶信息

自监督学习(Self-Supervised Learning)

Self-Supervised Learning,又称为自监督学习,我们知道一般机器学习分为有监督学习,无监督学习和强化学习。 而 Self-Supervised Learning 是无监督学习里面的一种,主要是希望能够学习到一种通用的特征表达用于下游任务 (Downstream Tasks)。

在这里插入图片描述

在这里插入图片描述

二、对比学习经典论文SimCLR

(1)SimCLR预训练阶段(类比BERT预训练阶段)

  1. Data augmentation
  2. Encoding ( x ~ i → z i , x ~ j → z j \tilde x_i \rightarrow z_i, \tilde x_j \rightarrow z_j x~izi,x~jzj)
  3. Contrastive loss function

SimCLR用了一种叫做 NT-Xent loss (Normalized Temperature-Scaled Cross-Entropy Loss)的对比学习损失函数,也就是我们一般提到的对比学习里面的InfoNCE loss
在这里插入图片描述

(2)对下游任务Fine-tune阶段(类比BERT对下游任务微调)

  1. 输入图片 x x x
  2. Encoding h = f ( x ) h=f(x) h=f(x)
  3. 将表征 h h h,作为下游任务的输入
  4. 用少量标注数据微调模型

(3)下游任务预测阶段

  • 使用微调好的模型进行下游任务预测

SimCLR框架

在这里插入图片描述
在这里插入图片描述

SimCLR详细架构图

在这里插入图片描述
在这里插入图片描述

SimCLR的伪代码

在这里插入图片描述

计算每个Batch里面的所有Pair的损失之和取平均:
在这里插入图片描述
在这里插入图片描述

常见的数据增强方法
在这里插入图片描述

三、相关问题

问题1:SimCLR是有两个独立的Encoder网络吗?不是的,共享网络层参数

显然不是,SimCLR中不同view的图片用的是相同的网络 f f f(共享网络参数),而不是 f 1 , f 2 f_1, f_2 f1,f2,这个在论文里也有说明。因此在预测阶段输入一张图片,经过网络 f f f,就可以得到图片的表征。

这种共享网络参数的思想是很常见的,比如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.

z z z只是用来做contrastive learning的训练,而真正当我们使用feature来做下游任务时,还是选取nonlinear projection前的 h h h特征。这是因为 h h h的信息量是要比 z z z的信息量要高的。

四、相关资料

在这里插入图片描述

五、To Do

  • SimCLR代码实现
  • 对比学习论文综述【论文精读】
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

捡起一束光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值