A Simple Framework for Contrastive Learning of Visual Representations
1. 论文摘要
提出了一个针对图像表征的基于contrastive learning 的简单框架。主要结论:(1) 数据增强的组成对定义有效的预测任务十分重要。(2) 通过在表征与contrastive loss 之间引入一个非线性变换对于学习的表征质量有很大提高。 (3)增大 batch size 和 训练步数对于contrastive learning 来说更有益处。(相比于有监督学习)。 效果:在ImageNet上大大优于以前的自监督和半监督学习方法。由SimCLR学习的基于自监督表示的线性分类器达到了76.5%的top-1精度,比现有技术提高了7%,与监督ResNet-50的性能相当。当只对1%的标签进行微调时,比AlexNet的标签少100倍的条件下,达到85.8%的前5位精度。
2. 模型架构与算法
学习表征的方式:通过contrastive loss, 最大化相同数据经过不同的数据增强方法的在隐空间的一致性表示。
基本思路: 随机采样一个batch;对batch里每张图像做两种增强,可以认为是两个view;让同一张图的不同view在latent space里靠近,不同图的view在latent space里远离,通过NT-Xent实现。
- 随机数据扩充模块
它将任意给定的数据实例随机地变换成同一实例的两个相关视图,将其视为一对正视图。应用三种简单的增强:随机裁剪,然后将大小调整回原始大小,随机颜色失真和随机高斯模糊。其中,随机裁剪和颜色失真的结合是获得良好性能的关键。 - 网络的base 编码器 f(·)
作为数据样例的特征提取器, 采用ResNet. h i = f ( x i ) = R e s N e t ( x i ) h_i=f(x_i)=ResNet(x_i) hi=f(xi)=ResNet(xi) - 网络的映射头 f(·)
- contrastive loss 方程
在给定数据集合 x k {x_k} xk 对于正例组合 x i x_i xi x j x_j xj ,给定 x i x_i xi, 在集合 k ≠ i k \neq i k=i 识别 x j x_j xj.
其中
s
i
m
(
u
,
v
)
=
u
T
v
/
∣
∣
u
∣
∣
∣
∣
v
∣
∣
sim(u,v) = u^Tv/||u|| ||v||
sim(u,v)=uTv/∣∣u∣∣∣∣v∣∣;
l
[
k
≠
i
]
∈
0
,
1
l_{[k\neq i]} \in {{0,1}}
l[k=i]∈0,1 当
k
≠
i
k\neq i
k=i 为1 否则为0.
训练完成后,下游任务只用到encoder f(·) 和 表征 h.
3. 主要结论
-
数据增强的组成对于学习良好的表征十分重要
单一的数据转换方式对于学习表征的效果一般,即使模型在contrastive 预测任务表现良好。
图像中的大多数面片具有相似的颜色分布。仅颜色直方图就足以区分图像。神经网络可以利用这一捷径来解决预测任务。因此,为了学习可概括的特征,在裁剪中加入颜色失真是非常重要的。 -
Encoder 和head 的结构
增大模型的size 对于有监督学习和在无监督学习基础上训练的线性分类器的预测效果都有提升,但是后者的提升更加明显。
加非线性映射层相比于不加映射层和线性映射层的效果更好。但是,映射层前的隐层状态表示要比之后的要好, 因为其保留了更多的转换信息。
其他的主要消融实验结论:
使用normalized cross entropy loss with adjustable temperature 的损失函数的效果更好,加入l2 norm 可能会使contrastive 的acc 降低,但是对表征的学习更好。
更大的batch_size 和训练时间效果更好。
关于MLP这层的加入原因,网上解释之一:可以学习出数据的非线性信息,是对上一步的一个增强。通过这一步的学习就可以得出同一类别数据的共同信息特点。