文 | 王珣@知乎
本文已获作者授权,禁止二次转载

从Kaiming的MoCo和Hinton组Chen Ting的SimCLR开始,自监督学习(SSL)成了计算机视觉的热潮显学。凡是大佬大组(Kaiming, VGG,MMLAB等),近两年都是搞了几个自监督方法的。从一开始的新奇兴奋地看着Arxiv上新发布的SSL方法(像MoCo, SwAV, BYOL, SimSiam等这些方法着实有趣),但是有一些相关的文章多少有些泛滥了,让人有些眼花缭乱。最近FAIR的一个工作,着实让我眼前一亮,觉得好有意思,颇为叹服。关键的是这个方法特别简单,应当可以称之为最简单的SSL。

论文题目:
Barlow Twins: Self-Supervised Learning via Redundancy Reduction

论文链接:
https://arxiv.org/abs/2103.03230.pdf

Arxiv访问慢的小伙伴也可以在 【夕小瑶的卖萌屋】订阅号后台回复关键词 【0324】 下载论文PDF~

藉此机会,我也自己梳理一下SSL在这不到两年的时间里的个人认为比较重要的认知变化的节点:从SimCLR,MoCo为起点,以这篇BarLow Twins为暂时的终点。从这个历史线上去看SSL的发展非常有趣:计算机视觉圈子对于SSL的认知在不断打脸的过程中不断深入。

1.首先是2020年初的SimCLR

这个文章的核心贡献有二:一是提供了使用google的丰富的计算资源和强大的工程能力,使用高达4096的mini-batch size,把SSL的效果推到了supervised方法差不多的效果(预训练模型做下游任务);二是细致地整理了一些对SSL效果提升很有用的tricks: 如更长的训练,多层MLP的projector以及更强的data augmentations。这些有用的trick在后来的SSL的论文中一直被沿用,是SSL发展的基石,而第一个点,则是指出了大batch-size出奇迹,为未来的论文指出了改进的路,或者树立了一个进击的靶子。

2.MoCo 共有两版本

原始版本是2019年末放出来的。在SimCLR出现后之后,又吸收SimCLR的几个SSL小技巧,改进出了V2版,但是整体方法的核心是没有变化的,V2仅仅是一个2页试验报告。相比于SimCLR大力出奇迹,恺明设计了一个巧妙的momentum encoder 和 dynamic queue 去获得大量的负样本。这里的momentum encoder 采用了动量更新机制,除了文章本身的分析,另一层的理解是:其实momentum encoder相当于是teacher, 而dynamic里是来自不同mini-batch的样本,所以teacher需要在时间维度上对于同一个样本的输出具有一致性,否则,要学习的encoder 也就是student,会没有一个稳定的学习目标,难以收敛;当然另一方面,teacher 也不能一直不变,如果teacher一直不变,student就是在向一个随机的teacher学习。综上,动量更新机制是一个相当好理解的选择。

阶段小结

抛开细节,SimCLR和MoCo的核心点,都是认为negatives(负样本) 非常重要,一定要有足够多的负样本,只不过实现方式略有不同。SimCLR 拿着TPU,直接把batch size搞到4096,一力降十会;恺明则是巧妙设计Momentum机制,避开了硬件工程的限制,做出了可以飞入寻常百姓家的MoCo。再次重申,这时候的认识,还是停留在需要大量的负样本,来提升SSL model的效果这个历史局限里。

3.BYOL 是Deep Mind 在2020年发布的工作

文章的核心点就是要破除负样本迷信 ,BYOL认为不使用负样本,照样可以训练出效果拔群的SSL model。但是如果直接抛弃负样本,只拉近正样本对的话,model 会容易陷入平凡解:对于任意样本,输出同样的embedding。为了在没有负样本的帮助下,解决这个问题。BYOL 在Projector之上,增加了一个新的模块,取名Predictor。整体可以理解为在MoCo的基础上,但是不再直接拉近正样本对(即同一个样本,不同增强后的输出)的距离,而是通过Predictor去学习online encoder 到 target encoder (即moco里的momentum encoder)的映射。另外,对target network梯度不会传递,即Stop-Gradient。(注:在MoCo中,momentum encoder也是没有梯度回传的,不过MoCo这么没有给momentum encoder回传梯度是因为queue里面的负样本来自过去的mini-batch,其计算图已经丢失,没有办法回传梯度,而如果只回传正样本对的梯度,会很不合理。而BYOL是只考虑正样本对,如果梯度对于online encoder 和 target encoder都回传,不存在这个不合理的点,因此,Stop-Gradient是BYOL的一个特别的设计。)

4.SimSiam 是在BYOL的再次做减法

这里在BYOL的基础上去除了momentum更新的target encoder, 直接让target encoder = online encoder。指出了predictor+stop-gradinent 是训练出强大SSL encoder的一个充分条件。

再次的阶段小结

在这个阶段,认识进展到了可以没有负样本的阶段,但是不使用负样本,模型就会有陷入平凡解的风险。为此,BYOL设计了predictor 模块,并为之配套了stop-gradient技巧;SimSiam通过大量的试验和控制变量,进一步做减法,去除了momentum update。让模型进一步变得简单。再次总结,就是predictor模块,避免了直接拉近正样本对,对于梯度的直接回传,让模型陷入平凡解。BYOL 和 SimSiam 在方法上都是很不错的,试验也做得很可信充分,可是对于方法的解释并没有那么深刻置信,可能要寻求一个扎实的解释也确实很难。可以参见(https://spaces.ac.cn/archives/7980),也是另一个角度的解释,颇为有趣合理。此时已经进入到了摆脱了负样本了,但是在不使用负样本的情况,要想成功训练好一个SSL model,需要引入新的trick: 即predictor+stop-gradient。这样子来看,难免有点像左手换右手的无用功,但是整体的技术认识是进步了很多的。

5.最后,终于到了这次的主角:Barlow Twins

在不考虑数据增强这种大家都有的trick的基础上, Barlow Twins 既没有使用负样本,没有动量更新,也没有predictor和stop gradient的奇妙操作。Twins 所做的是换了一种视角去学习表示,从embeddig本身出发,而不是从样本出发。优化目标是使得不同视角下的特征的相关矩阵接近恒等矩阵,即让不同的维度的特征尽量表示不同的信息,从而提升特征的表征能力。这种做法,和以前传统降维(如PCA)的方法是有共通之处的,甚至优化的目标可以说非常一致。

▲Barlow Twins 模型整体图














模型为




,其模型参数记为




对于




不同的视角






下的输入












,分别输出的特征






































, 其中



























那么Twins 方法和以上的基于正负样本对的所有方法的区别,不严格(抛去特征normalize,BN等操作来说)的来说,可以用一句话,或者说两个式子来概括。

过去的方法大多基于InfoNCE loss 或者类似的对比损失函数,其目的是为了是的样本相关阵接近恒等矩阵,即






























而Twins的目的是为了让特征相关阵接近恒等,即:






























对于对比损失类方法,比如SimCLR或MoCo需要很大的Batchsize或者用queue的方式去模拟很大的batchsize, 而Twins需要极大的特征维度(8192)。这种特性和以上两个公式是完全对应且对称的。一个需要大




,一个需要大




▲Barlow Twins 的核心在于提出了图中新的损失函数

总结

从历史线上来看,从SimCLR和MoCo说一定要有大量的负样本,到BYOL和SimSiam通过神奇操作(stop-grad+predictor)验证了负样本并非不可或缺,最终到了Twins切换了一直以来从对比学习去训练SSL的视角,转向从特征本身出发,推开了另一扇大门。对比而言,相比于最简单的裸InfoNCE,Twins仅仅是换了一个loss function (+大维度的特征)。不过,大的维度相比于增加batchsize的代价要小得多,就是多占一点的显存。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

这可能是最简单又有效的自监督学习方法了相关推荐

  1. 腾讯优图10篇AAAI论文解析,涉及数学速算批改、视频识别和语义分割 | 附下载...

    点击上方↑↑↑"视学算法"关注我 来源:公众号 量子位 授权转 AI顶会AAAI开幕在即,入选论文悉数披露. 今日介绍10篇论文,来自腾讯旗下视觉研发平台腾讯优图,涉及数学速算批改 ...

  2. AAAI 2020| 一文看尽腾讯优图10篇入选论文

    点击上方"深度学习技术前沿",选择"星标"公众号 资源干货,第一时间送达 人工智能领域的国际顶级会议AAAI 2020将于2月7日-2月12日在美国纽约举办.近 ...

  3. AAAI 2020 | 腾讯优图10篇论文入选,含速算识别、视频识别等主题

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自腾讯优图. 人工智能领域的国际顶级会议AAAI 2020将于2月7日-2月12日在美国纽约举办.近年来随着人工智能的兴起,AAAI每年举办的学 ...

  4. 【今日CV 计算机视觉论文速览 第118期】Tue, 21 May 2019

    今日CS.CV 计算机视觉论文速览 Tue, 21 May 2019 Totally 57 papers ?上期速览✈更多精彩请移步主页 Interesting: ?学习人像透视畸变消除问题, 提出了 ...

  5. 机器学习笔记——从手写数字识别开始

    文章目录 前言 关于这篇博客(预计八月下旬全部完成) 关于项目实现 监督学习 ANN全连接神经网络的实现 1.总述 2.初始化 3.传播及损失 4.反向传播 决策树以及随机森林的实现 1.总述 2.单 ...

  6. 【论文翻译_自监督知识蒸馏】Self-supervised Label Augmentation via Input Transformations

    通过输入转换实现自监督标签增强 Hankook Lee 1 Sung Ju Hwang 2 3 4 Jinwoo Shin 2 1,2020年. 摘要 自我监督学习,通过在给定输入信号的情况下构建人工 ...

  7. 性能超越图神经网络,将标签传递和简单模型结合实现SOTA

    译者 | 刘畅 出品 | AI科技大本营 头图 | CSDN付费下载自视觉中国 图神经网络(GNNs)是图学习中一种主流的技术.然而,对于GNN为什么在实际使用中很成功以及它们是否是优异性能所必需的技 ...

  8. ICCV2021 Oral SimROD:简单高效的数据增强!华为提出了一种简单的鲁棒目标检测自适应方法...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨小马 来源丨我爱计算机视觉 ▊ 写在前面 本文提出了一种简单有效的鲁棒目标检测无监督自适应方法( ...

  9. 曲线聚类_机器学习入门必读:6种简单实用算法及学习曲线、思维导图

    来源:大数据DT 本文约3500字,建议阅读7分钟 本文为你介绍掌握机器领域知识的学习曲线.技术栈以及常用框架. [ 导读 ] 大部分的机器学习算法主要用来解决两类问题--分类问题和回归问题.在本文当 ...

最新文章

  1. 4-1 ADO.NET简介
  2. 上传大文件,出现: 413 request Entity too Large错误的解决办法
  3. 你的微服务网关还只在用负载均衡吗?
  4. 使用LogKit进行日志操作
  5. eclipse再次导入已经逻辑删除的工程,IDE提示已存在,无法导入的解决办法
  6. Electron学习-创建一个程序
  7. [USACO1.2]回文平方数 Palindromic Squares
  8. oracle已经有了注释符再注释,关于oracle的注释位置
  9. Android 多选列表
  10. 【OpenCV】OpenCV函数精讲之 -- imwrite()函数
  11. mysql 过滤单引号_python实现mysql的单引号字符串过滤方法
  12. 闭包函数 use 改变外部变量
  13. Pytroch+DGL+模型设置相关总结
  14. ecplise反编译插件
  15. CSS进阶(2)—— width,height如此高深,难道你真懂得
  16. stata 空间杜宾模型_空间面板数据模型及Stata实现
  17. Graphpad prism8
  18. 动漫版宫心计:快看漫画VS动漫之家
  19. utc时间 单位换算_utc时间(utc时间转换北京时间)
  20. 数据库导入导出的几种方式

热门文章

  1. Tyvj 1176 火焰巨魔的惆怅
  2. 怎么在前台取的ViewBag中的值
  3. C# 6.0语法新特性体验(二)
  4. 简单的脚本控制面试题
  5. FarPoint Spread For .Net 4.0
  6. socket api中send()和recv()函数工作原理与要点
  7. Linux下如何安装软件
  8. 物联网是互联网发展的必然趋势吗?
  9. 不知道的,还以为是555牌香烟
  10. Android Camera调用流程