SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记

SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记

1 ABSTRACT

SimCLR: 用于视觉表征的对比学习框架,简化了最近提出的对比自我监督学习算法,无需专门的架构或存储库。

  • 理论贡献:

    • 组合数据増广在定义有效的预测任务中有重要作用
    • 在视觉表征和对比损失之间引入可学习的非线性转换,可以改善所学习表征的质量
    • 与监督学习相比,对比学习得益于更大的批量和更多的训练轮数
  • 实验证明:

    • 通过结合这些发现,我们能够大大胜过ImageNet上用于自我监督和半监督学习的先前方法。 由SimCLR学习的经过自我监督表示训练的线性分类器达到了76.5%的top-1准确性,与以前的最新技术相比,相对改进了7%,与监督的ResNet-50的性能相匹配。 当仅对1%的标签进行微调时,我们可以达到85.8%的top-5精度,而AlexNet的标签数量要少100倍。

2 METHOD

2.1 SimCLR 框架解读

  • 符号解释

    • x,xi,xj:输入图片、分别经过两种不同数据増广方式得到的图片
    • t,t’:从同类数据増广集合中随机选取的两种具体数据増广操作
    • T:同类(same family)数组増广操作的集合
    • f(·):编码器,文中使用 ResNet 实现,输出结果经过平均池化,记作 h
    • hi,hj:用于 downstream tasks 的视觉表征(representation)
    • g(·):投影网络(projection head),这个网络相对较小,会将图像编码结果 h 进一步投影为 z(projection),采用单隐层网络实现,激活函数是 ReLU
    • zi,zj:视觉表征投影后的投影向量(projection),后面作者发现在 z 上定义对比代价更有效
    • contrastive loss function:目的是在包含一个 positive pair(xi,xj) 的集合 {xk} 中,对给定的 xi 鉴别出与之对应的 xj
  • SimCLR 框架图

    • SimCLR 的基本思路: 对一张输入图片进行两种不同方式的数据増广,得到两张新的图片,然后我们把这两张图片作为一个 positive pair,通过编码器这个图片特征提取器,得到视觉表征 representation 记作 h,然后再通过一个投影网络投影为 z,最终构建的代价函数能够使 positive pair 对应的相似度很高。(下图1是原文中的流程图,图2是辅助理解的配图)
    • 原文概念图

    SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第1张图片

    • 辅助理解图

SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第2张图片

2.2 SimCLR 算法流程

为了引出 SimCLR 算法的具体流程,这里先对样本増广方式、相似度度量、代价函数进行具体解释。

  • 样本増广方式: 先取 N 个样本作为一个 minibatch,然后利用上述思路,对每个样本分别利用两种方式进行数据増广,因此会得到 2N 张图片。假定我们给定了一个样本 i,那么与其同时増广的样本 j 就与 i 构成了一个 positive pair。还是针对 i 而言,此时数据集中剩余的 2N-1 个样本都是暂时作为 negative example 而被比较的对象,因此对于一个样本 i,需要计算 2N-1 个相似度。
  • 相似度度量: 这里采用了余弦相似度,将图片的投影向量带入以下公式计算。

  • 代价函数: 先说符号,τ 是一个超参数,可以将相似度 sim(·) 的计算结果放大到 [-1,1] 区间以外,然后再代入 exp(·),这个过程也可以理解为在极化分类间距,将差异度放大;另外就是分母上的指示函数(indicator function),当 1[condition] 中的条件满足时,取值为1,否则为0。对于给定正样本 i 而言,其不需要和自己进行比较(否则分母的值会很大,而且本身也不必要),因此当 k=i 时,指数函数返回0,那么分母上其实只有 2N-1 项,就是其余待比较的样本们。
    • 注意1:对于一个 positive pair,要分别计算 li,jlj,i
    • 注意2:这种代价函数在对比学习中很常用,和 MoCo中的代价函数很类似,效果都是当 j 是 i 对应的 positive pair 时,分式部分值很大(但不会超过1,因此log值小于零),-log值很小,代价值很小。反之。

SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第3张图片

  • SimCLR 算法流程

    基于上述铺垫,这里应该就容易理解了,基本流程描述如下:

    • 对数据集中一个 minibatch 中的 N 个样本进行数据増广得到 N 个positive pair,共 2N 张图像及其隐变量 h,z
    • 将 2N 张图像,两两计算相似度,由于不需要计算自己和自己的相似度,这里共计算 2N(N-1) 个相似度
    • 计算 N 个 positive pair 的代价值,然后互换 i,j 的位置进行,共得到 2N 个代价值,然后线性组合作为整体的代价函数
    • 反向传播梯度,更新 f,g,最终目的是得到性能较好的编码器 f,g 存在仅仅是在训练 f 的过程中,因为最终是利用 f 输出的视觉表征执行 downstream task

SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第4张图片

  • 更多评价标准、网络训练细节请参看2.3 Evaluation Protocol

3 EXPERIMENTS

3.1 Data Augmentation for Contrastive Representation Learning

  • 数据増广方式组合的重要意义

    • 以下是常用的一些数据増广方式,在本文中作者仅采用了 random crop (with flip and resize),color distortion,Gaussian blur 这几种方式。

    SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第5张图片

    • 针对单一数据増广(流程图中一个之路増广,另一个恒等变化)和组合数据増广,作者进行了交叉实验

    SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第6张图片

    • 结果发现:color distortion 和 crop 组合的数据増广方式对模型训练效果作用很大。解释是,crop 本身裁剪了图像不同的 patch,增加了网络训练难度,但是一张图片的 crops 的颜色分布基本是近似的,因此在此基础之上再加一个 color distortion 的操作,能够改变不同 patch 的颜色分布,进一步增大训练难度,从而提升图片分类效果。(row:不同图像;col:不同crop的颜色分布曲线)

    SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第7张图片

  • Color distortion strength

    • Color distortion 是由 color jittering(色度变换) 和 color dropping(灰度化)两者的组合,而 color jittering 的占比记为 color distortion strength。结果发现,颜色増广对监督学习作用不大,但会使对比学习的效果增强。 这里的 AutoAug 是一种较为成熟的増广策略,是对照组。

SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第8张图片

3.2 Architectures for Encoder and Head

  • 随着模型尺寸的增大,非监督学习与监督学习的差距逐渐缩小。 无监督:蓝色点训练了100轮,红色点训练了1000轮;监督:绿色点训练了90轮。个人认为,虽然作者所言差距缩小,但是训练成本要高很多,并且一般也不会为了精度采用过大的模型,可以看出,增大网络尺寸带来的“边际收益”已经很小了,准确率增加缓慢。

SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第9张图片

  • 非线性投影(h->z)能提升视觉表征(representation)的质量。

    • 针对投影网络g(·)分别采用线性、非线性、恒等变换。可以看出非线性投影能提升学习效果,但是变换z的维度似乎对学习效果的提升没有多大影响。

    SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第10张图片

    • 采用隐层输出h用于下游任务的解释: 因为z=g(h),而对于一种图像对(原图ori vs 颜色变换后的ori、方向旋转后的ori)z具有相对不变性,因为是同源图像,因此z相比于h会丢失部分图像信息,所以要用投影前的h用于下游任务。下表中,如果采用g(h)即z进行下游预测任务,与Random guess无异(近似于瞎猜),而用h得到的预测准确率相对较高,这就从实验的角度证实了采用h的合理性。

SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第11张图片

3.3 Loss Functions and Batch Size

  • 本文采用的NT-Xent代价函数的合理性:

    • 对于NT-Xent和Margin Triplet,可以说明引入温度超参数 τ的正面作用;而对于NT-Xent和NT-Logistic这两种代价函数,其实都引入和温度超参数 τ,不同的是代价函数的构成形式,这里只能说明这种构成形式是有效的。

    SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第12张图片

    • 以下对比了三种代价函数的,尽管前两种采用了(semi-hard negative mining)的方式,线性评估的top-1准确率仍然不如NT-Xent代价函数的表现。

      SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第13张图片

  • 更大的 Batch size 和更多的迭代次数 epoch 能提升对比学习效果:因为批量大或者迭代次数多都可以增加模型遇到负样本的次数,见得负样本越多学的越好,学习效果自然好。但是随着迭代轮数增大,批量似乎也不是越大越好,基本上取在2048/4096是比较合适的。

    SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第14张图片

3.4 Comparison with State-of-the-art

  • 线性评估:在ImageNet上对不同的方法学习的representation进行线性分类的结果,SimCLR分类效果最优。

SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第15张图片

  • 半监督学习: SimCLR分类效果更优。

SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第16张图片

  • 迁移学习: SimCLR的分类效果与监督学习相当甚至更优。

SimCLR:A Simple Framework for Contrastive Learning of Visual Representations 论文笔记_第17张图片

参考链接

The Illustrated SimCLR Framework

图解SimCLR框架,用对比学习得到一个好的视觉预训练模型

关于Hinton团队无监督新作SimCLR的所思所想

你可能感兴趣的:(论文笔记备份,神经网络,机器学习,深度学习)