自监督学习(Self-Supervised Learning)多篇论文解读(上)

前言

Supervised deep learning由于需要大量标注信息,同时之前大量的研究已经解决了许多问题。所以近期大家的研究关注点逐渐转向了Unsupervised learning,许多顶会包括ICML, NeurIPS, CVPR, ICCV相继出现一些不错的paper和研究工作。

这里主要关注Unsupervised learning一类特定的方法:Self-supervised learning(自监督学习)。自监督学习的思想非常简单,就是输入的是一堆无监督的数据,但是通过数据本身的结构或者特性,人为构造标签(pretext)出来。有了标签之后,就可以类似监督学习一样进行训练。

今年(2020) Self Supervised Learning (SSL) 的研究来到了新的高峰。

不仅在AAAI 上 LeCun, Bengio 与 Hinton 都对这领域寄与厚望;最近发表的文章也显示 SSL 得到的模型表现在 ImageNet dataset 上逐渐逼近了传统 Supervised
Learning 的表现了。

近年ResNet-50在ImageNet 上的表现

比较知名的工作有两个,一个是:Unsupervised Visual Representation Learning by Context Prediction (ICCV15),如图一,人为构造图片Patch相对位置预测任务,这篇论文可以看作是self-supervised这一系列方法的最早期paper之一;另一个是:Unsupervised Representation Learning by Predicting Image Rotations (ICLR18),如图二,人为构造图片旋转角度预测任务,这篇论文因为想法极其简单在投稿到ICLR之后受到了极大关注,最终因为实验结果非常全面有效最终被录用。

在实际应用中(例如业界中已经部署的模型), Self Supervised Learning 未必能直接有效的提升 Performance ,但阅读这些文章还是能得到不少启发。例如我们能对以下 Supervised Learning 问题有更多想法:

·
如果将 Deep Network 学习到有用的信息,人工标记 (Manual-Label) 是必要的吗?

·
数据( Data) 本身带有的信息是否比标记 (Label) 更加丰富?

·
我们能将每张图视为一个类别(Class);甚至每一个 Pixel 都视为一个类别吗?

以上问题可能有点天马行空,如果在实际应用上我们能思考:

·
在Representation Learning 中,如何能等价的增大 Batch Size?如何能维持 Embedding Space 的稳定性?

·
在Deep Network 一定是最后一层具有最丰富的 Representation 吗?

·
听说Deep Network 的Capacity 很强大 ,但时至今日,我们是否已经达到 Model 能负荷的上限?(例如ResNet-50有 24M 个参数,号称拥有 ‘大数据’ 的人们,是否已经触碰到
Effective Upper-Bound of ResNet-50’s Model Complexity?)

·
如果Model Complexity 远超乎我们想象,那什么样的 Training Procedure 能最有效率的将信息储存于Deep Network中?

·
Data Augmentation是学习 Deep Learning 一定会接触到的方法,它只是一个方便 Training 的 Trick 呢?还是他对 Network 有特殊意义?

这些问题目前没人能给出确切答案,但在接下来的文章中必然能带来更多想法与启发。

Before SSL Revolution:Pretext Task

早期在探索SSL的想法相对单纯,如果没有得到 Label ,就利用 Rule-Based 的方法生成一些 Label 。比较著名的方法为

·
Rotation

·
Jigsaw Puzzle

·
Colorization

"Unsupervised Representation Learning by Predicting Image Rotations"一文中提出 Rotation 可谓是 SSL 之滥觞。将给定的 Image 旋转固定的0, 90, 180, 270 四种角度,让 Network 预测看到的图是原图被转了几度后的结果。

这里重点介绍最近的几篇self-supervised learning相关的paper。第一篇是RETHINKING DATA AUGMENTATION:
SELF-SUPERVISION AND SELF-DISTILLATION。

论文地址:https://arxiv.org/pdf/1910.05872.pdf

这篇论文的思想非常直观,如图所示。首先,Data Augmentation相关的方法会对通过对原始图片进行一些变换(颜色、旋转、裁切等)来扩充原始训练集合,提高模型泛化能力;Multi-task learning将正常分类任务和self-supervised learning的任务(比如旋转预测)放到一起进行学习。作者指出通过data augmentation或者multi-task learning等方法的学习强制特征具有一定的不变性,会使得学习更加困难,有可能带来性能降低。因此,作者提出将分类任务的类别和self-supervised learning的类别组合成更多类别(例如 (Cat, 0),(Cat,90)等),用一个损失函数进行学习。

比较有意思的一点是,作者通过简单变换证明:如果
,论文方法就退化成Data
Augmentation;如果 ,论文方法就退化成Multi-task
Learning的方法,这里 u,v,w是对应的分类器权重。所以,作者提出的方法本身就包含了Data Augmentation和Mult-task Learning方法,同时具有更大的使用范围。

在实际物体分类过程中,可以将不同旋转角度的分类结果进行加和,即: p(Cat) = p(Cat,0)+p(Cat,90) +p(Cat,180)+p(Cat,270),但是这样测试时间会变成原来的4倍。所以,作者提出了第二个模块,self-distillation(自蒸馏),distillation思想最早是hinton在nips14年提出来的。如下图,self-distillation思路是在学习的过程中限制不同旋转角度的平均特征表示和原始图片的特征表示尽可能接近,这里使用KL散度作为相似性度量。

最终,整个方法的优化目标如下:

第一项和第二项分别对应图(a)和图(b),第三项是正常的分类交叉熵损失,作为一个辅助loss。

Unsupervised Representation Learning by Predicting Image
Rotations

https://arxiv.org/pdf/1803.07728.pdf

预测旋转角度挺没意思的,但是如果Training Data 是整个 ImageNet 时,这样的任务就变成相当有趣了。Network 必须了解了什么是对象后,才能了解旋转。这也贯策了 SSL 的基本想法:Knowledge Before Task.

Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles

https://arxiv.org/abs/1603.09246

后来的Jigsaw与
Colorization 基本上延续了这种探索 Image 本质的想法,设计出能帮助理解 Content 的辅助任务,因此这类方法统称为 Pretext Task (委托任务)。其中Colorization 这个方法,能延伸出 Tracking 的效果,着实让人震惊。

Huge Improvement:Contrastive Learning

“Data-Centric” Loss

另一派做法是从设计Loss Function 下手,找出能探索数据本身性质的 Loss。

其中Energy-Based Model 算是 LeCun 从以前到现在不断推广的,这种模型与具有强烈的物理意义,可能会是明日之星;而这篇文章整理的是另一种以 Mutual Information 为主的 Loss Function。

AutoRegressive Model

说到理解数据,最直观的机率模型就是建立Data Likelihood,而在Computer Vision 的领域中,最强大的莫过于 PixelCNN 这种 Pixel-by-Pixel 的建模方法了。使用Chain Rule,Network 能够完整 Encode 所有信息。

Conditional Image Generation with PixelCNN Decoders

https://papers.nips.cc/paper/6527-conditional-image-generation-with-pixelcnn-decoders.pdf

但是Representation Learning 在乎的并不是整个Data Distribution; 而是怎么得到更抽象、High-level 的表示法。End-to-End Training 让人们发现,Deep Neural
Network 是有能力解构数据的 Hierarchical Internal Representation 的,何不利用这种强大的能力呢?

也就是Learn the dataset, not the data points.

InfoNCE

DeepMind在2017 年(https://arxiv.org/abs/1807.03748)提出一种基于Mutual Information修改 AutoRegrssive 的 Loss Function,称为 InfoNCE 。

https://arxiv.org/abs/1807.03748

从图上说明是相当直观的,模型基于看过的Data 提取 Context (也就是 Feature) 并且对未来做预测。并且Loss Function的目标是让 Data 和 Context 的 Mutual Information 越大越好。

Mutual Information是广义上的 Correlation Function。(当我们完全不了解系统的Dynamics 或更深入的行为时,Mutual Information 依旧能作为估算) 它量化了我们能从 Context
中得到多少 Data 的信息,称为 Data 与 Context 之间的 Mutual Information。

首先,为了最大化Mutual Information 让 Network Model Distribution Ratio (而不像generative model 是单纯model distribution);并且用简单的 Linear Map 作为从 Context 到Future Data 的预测函数。

InfoNCE写法如下。其实他与常用的 Cross Entropy Loss 并没有太大区别,差异只在于这个 Loss 并不是用于分类,而是注重在对数据的本身做预测。如果用先前 Time Series 的例子就是预测未来。

Learning Deep Representations of Fine-grained Visual Descriptions

我们把所唯一正确的预测称为Positive Sample; 其它的预测通通为 Negative Samples。文章接下来都使用 Contrastive Loss 来表示这种Training 方法。

另外InfoNCE有一个Weak Lower-Bound 在描述 N 的重要,也就是越多的 Negative Samples 时,Loss Function 越能控制 Mutual Information,并且是以 Log 的方式 Scale (这给了 Metric Learning 一点 Hint, Batch Size 可能随着 log scale)。

CPC:Contrastive Predictive

第一个成功在Image Classification实践出 InfoNCE 的是 CPC 这篇文章 (基本上是 DeepMind 同一个 team 的作品)。很直观的利用在图片上裁切 Patch的方式,做出 Positive & Negative samples,实现 Contrastive Loss 。

Data-Efficient Image Recognition with Contrastive Predictive

https://arxiv.org/abs/1905.09272

这边用到了三个Network,分别是 feature extractor, context prediction 跟 downstream task network。这是因问 SSL 的 evaluation 方式不同的关系,这边简单说明一下。

SSL训练出来的模型基本上不能直接使用,通常只能作为很强的 Pretrained Model。因此要评估Pretrained Model 好坏通常做 Linear Evaluation ,Fine-tune 一个 Linear Classifier 看能达到多少的准确度(为了公平,通常这个
classifier 会用 grid search 得到)。

研究后来发现, SSL Pretrained Model 不仅得到 Linear Separable 的 Feature Space; 并且这些 Feature是很丰富的,因为只需要少量的 Data 就可以达到很好的效果,这称为 Efficient Classification Evaluation。像常常会测试,拿ImageNet (有 1000类一千四百万张图片) 1% 的资料量(也就是每个类别 Randomly choose 12 张图片)
来训练。这种Evaluation 凸显出 Feature 是能广泛描述各种类别的,因此只要取少少的 Samples 就可以达到效果。

第三种Evaluation 就是将 Pretrained Model 运用在各种Vision Task 上,例如拿到 Object Detection 或 Segmentation 任务上依旧能表现不错。

回到CPC 这篇文章,ResNet-50 Linear Protocol 能达到 Top-1 71.5% 的准确率;在 Efficient Classification Protocol上,能比原本 Supervised Learning 的方式省掉至少 50% ~ 80% 的资料(这边是参数更多的 ResNet)。意味着通过SSL Pretrained Model,我能够少一些人工标记一样能达到原本 Supervised Learning 的准确度。

What Important?

CPC带来巨大的好处,但什么事情是重要的?难道以后都需要将一张图切很多 Patch 来预测吗?并不尽然。

在CMC 这边文章中表明了,使用不同场景 (View Point, Depth,
Color Space) 来计算 Contrastive Loss 能达到非常好的效果,因此 Contrastive 本身 (也就是辨认 Positive &
Negative Sample 之间的 Consistency) 才是关键。

Contrastive Multiview

https://arxiv.org/abs/1906.05849

另外Google做了大规模的定性实验,找出了几个对 Visual Representation 最有影响的因子,因为篇幅关系就节录下列重点

·
Pretext Task不一定能在 Downstream Task 上達到好的效果

·
ResNet的 skip-connection能防止 feature quality 下降

·
增大Model Size 和增加Embedding Dimension 能有效提升 Performance


Revisiting Self-Supervised Visual Representation Learning

https://arxiv.org/abs/1901.09005

到目前为止基本上定调了SSL 的走向

  1. Contrastive Learning能从Data 中获得相当丰富的信息,不需要拘泥在 Patch 上

  2. 使用ResNet这种Backbone (而非早期 paper 强调VGG 能得到更好的 representation)

接下来的文章,都基于这样的前提来Improve 。

MoCo:Momentum Contrast

这篇 MoCo 是Kaiming He 在 FAIR (又是与 RGB 一起)第一次对 SSL 问题提出的文章。算是一个相当 Engineering的解法,来有效增加 Batch Size,提升 Performance。

自监督学习(Self-Supervised Learning)多篇论文解读(上)相关推荐

  1. 自监督学习(Self-Supervised Learning)多篇论文解读(下)

    自监督学习(Self-Supervised Learning)多篇论文解读(下) 之前的研究思路主要是设计各种各样的pretext任务,比如patch相对位置预测.旋转预测.灰度图片上色.视频帧排序等 ...

  2. 监督学习(supervised learning)与非监督学习(unsupervised learning)

    一,监督学习(supervised learning): 监督学习(supervised learning)的任务是学习一个模型,使模型能够对任意给定的输入,对其相应的输出做出一个好的预测. 即:利用 ...

  3. 弱监督学习 weakly supervised learning 笔记

    周志华 A Brief Introduction to Weakly Supervised Learning 2018 引言 在机器学习领域,学习任务可以划分为监督学习.非监督学习.通常,两者都需要从 ...

  4. 虚拟试鞋行业分析及首篇论文解读

    目录 项目背景 论文解读 摘要 引言 2.相关工作 2.1 2D姿态估计 2.2 6-DoF姿态估计

  5. 机器学习:什么是监督学习(Supervised learning)?

    概念 wiki:监督学习是机器学习的一种方法,可以由训练资料中学到或建立一个模式(函数/learning model),并且依次模式推测出新的实例. 训练资料:由输入物件和预期输出组成,函数的输出可以 ...

  6. 1-3.监督学习(supervised learning)

    定义:监督学习指的就是我们给学习算法一个数据集,这个数据集由"正确答案"组成,然后运用学习算法,算出更多的正确答案.术语叫做回归问题 [监督学习可分为]:回归问题.分类问题.两种 ...

  7. 进化计算在深度学习中的应用 | 附多篇论文解读

    随着当今计算能力的大幅度提升和大数据时代的到来,深度学习在帮助挖掘海量数据中蕴含的信息和完成一些人工智能任务中,展现出了非凡的能力.然而目前深度学习领域还有许多问题亟待解决,其中算法参数和结构的优化尤 ...

  8. AAAI 2020 提前看 | 三篇论文解读问答系统最新研究进展

    机器之心原创 作者:仵冀颖 编辑:H4O 2020 年 2 月 7 日至 12 日,AAAI 2020 将于美国纽约举办.今年 AAAI 共接受了 8800 篇提交论文,其中评审了 7737 篇,接收 ...

  9. 知识蒸馏首篇论文解读

    论文:Distilling the Knowledge in a Neural Network 目前的深度学习仍然处于"数据驱动"的阶段,通常在模型训练的时候,仍然需要从巨大且冗余 ...

最新文章

  1. 前景背景分割——ostu算法的原理及实现 OpenCV (八)
  2. 初学者如何开发出一个高质量的J2EE系统
  3. 《算法竞赛进阶指南》打卡-基本算法-AcWing 102. 最佳牛围栏:浮点数二分、前缀和、双指针
  4. HBNIS-crypto
  5. python语言程序设计试卷西京学院_Python语言程序设计A-中国大学mooc-试题题目及答案...
  6. 九毛九集团java_JAVA数组课后作业
  7. ioc,di,aop详解
  8. 接收 go run main.go 后面的参数_厦门油泥水三相离心分离机功能和参数
  9. 产品经理 需求 项目经理 选择_【产品】产品和项目,产品经理和项目经理 区别...
  10. ghost系统之优劣?
  11. 关于jxbrowser-7.19
  12. android 校验手机号码,检查Android中的有效手机号码
  13. Windows 10正式版官方原版ISO镜像下载汇总!!!
  14. Citrix PVS架构和工作原理
  15. 派生类的构造函数xu(c++)
  16. 第十届蓝桥杯(国赛)——拼接
  17. 人工智能中的术语及缩略语
  18. 星起航:在内容为王的时代电商拥抱短视频势不可挡
  19. 百度网盘怎么用迅雷下载文件?
  20. Shell脚本编程--cut命令

热门文章

  1. 寻找一个字符串的重复子串 后缀数组
  2. 【SpringMVC】概述
  3. JS 添加网页桌面快捷方式的代码
  4. mapreduce理解_大数据
  5. javaSE8的流库总结
  6. 线程的状态、调度、同步
  7. 详解Spring中Bean的自动装配~
  8. Yolo v4, v3 and v2 性能极简图示
  9. 为x86 CPU自动调度神经网络
  10. window 10 系统 部分软件打开图标的修改