点击我爱计算机视觉标星,更快获取CVML新技术


本文原载于知乎,已或作者授权转载,禁止二次转载。

https://zhuanlan.zhihu.com/p/96748604

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

这里主要关注Unsupervised learning一类特定的方法:Self-supervised learning(自监督学习)。

自监督学习的思想非常简单,就是输入的是一堆无监督的数据,但是通过数据本身的结构或者特性,人为构造标签(pretext)出来。有了标签之后,就可以类似监督学习一样进行训练。

比较知名的工作有两个,一个是:Unsupervised Visual Representation Learning by Context Prediction (ICCV15),如图一,人为构造图片Patch相对位置预测任务,这篇论文可以看作是self-supervised这一系列方法的最早期paper之一;

另一个是:Unsupervised Representation Learning by Predicting Image Rotations (ICLR18),如图二,人为构造图片旋转角度预测任务,这篇论文因为想法极其简单在投稿到ICLR之后受到了极大关注,最终因为实验结果非常全面有效最终被录用。

图一. Patch相对位置预测

图二. 图片旋转角度预测

这里重点介绍最近的几篇self-supervised learning相关的paper。第一篇是RETHINKING DATA AUGMENTATION: SELF-SUPERVISION AND SELF-DISTILLATION。这篇论文的思想非常直观,如图三。

首先,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的方法,这里  是对应的分类器权重。

所以,作者提出的方法本身就包含了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。

之前的研究思路主要是设计各种各样的pretext任务,比如patch相对位置预测、旋转预测、灰度图片上色、视频帧排序等等。

CVPR19和ICCV19上,Google Brain的几个研究员发表了两篇论文,从另外的视角分析和研究self-supervised learning问题。

两篇paper名字分别是:Revisiting Self-Supervised Visual Representation Learning (CVPR19)和S^4L: Self-Supervised Semi-Supervised Learning (ICCV19) 。

Revisiting这篇paper研究了多种网络结构以及多种self-supervised的任务的组合,得到了一些启发性的经验结论:

  1. 与supervised learning不同的是,self-supervised learning在不同task上的结果依赖于网络结构的选择,比如对于rotation预测,RevNet50性能最好,但是对于Patch预测,ResNet50v1性能最好。

  2. 以前的self-supervised方法通常表明,alexnet的最后几层特征性能会下降。但是这篇paper结论是对于skip-connection(resnet)结构的网络,高层的特征性能并不会下降。

  3. 增加filter数目和特征大小,对于性能提升帮助很大。

  4. 衡量无监督性能最后训练的线性分类器非常依赖学习率的调整策略。

不同网络结构,在不同self-supervised任务上面表现各不相同

S^4L这一篇paper,非常像上面图(a)中multitask learning的策略,即有标签数据上面加一个正常的分类损失,无标签数据上加一个self-supervised的损失,具体公式如下:

.

作者提出了两个算法,一个是 S^4L-Rotation,即无监督损失是旋转预测任务;另一个是S^4L-Exemplar,即无监督损失是基于图像变换(裁切、镜像、颜色变换等)的triplet损失。

S^4L算法结构图

所有的实验在10%或者1%标签的Imagenet上进行,同时作者自己从训练集划分出一小部分作为验证集进行参数调节。实验过程中,作者观察到weight decay的调节和学习率策略对最终性能有很重要的影响。

比较有意思的是,Revisiting和S^4L的作者是同一拨人,只是作者顺序不同,并且所有作者都是equal contribution。

自监督学习交流群

关注最新最前沿的自监督学习技术,扫码添加CV君拉你入群,(如已经为CV君其他账号好友请直接私信)

(请务必注明方向:自监督

喜欢在QQ交流的童鞋,可以加52CV官方QQ群:805388940。

(不会时时在线,如果没能及时通过验证还请见谅)


长按关注我爱计算机视觉

解读自监督学习(Self-Supervised Learning)几篇相关paper -相关推荐

  1. 解读自监督学习(Self-Supervised Learning)几篇相关paper

    作者:bingo 本文转载自知乎,作者bingo已授权,未经许可请勿二次转载. Supervised deep learning由于需要大量标注信息,同时之前大量的研究已经解决了许多问题.所以近期大家 ...

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

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

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

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

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

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

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

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

  6. 技术解读:腾讯优图12篇论文入选 ICCV 2017

    机器之心发布 来源:腾讯优图实验室 被誉为计算机视觉领域三大顶级会议之一的 ICCV(另外两个为 CVPR.ECCV)不久之前揭晓了收录论文名单,腾讯优图共有 12 篇论文入选,居业界实验室前列,其中 ...

  7. 机器学习-算法-半监督学习:半监督学习(Semi-supervised Learning)算法

    人工智能-机器学习-算法-半监督学习:半监督学习(Semi-supervised Learning)算法 一.半监督学习算法提出的背景 1.监督学习算法 2.无监督学习算法 3.监督学习的特征选择方法 ...

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

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

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

    自监督学习(Self-Supervised Learning)多篇论文解读(上) 前言 Supervised deep learning由于需要大量标注信息,同时之前大量的研究已经解决了许多问题.所以 ...

最新文章

  1. rabbitmq 集群数据存储与单点故障
  2. 09-LearnTheArchitecture-MemoryManagement
  3. 新 开通 自己 IT 博客
  4. java用mvvm,[Java教程]MVVM架构~使用boxy和knockoutjs实现编辑功能
  5. 【pyqt5学习】——tablewidget控件学习
  6. 2017(深圳) .NET技术分享交流会 第二期,将有网络直播
  7. 快速部署web项目上线云服务器
  8. php 安装mysql扩展注意事项
  9. 利用大数据构建用户画像的好处
  10. 自动化测试===Macaca环境搭建,自我总结
  11. 明解C语言【中级篇】
  12. 开源Android自定义思维导图控件ThinkMap树状图TreeView(类似xMind那种效果)
  13. 访问项目,页面打开太慢解决方式
  14. 天地图覆盖物的添加,工具类的使用
  15. 算法/最短路径/Bellman-Ford贝尔曼福特算法
  16. 笔记本实现Win10+Ubuntu双系统(超详细)
  17. 关于app store distribution出现的'armv7'与最小版本'3.0'不兼容的问题
  18. 云主机的优势有哪些?
  19. java 建议使用_不建议使用构造函数Date(...)。 这是什么意思? (Java)
  20. 《高级无线网络—4G技术》——1.4 绿色无线网络

热门文章

  1. SLF4J和Logback日志框架详解
  2. Spring框架 AOP
  3. 专业修改数据库服务器,专业修改数据库服务器
  4. python采用的编码是什么意思_深入浅出地,彻彻底底地理解Python中的编码
  5. python遗传算法_基于Python的遗传算法特征约简(附代码)
  6. python判断质数用for循环_Day3.Python判断与循环语句
  7. python简单小案例列表_python计算列表内各元素的个数实例
  8. python定义一个整数变量_python循环定义多个变量的实例分析
  9. matlab进行sg滤波,Matlab,SG滤波器
  10. python路径规划算法可视化_路径规划问题:DIJKSTRA算法 以及Python实现