A Simple Framework for Contrastive Learning of Visual Representations

Chen T., Kornblith S., Norouzi M., Hinton G. A Simple Framework for Contrastive Learning of Visual Representations. arXiv: Learning, 2020.

@article{chen2020a,
title={A Simple Framework for Contrastive Learning of Visual Representations},
author={Chen, Ting and Kornblith, Simon and Norouzi, Mohammad and Hinton, Geoffrey E},
journal={arXiv: Learning},
year={2020}}

SimCLR 主要是利用augmentation来生成正负样本对, 虽然没有花里胡哨的结构, 但是通过细致的tricks比之前的方法更为有效.

主要内容

在这里插入图片描述

流程

流程是很简单的, 假设有一个batch的样本 x x x, 然后从augmentation T \mathcal{T} T中随机选取俩个 t , t ′ t,t' t,t, 由此得到两批数据 x ~ i = t ( x ) , x ~ j = t ′ ( x ) \tilde{x}_i=t(x), \tilde{x}_j=t'(x) x~i=t(x),x~j=t(x), 经过第一个encoder得到特征表示 h i , h j h_i,h_j hi,hj, 再经由一个非线性变化 g g g得到 z i , z j z_i,z_j zi,zj(注意这一步是和以往方法不同的点), 再由 z i , z j z_i, z_j zi,zj生成正负样本对(对应同一个样本的俩个样本构成正样本对, 否则为负样本对).

在这里插入图片描述

接下来先介绍一些比较重要的特别的tricks, 再介绍别的.

projection head g

一般方法只有一个encoder f ( ⋅ ) f(\cdot) f(), SimCLR多了一个projection head g ( ⋅ ) g(\cdot) g(), 它把第一次提到的特征再进行一次过滤:
z i = g ( h i ) = W ( 2 ) σ ( W ( 1 ) h i ) , z_i = g(h_i)=W^{(2)} \sigma(W^{(1)}h_i), zi=g(hi)=W(2)σ(W(1)hi),
其中 σ \sigma σ为ReLU.

作者说, 这是为了过滤到由augmentation带来的额外的可分性, 让区分特征 z z z变得更为困难从而学习到更好的特征 h h h.
注: 用于下游任务的特征是 h h h而非 z z z!

在这里插入图片描述

上表是将特征 h h h或者 z z z用于一个二分类任务, 区分输入是否经过了特定的augmentation, 结果显示 h h h能够更好的分类, 意味着 h h h z z z含有更多的augmentation的信息.

constractive loss

ℓ i j = − log ⁡ exp ⁡ ( s i m ( z i , z j ) / τ ) ∑ k ≠ i exp ⁡ ( s i m ( z i , z k ) / τ ) , (1) \tag{1} \ell_{ij}=-\log \frac{\exp(\mathrm{sim}(z_i,z_j)/\tau)}{\sum_{k\not=i} \exp(\mathrm{sim}(z_i,z_k)/\tau)}, ij=logk=iexp(sim(zi,zk)/τ)exp(sim(zi,zj)/τ),(1)
其中 s i m ( u , v ) = u T v / ∥ u ∥ ∥ v ∥ \mathrm{sim}(u,v)=u^Tv/\|u\|\|v\| sim(u,v)=uTv/uv.

实验显示这个损失比别的都好用.
在这里插入图片描述

augmentation

在这里插入图片描述

SimCLR中augmentation是很重要的构造正负样本对的配件, 经过消融实验发现, 最有效的的是crop和color distortion.

在这里插入图片描述

另外, 实验还显示, 监督学习比起对比学习来讲, 对augmentation的依赖程度很低, 甚至可以说是不依赖.

other

  1. 大的模型充当encoder效果更好;
  2. 大的batch size 和 更多的 training epoches有助于学习到更好的特征表示;

代码

原文代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值