当前位置:网站首页>深度学习(自监督:CPC v2)——Data-Efficient Image Recognition with Contrastive Predictive Coding
深度学习(自监督:CPC v2)——Data-Efficient Image Recognition with Contrastive Predictive Coding
2022-07-28 05:22:00 【菜到怀疑人生】
前言
这篇文章发表在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, X i , j X_{i,j} Xi,j表示第 i i i行,第 j j j列的patch
- 所有的patch都会经过一个特征提取器提取特征(对应蓝色的模型),得到一系列的特征向量 Z i , j Z_{i,j} Zi,j
- 将位于第 i i i行第 j j j列的特征向量 Z i , j Z_{i,j} Zi,j,以及位于第 i i i行第 j j j列上方的特征向量 Z u , j Z_{u,j} Zu,j( u < i u<i u<i) concat在一起,经过一个Context network G ϕ G_{\phi} Gϕ(对应红色的模型)处理,得到一个context vector C i , j C_{i,j} Ci,j
- 对 C i , j C_{i,j} Ci,j施加一个线性变化,线性变化矩阵为 W k W_k Wk,即 Z ^ i + k , j = W k C i , 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与 Z i + k , j Z_{i+k,j} Zi+k,j进行对比学习,可以简单理解为利用一张图像上半部分的特征,预测图像下半部分的特征
对比学习的损失函数为InfoNCE,如下:
负例 Z l Z_l Zl来自于其他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的。可以看到,自监督的潜力很大。
边栏推荐
- Marsnft: how do individuals distribute digital collections?
- Hit your face ins? Mars digital collection platform explores digital collection light social networking
- Mysql的两种覆盖表中重复记录的方法
- 小程序开发流程详细是什么呢?
- XShell突然间无法连接虚拟机
- 分布式集群架构场景优化解决方案:分布式调度问题
- Record the problems encountered in online capacity expansion server nochange: partition 1 is size 419428319. It cannot be grown
- 小程序开发解决零售业的焦虑
- KubeSphere安装版本问题
- On July 7, the national wind 24 solar terms "Xiaoshu" came!! Attachment.. cooperation.. completion.. advance.. report
猜你喜欢

微信小程序开发费用制作费用是多少?

Dataset class loads datasets in batches

Service reliability guarantee -watchdog

深度学习——Pay Attention to MLPs

Interface anti duplicate submission

【2】 Redis basic commands and usage scenarios

Manually create a simple RPC (< - < -)

使用神经网络实现对天气的预测

3: MySQL master-slave replication setup

How digital library realizes Web3.0 social networking
随机推荐
Micro service architecture cognition and service governance Eureka
raise RuntimeError(‘DataLoader worker (pid(s) {}) exited unexpectedly‘.format(pids_str))RuntimeErro
小程序商城制作一个需要多少钱?一般包括哪些费用?
Assembly packaging
将项目部署到GPU上,并且运行
小程序开发系统有哪些优点?为什么要选择它?
Notice of attack: [bean Bingbing] send, sell, cash, draw, prize, etc
flutter webivew input唤起相机相册
Mysql的两种覆盖表中重复记录的方法
UNL-类图
【7】 Consistency between redis cache and database data
Variables, process control and cursors
MySQL trigger
uView上传组件upload上传auto-upload模式图片压缩
【五】redis主从同步与Redis Sentinel(哨兵)
MySQL view, stored procedure and stored function
Quick look-up table to MD5
服务可靠性保障-watchdog
分布式集群架构场景化解决方案:集群时钟同步问题
Sqlalchemy usage related