SimCLR框架解析


前言

对比学习来自于一个朴素的想法,想像一下我们找出最像猫的照片的过程
请添加图片描述
看一眼猫,对比找出哪个最类似,最后做出判断
在这里插入图片描述
通过这个简单思想的启发,有人提出了”对比学习“的概念
大佬们想把机器训练成可以识别相似与或者不相似的图片:
在这里插入图片描述

机器要怎么做才能学习?

  • 与目标相似/不相似的图片
    在这里插入图片描述

  • 图片的表示方式
    在这里插入图片描述

  • 能够判断两幅图片的相似程度
    在这里插入图片描述

simCLR 框架简介

Self-supervised learning implemented by contrastive learning
在这里插入图片描述
框架流程简介:

  • 输入一张图片(e.g. cat)
  • 对图片随机变换,生成两张增强的图片
  • 得到图片增强后的数据表示 x i , x j x_i, x_j xi,xj
  • 通过 encoder 得到 image representation h i , h j h_i, h_j hi,hj
  • 再通过non-linear全连接层的到数据的表示 z i , z j z_i, z_j zi,zj
  • 最终目标是最大化 z i , z j z_i, z_j zi,zj的相似度

simCLR的步骤

1. 准备数据集,假设有一个很多很多很多图片的数据集

在这里插入图片描述

2. 数据增强(Data augmentation)

  • 举个例子,从数据集中,分组,两张图片为一组(Batch size = 2)
    论文实现中,Batch size = 8192.
    在这里插入图片描述
  • 构造函数对图片进行“增强”,比如随机裁剪(crop),翻转(flip),颜色抖动(color jitter),调整灰度(grayscale)。

r a n d o m ( c r o p + f l i p + c o l o r j i t t e r + g r a y s c a l e ) random (crop + flip + color jitter + grayscale) random(crop+flip+colorjitter+grayscale)

效果如下:
在这里插入图片描述

3. 一个batch = 2图片组,增强后得到4张图片。

B a t c h   s i z e ∗ 2 Batch \ size * 2 Batch size2

效果如下:
在这里插入图片描述

4. 通过encoder得到图片表示

(Find image representation based on encoder)
在这里插入图片描述
读者可能好奇encoder是什么,论文用ResNet-50结构作为卷积网络encoder,得到一个1*2048的表示:
在这里插入图片描述

5. 映射图片(Projection Head)

上面我们得到图片的增强表示 h i , h j h_i, h_j hi,hj, 然后经过一系列非线性的Dense-Relu-Dense层,最后又把图片映射表示为 z i , z j z_i, z_j zi,zj.
在这里插入图片描述

6. 调试模型(tuning model)

别忘了我们上文batch size = 2, 也就是说, 最后生成了4个向量 z 1 , z 2 , z 3 , z 4 z_1, z_2, z_3, z_4 z1,z2,z3,z4. 接下来我们要计算图片经过一系列编码器,图片变换之后的的损失(loss)。

在这里插入图片描述

6.1 计算余弦相似度

原理很简单, c o s < x , y > = x ∗ y ∣ ∣ x ∣ ∣ ∗ ∣ ∣ y ∣ ∣ cos<x, y> = {\frac{x*y}{||x|| * ||y||}} cos<x,y>=xyxy
在这里插入图片描述
注意,这里的 τ \tau τ 是温度参数(temperature parameter),它可以适当放缩相似度的计算,可以让相似度不限于 [ − 1 , 1 ] [-1, 1] [1,1]。然后一个batch里面最后得到的4张图片, 两两相似度计算,得到下面的结果:
在这里插入图片描述

6.2 计算损失(loss calculation)

SimCLR使用了一种叫做 NT-Xent loss 的损失函数,全称 Normalised Temperature-Scaled Entropy Loss。该损失函数的原理是:

  • 把增强的图片对取出来:
    在这里插入图片描述
  • 用Softmax函数去得到图片pair的相似度, 比如:
    在这里插入图片描述
    第一张图片作为参考,计算另外三张图片,哪个最像?
    在这里插入图片描述
  • 计算损失函数 (Noise Contrastive Estimation(NCE) Loss)
    Softmatx取一个负log:
    在这里插入图片描述
    图片对调换一下,再算一次:
    在这里插入图片描述
    最后终于。。对所有的图片对(一个图片随机增强变换成的两个图片),取一个平均,得到损失值Loss。
    在这里插入图片描述
    依据这个Loss,encoder 和 projection head表示可以一步一步地变强。

Downstream tasks

通过上文地对比学习, SimCLR模型训练完成后,该模型可以用于迁移学习。这里主要用训练出地encoder来迁移学习。
在这里插入图片描述

结论

开拓自监督学习地领土,击败一众框架,性能SOTA(STATE-OF-THE-ART)。
在这里插入图片描述

References

  • 42
    点赞
  • 127
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值