一般做个网站多少钱/国家大事新闻近三天
文章目录
- 前言
- CPC v1介绍
- CPC v2介绍
- 实验
前言
这篇文章发表在ICML 2020上。
这篇文章对CPC v1进行了改进,在ImageNet上的top-1准确率从 48.7%提升至71.5%。
本文将简单介绍CPC v2,实验部分在此不总结。
论文的Figure 1给出了一个很有意思的图,如下图:
蓝线为利用CPC v1 pretrain一个ResNet,将其在ImageNet上finetune后的性能,红线为ResNet直接在ImageNet上training from scratch,横轴为finetune/train用到的训练数据,可以看到,随着训练数据的减少,training from scratch的模型性能下降尤为明显,并且当使用全部数据训练模型时,finetune的模型性能也比traning from scratch的效果好。这表明相比于training from scratch的模型,使用自监督pretrain的模型,利用更少的训练数据,就可以达到相似的性能,即将自监督训练好的模型,应用到下游任务时,可能只需要少量数据就可以达到不错的性能。
CPC v1介绍
上图是CPC v2的模型结构,为了方便说明,我把它放在了CPC v1一节中。
- 输入图像会被分成若干个overlapping的patch,Xi,jX_{i,j}Xi,j表示第iii行,第jjj列的patch
- 所有的patch都会经过一个特征提取器提取特征(对应蓝色的模型),得到一系列的特征向量Zi,jZ_{i,j}Zi,j
- 将位于第iii行第jjj列的特征向量Zi,jZ_{i,j}Zi,j,以及位于第iii行第jjj列上方的特征向量Zu,jZ_{u,j}Zu,j(u<iu<iu<i) concat在一起,经过一个Context network GϕG_{\phi}Gϕ(对应红色的模型)处理,得到一个context vector Ci,jC_{i,j}Ci,j
- 对Ci,jC_{i,j}Ci,j施加一个线性变化,线性变化矩阵为WkW_kWk,即Z^i+k,j=WkCi,j\hat Z_{i+k,j}=W_k C_{i,j}Z^i+k,j=WkCi,j,利用Z^i+k,j\hat Z_{i+k,j}Z^i+k,j与Zi+k,jZ_{i+k,j}Zi+k,j进行对比学习,可以简单理解为利用一张图像上半部分的特征,预测图像下半部分的特征
对比学习的损失函数为InfoNCE,如下:
负例ZlZ_lZl来自于其他batch的图像块,或是同一张图像的其他图像块。
个人观点:CPC v1的操作不难理解,以人为例,如果我们理解一只狗长什么样,那我们看到一张图像中狗的上半部分,自然能联想到图像下半部分狗的形状。想让InfoNCE损失函数下降,就必须建立图像中狗的上半部分与下半部分的联系,这些联系可能可以让模型理解狗长什么样,即狗具有什么特征。
CPC v2介绍
对于自监督而言,trick对性能的影响非常大,这点和之前研究的continual learning很不一样。
相比于CPC v1,CPC v2引入了更多trick,具体而言
- 使用更大的模型,CPC v1只使用了ResNet-101中的前三个residual stack,CPC v2将模型加深为ResNet-161(ImageNet top-1准确率提升5%),同时提高了输入图像块的分辨率(从60x60变为80x80,ImageNet top-1准确率提升2%)。
- 由于CPC v1的预测只和若干个patch有关,而BN会引入其他patch的信息,类似于图像生成,BN算法会损害CPC v1的性能,作者利用层归一化替换BN,ImageNet top-1准确率提升2%。
- 由于大模型更容易过拟合,作者提升了自监督任务的难度,预测一个patch,CPC v2用到了上下左右四个方向的feature vector,而CPC v1只用到了上方的feature vector。由于CPC v2接触的语义信息更多,提取出与下方patch相关的语义信息的难度也会增大。ImageNet top-1准确率提升2.5%。
- 使用更好的数据增强,首先随机取出rgb三通道中的两个通道,ImageNet top-1准确率提升3%,接着施加一些几何、颜色、弹性变形等数据增强,ImageNet top-1准确率提升4.5%,可见数据增强对自监督影响很大。
上述trick对CPC v1的影响如下图
实验
实验部分不做过多总结,这里给出比较有趣的部分。
ResNet200用有监督pretrain模型,接着接入线性分类器finetune,ResNet33用CPC v2 pretrain模型,接着接入线性分类器finetune(此时特征提取器也会finetune,而不是冻结)。
从上表可以看到,使用CPC v2 pretrain好的ResNet33,在数据量较少时,性能比ResNet200要好,即使使用全部训练数据,效果依然更好,而且注意到ResNet33模型容量是不如ResNet200的。可以看到,自监督的潜力很大。