近年self-supervised learning最知名的两个方法是Google Brain的SimCLR与Facebook AI Research的MoCo,不过这两个方法都有各自缺陷:SimCLR需要够大的batch提供互斥的样本,而MoCo在内存中需要维护一个类似memory bank的过往纪录与额外的momentum encoder。

事实上SimCLR与MoCo的这些复杂的设计是为了提供训练时负样本,以避免contrasive learning的崩坏。2020年6月DeepMind团队提出了BYOL,用预测的概念拿掉了MoCo的过往纪录。而后同年11月,Facebook AI Research用交互的stop gradient在BYLO的基础上建立了更简洁的SimSiam。这两个方法在训练时都不需要特别提供负样本,让SSL的训练变得简单又强大,是今年 (2020年) 极度值得学习的方法。

Google Brain:SimCLR

Facebook AI:MoCo、Simsiam

DeepMind:BYOL

自适应迭代学习(对比自监督学习)(1)

阅读建议: 文章介绍今年 (2020年)的 self-supervised learning的方向,著重于简化训练部分。文章前段简单介绍 self-supervised learning与 contrastive learning的概念,并回顾两个使用负样本的代表性作品 SimCLR与 MoCo。后段介绍今年两个重要的简化方法 BYOL与 SimSiam。适合对于 SimCLR或相关负样本方法有概念的读者。 推荐背景知识: supervised learning, unsupervised learning, self-supervised learning, pre-training, data augmentation, image classification, SimCLR, MoCo.

近期的Self-Supervised Learning设计

Self-supervised learning (SSL) 其实算是近几年的新的热点名词,属于unsupervised learning的一种,训练时必须从数据本身设计某些不含目标任务标注且具可学习性的特征,以进行supervised learning。

事实上在自然语言处理领域,常见的word to vector的训练就是一种经由语句前后关系的SSL。而在计算机视觉领域,contrastive learning (CL、对比学习) 是近年实现SSL最热门的方法。像小孩子学习一样,透过比较猫狗的同类相同之处与异类不同之处,在即使式在不知道什麽是猫、什麽是狗的情况下 (甚至没有语言定义的情况),也可以学会分辨猫狗。

自适应迭代学习(对比自监督学习)(2)

Why contrastive learning collapse

SSL可以减少对于大量数据标注的依赖,这点与常见的supervised pretrain想法一致,两者都是在追求representation learning的实践,但SSL更强调于数据本身的丰富资讯,探索除了标注以外的更多可能性。

想像一个简单的contrastive learning的概念,输入x通过不同的transform得到x_i与x_j,通过某些参数的计算f(x)后得到representation h_i与h_j,最后通过projection到特定维度g(h)得到z_i与z_j,而训练的目标就是最大化z_i与z_j之间的相似度 (或简单想像为最小化两者的差距)。

自适应迭代学习(对比自监督学习)(3)

其实很直观的可以发现这样的CL设计有天生就会崩坏的问题,也就是不论是f(x)或是g(h),都可以透过将输出变成固定的数值,得到永远最大的相似度。这样的输出一般称为collapsing output。

维持Negative Sample的方法

为了避免所谓的collapsing output,通常会借助导入负样本,让学习目标不只是得到最大的相似度,同时也要与负样本有最小的相似度。这样的设计让输出定值不会是天然的minimun。近年Google Brain的SimCLR [1] 与Facebook AI Research的MoCo [3] 都是走这样的思路。

SimCLR

SimCLR是self-supervised learning与contrastive learning中重要的一个相当重要的里程碑,其最大的特点在于研究各种数据增强 (data augmentation) 作为SSL的归纳偏置 (inductive bias),并利用不同data间彼此的互斥强化学习目标,避免contrastive learning的output collapse。

整体运作概念分为三个阶段:

  • 先sample一些图片(batch of image)
  • 对batch裡的image做两种不同的data augmentation
  • 希望同一张影像、不同augmentation的结果相近,并互斥其他结果。
  • 如果要将SimCLR的架构划分阶段,大致可以分成两个阶段,首先是大个embedding网络执行特征抽取得到y,接下来使用一个小的网络投影到某个固定为度的空间得到z。

    自适应迭代学习(对比自监督学习)(4)

    这个小网络投影也是SimCLR的另一个特点。对于同一个x,用data augmentation得到不同的v,通过网络抽取、投影得到固定维度的特征,计算z的contrastive loss,直接用gradient decent同时训练两个阶段的网络。

    SimCLR的方法虽然简单,但是一个麻烦的点在于需要大量的online负样本提供斥力。在论文中使用了4096的batch size,还需要为了特别大的batch使用LARS作为optimizer。

    MoCo v2

    MoCo是Facebook AI Research (FAIR) 推出的SSL方法,也是Kaiming He这一两年的重点研究,整体运作的精华在于改善过往SSL常用的memory bank。原本memory bank是将过往看过sample的representation储存起来,在每次training step是从中sample出一个mini batch作为负样本使用。这个方法的问题在于储存在memory bank中的representation可能经过几百或更多step的参数更新后,已经失去与现在抽出来的representation的一致性。

    MoCo (momentum contrast) 的想法是维持两个encoder,一个使用gradient decent训练,另一个的参数则是跟著第一个encode的参数,但是使用momentum更新,保持一个相似但不同的状态。而这个momentum encoder的输出会被一个queue储存起来,取代原本的memory bank。相比原本的memory bank作法,MoCo的储存的representation比较新,保持一致性的同时也藉由momentum encoder确保了足够的对比性。

    自适应迭代学习(对比自监督学习)(5)

    至于MoCo v2 [4] 只是将SimCLR的两个组件 (stronger data augmentation与投影网络 )加入MoCo的架构。整体架构可以视为依照SimCLR的扩充版,多了momentum encoder与memory bank,但是不需要特别大的batch。

    自适应迭代学习(对比自监督学习)(6)

    以上的方法虽然展示了self-supervised learning的强大,不过都有一些实作上的麻烦之处,降低许多应用开发人员尝试的意愿。

    在SimCLR中,训练时需要大量online的负样本,导致了batch size要开得很大效果才好,论文中使用了4096的batch size,甚至为了optimize这样不寻常的大batch,还使用了特殊设计的optimizer LARS。这样大的batch以现阶段的硬体设备不可能放在一张GPU上,也因此cross GPU的batch normalization也需要被导入。

    在MoCo中,除了需要维护representation的queue (其实也就是某种memory bank),还需要在训练时运行两个网络,gradient训练的encoder与momentum encoder,造成了两倍大的记忆力需求。

    简化SSL训练方法

    今年,分别由DeepMind团队与Facebook AI Research团队都提出了不需要负样本的contrastive learning架构BYOL [5] 与SimSiam [6],示范了在computer vision领域实现SSL的简单方法。虽然不需要负样本也不会导致collapsing output,至今 (2020年12月) 相关论文方法都不能提供具有相当理论的合理解释。

    BYOL (Bootstrap Your Own Latent)

    BYOL与MoCo设计相似,需要两组网络 (online与target network),online网络依照gradient更新参数,target network的参数则是藉由online network参数的momentum更新。与MoCo不同的是网络多了一个预测层,分为三个阶段:特征抽取(embedding, or encoding) 得到 y、特征投影 (projection) 得到 z、最后通过预测 (prediction) 得到 p。 Online network的任务是用预测网络产生的 p 来预测target network的projection z。

    自适应迭代学习(对比自监督学习)(7)

    也就是说BYOL并不需要储存过去的representation,拔除了MoCo的memory bank。换句话说,BYOL的contrastive learning过程中并没有显著地使用到任何负样本,但是却不会造成collapsing output。这本质上是一件非常非常不可思议的事情。论文的解释是他们认为在loss的设计上并没有同时optimize两个encoder,就像GAN (generative adversarial network) 一样,因此网络并不会converge到整体loss最小的地方,也就是collapsing output。

    事实上这样的说法很难说服人,论文也承认了存在一个明显的 undesirable equilibria会导致 collapsing,这个实验结果仅仅是实务上 "we did not observe convergence to such equilibria"。

    至于效果,BYOL是毋庸置疑的强大,在ImageNet的linear evaluation下与其他下游任务的transfer learning上表现都相当优异。

    自适应迭代学习(对比自监督学习)(8)

    自适应迭代学习(对比自监督学习)(9)

    SimSiam (Simple Siamese Representation Learning)

    SimSiam简单用一句话描述就是没有momentum encoder的BYOL。BYOL拿掉了MoCo的memory bank,SimSiam进一步地拿掉了momentum encoder。方法简单,实务上同样能避免collapsing output的发生。

    SimSiam的架构与BYOL一样是三个阶段的架构,先过主网络embedding,再过小网络projection,最后过小网络prediction。与BYOL不同之处在于SimSiam并没有两组网络参数,同一个网络对于不同的view交互地用latent projection互为彼此的prediction target。在更新参数时,都只计算prediction那条路线的gradient,也自然没有什麽momentum encoder。

    自适应迭代学习(对比自监督学习)(10)

    作者认为近期的unsupervised或self-supervised learning大多都使用了某种形式的siamese network,也就是对于成对或多个输入使用共享参数的网络,然后计算某种相似度。论文进一步的推断,在这样的Siamese架构下存在两个不同的最佳化任务,实现两个observation的matching。就像是convolution是modeling translation invariance的归纳偏置 (inductive bias),Siamese架构也是一种modeling invariance的inductive biases。这个invariance指的就是data augmentation invariance。

    论文通过实验展示,不论是predict head的设计、batch的大小、batch normalization的使用、similarity function的设计、或是对比性的symmetrization都不是避免collapsing output的关键。并且透过额外的实验旁敲侧击地佐证,导入stop gradient的操作等同于引入一些虚构的参数,让SimSiam类似于某种expectation maximization (EM)的演算法,去估算data augmentation的期望值。

    事实上这样的实验与说法依然相当地玄,与 BYOL一样, SimSiam论文也承认了这仅仅是实验上的结果 (“SimSiam and its variants non-collapsing behavior still remains as an empirical observation”)。

    在实验结果上,SimSiam并不是最强的,但是依然是所有方法中最简单、最好实现的。

    自适应迭代学习(对比自监督学习)(11)

    Self-supervised learning在这两年内获得莫大的进展,而且许多优质论文都是来自强大的公司的研究团队,可以想像这是一个学界与业界都热烈渴求的目标。毕竟在标注数据成本高的时候,收敛需要的数量越少,成本越低;在同样的标注资料量下,可以从数据本身获取越多资讯的模型自然也越强大。

    时至今日,SSL的相关技术还完全称不上是成熟,工业上的应用应该也相较地少。

    好了~这篇文章就先到这边吧。

    欢迎关注公众号:AI约读社,获取更多最新分享。

    原文链接:https://medium.com/軟體之心/self-supervised-learning可以很簡單-bylo與simsiam的觀點-bac4bbdaaaf9

    Reference

    [1] A Simple Framework for Contrastive Learning of Visual Representations [ICML 2020] [2] Advancing Self-Supervised and Semi-Supervised Learning with SimCLR [Google AI Blog] [3] Momentum Contrast for Unsupervised Visual Representation Learning [CVPR 2020] [4] Improved Baselines with Momentum Contrastive Learning [arXiv 2020] [5] Bootstrap your own latent: A new approach to self-supervised Learning [NeurIPS 2020] [6] Exploring Simple Siamese Representation Learning [arXiv 2020] [7] Unsupervised Learning of Visual Features by Contrasting Cluster Assignments [NeurIPS 2020]

    ,