深度学习(自监督:SimCLR)——A Simple Framework for Contrastive Learning of Visual Representations

前言

该文章是Hinton和Google发表在2020 ICML上的一篇自监督文章。

代码地址: https://github.com/google-research/simclr

其实看文章的时候就闻到味了,一定是Google家的作品,实验数据非常详细,替我们探索了对比学习所具有的一些特性。

本文将对SimCLR做一个简述,并且简单记录其中比较有意思的实验。


SimCLR简述

在这里插入图片描述
上图为SimCLR的模型结构,具体流程为

  • 对一个输入图像 x x x施加两种不同的数据增强,得到两张图片 x i ~ \tilde{x_i} xi~ x j ~ \tilde{x_j} xj~
  • 将两张图片输入到一个CNN网络 f ( x ) f(x) f(x)提取特征,得到 h i h_i hi h j h_j hj两个feature vector
  • 两个feature vector经过一个MLP网络 g ( x ) g(x) g(x)处理,得到 z i z_i zi z j z_j zj

假设batch size大小为 N N N,经过数据增强,可以得到 2 N 2N 2N张图像,SimCLR在对比学习时,需要正负例。

对图片 x x x施加两种不同的数据增强,得到 x i ~ \tilde{x_i} xi~ x j ~ \tilde{x_j} xj~,经过CNN、MLP处理后得到 z i z_i zi z j z_j zj z i z_i zi z j z_j zj构成一个正例对, z i z_i zi与batch size中其他图像(包括数据增强后的图像)的feature vector组成负例对,因此一张图片将存在1个正例对, 2 N − 2 2N-2 2N2个负例对一张图片的损失函数为
在这里插入图片描述
s i m ( z i , z j ) sim(z_i,z_j) sim(zi,zj)表示计算两个向量的余弦相似度, T T T为超参数, 2 N 2N 2N张图像的损失函数之和求平均,得到最终的损失函数,其实就是在进行 2 N − 1 2N-1 2N1的分类

算法伪代码
在这里插入图片描述

实验

实验部分有很多有价值的部分,本篇论文探究了一些trick对SimCLR的影响,并给出了一些结论

除非特别提及,本节的所有实验结果都是使用SimCLR在ImageNet1000上预训练一个ResNet-50,接着freeze特征提取器,接入一个线性分类器进行训练,训练完毕后模型在ImageNet1000测试集上的准确率。


数据增强对性能的影响

在这里插入图片描述
上图的含义请见英文,主要可以得出三个结论

  • 单独使用一种数据增强,对比学习的效果会很差
  • random cropping与random color distortion进行组合效果最好
  • 数据增强对对比学习的影响非常明显,这不是一个好的性质,很多时候我们需要进行穷举试错

Unsupervised contrastive learning benefits (more) from bigger models

在这里插入图片描述
上图给出了图像加宽和加深对模型性能的影响,R18(2x)表示ResNet18加宽两倍,其他符号以此类推。

观察上图,个人有以下结论

  • 增大模型容量时,首先考虑加深,ResNet152的性能与ResNet18高不少,并且参数量没有上升特别多,加深网络是实践时的首选
  • 深度足够,再来考虑宽度,此时参数量会暴涨,可能训练速度会慢不少,加宽网络是实践时的次优选

A nonlinear projection head improves the representation quality of the layer before it

在这里插入图片描述
上图探究了 z z z的维度对模型线性分类性能的影响, z z z的含义见SimCLR简述一节,可见 z z z的维度对模型性能影响不大,并且非线性MLP性能要优于线性MLP,这点在MoCo v2中也得到了验证。

SimCLR中可以用于线性分类的特征有两个,一是特征提取器的输出 h h h,二是MLP层的输出 g ( h ) g(h) g(h)(两者含义见SimCLR简述一节),在线性分类中,使用 h h h的性能要优于 g ( h ) g(h) g(h)(大于10%),可能是因为MLP过滤掉了一些有用的信息


Contrastive learning benefits (more) from larger batch sizes and longer training

在这里插入图片描述
上图可以得出的结论有两个,对于使用负例的对比学习算法而言

  • batch size越大,效果越好,并且提升显著,但是对于只使用正例的对比学习算法而言(例如BYOL、simsiam),batch size大小对性能影响没有如此显著
  • 训练epoch越长,效果越好,这点对于只使用正例的对比学习算法而言也一样
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
监督对比学习是一种无监督学习方法,旨在通过将数据样本与其在相同任务下的变体进行比较来进行特征学习。其核心思想是将一个样本与自身的不同变体进行对比,以推动特征的区分度增加。 在自监督对比学习中,通常使用一种转换函数对输入样本进行变换,生成多个变体。这些变换可以是图像旋转、裁剪、亮度调整等,也可以是对文本数据进行掩码、重排等操作。对于每个输入样本及其变体,模型将利用一个对比损失函数来度量它们之间的相似性。 通过自监督对比学习,模型会学习到一组鲁棒的特征表示。这些特征不仅能够区分同一样本与其变体,还能够区分不同样本之间的差异。通过不同样本之间的对比学习,模型可以学习到更加丰富的语义信息,提高数据的表征能力。 自监督对比学习在计算机视觉和自然语言处理等领域得到了广泛的应用。例如,在图像领域,可以利用自监督对比学习来学习图像中的局部特征、形状和纹理等信息。而在自然语言处理领域,可以通过对文本进行掩码、重排等方式来进行自监督对比学习,以学习词语、句子和文档的语义表示。 自监督对比学习的窥探给了我们一个更好的方式,通过无监督学习方法来解决许多现实世界中的问题。它为我们提供了一种从大规模数据中学习有用表示的方式,提高了学习算法的效率和泛化性能。通过进一步的研究和发展,自监督对比学习注定将在更多的领域中发挥重要的作用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值