最近深度学习两巨头Bengio和LeCun在ICLR2020上点名Self-SupervisedLearning(SSL,自监督学习)是AI的未来,而其的代表的Framework便是ContrastiveLearning(CL,对比学习)。
另一巨头Hinton和Kaiming两尊大神也在这问题上隔空过招,MoCo、SimCLR、MoCoV2打得火热,这和BERT之后,各大公司出XL-Net、RoBerta刷榜的场景何其相似。
Motivation&Framework
很多研究者认为,深度学习的本质就是做两件事情:RepresentationLearning(表示学习)和InductiveBiasLearning(归纳偏好学习)。目前的一个趋势就是,学好了样本的表示,在一些不涉及逻辑、推理等的问题上。
1.1IllustrativeExample
▲当你被要求画一张美元,左边是没有钞票在你面前,右边是面前摆着一张钞票画出来的结果
上面这个例子来自于ContrastiveSelf-supervisedLearning[2]这篇Blog,表达的一个核心思想就是:尽管我们已经见过很多次钞票长什么样子,但我们很少能一模一样的画出钞票;虽然我们画不出栩栩如生的钞票,但我们依旧可以轻易地辨别出钞票。
1.2ContrastiveLearningFramework
既然是表示学习,那么我们的核心就是要学习一个映射函数,把样本编码成其表示,对比学习的核心就是使得这个满足下面这个式子:
这里的就是和类似的样本,就是和不相似的样本,这是一个度量样本之间相似程度的函数,一个比较典型的score函数就是就是向量内积,即优化下面这一期望:
事实上,最小化这一loss能够最大化和互信息的下界,让二者的表示更为接近。理解了这个式子其实就理解了整个对比学习的框架,后续研究的核心往往就聚焦于这个式子的两个方面:
如何定义目标函数?最简单的一种就是上面提到的内积函数,另外一中triplet的形式就是,直观上理解,就是希望正例pair和负例pair隔开至少的距离,这一函数同样可以写成另外一种形式,让正例pair和负例pair采用不同的函数,例如,,。
ContrastivePair
2.1MoCo
论文标题:MomentumContrastforUnsupervisedVisualRepresentationLearning
前面提到了,样本数量对于学习到的样本质量有很大的影响。MoCo做的事情很简单,就是把负例样本的encoder和mini-batch大小解耦。也就是说,原先在算目标函数的时候,负例样本对也会为loss产生贡献,因为也就会有梯度回传给对应的encoder,那么这样在实现的时候,样本数量必然会受到batchsize的限制,从而影响学习到表示的质量。
为此,MemoryBank提出我把所有样本的表示都存起来,然后每次随机采样,这样就可以认为我的负例样本理论上可以达到所有样本的数量,具体的做法就是每一轮来encode一次所有的变量,显然,这样很吃内存,并且得到的表示也和参数更新存在一定的滞后。
MoCo则改善了上述的两个缺点,一方面,用一个queue来维护当前的negativecandidatespool,queue有着进出的动态更新机制,一方面能够和Mini-batch解耦,queuesize可以设置的比较大,另外一方面也就不用对所有样本做类似预处理的进行编码;对于负例样本的参数,采用Momentumupdate的方式,来把正例encoder的参数copy给负例encoder:
三种方式的示意图也在这一小节的开头给出了,可以清楚的看到三种方式的区别。这种对比画图的方式对于说明问题很有帮助,可以在论文中进行尝试。
2.2SimCLR
论文标题:ASimpleFrameworkforContrastiveLearningofVisualRepresentations
MoCo刚说完样本数量对于对比学习很重要,这边SimCLR就从另外一个角度,说构建负例的方式(图像上,就是对于图像的transformation)也很重要,探究了transformation、batch-size大小等对于学习到的表示的影响,并且把这个框架用下面这张图来说明:
其中最后一个结论,和MoCo的初衷是符合的,并且作者虽说不用Memory-bank,但是SimCLR尝试的bsz也达到了令人发指的8192,用了128块TPU,又是算力党的一大胜利。
MoCov2也是利用了上面的第一点和第三点,在MoCo基础上得到了进一步的提升,然后作者还也明确的点名了SimCLR,称不需要使用那么大的batchsize也能超过它,可能这就是神仙打架吧。
2.3CPC
论文标题:RepresentationLearningwithContrastivePredictiveCoding
为了把历史的信息也加入进去,作者提出可以在上额外增加一个自递归模型,例如GRU,来在表示之中融入时序关系,得到相应的来进行对比学习。在下游任务中,既可以使用也可以使用,又或者是二者的融合,可以根据任务需要来进行灵活的选择。
Theory&Application
3.1ICML2019
论文标题:ATheoreticalAnalysisofContrastiveUnsupervisedRepresentationLearning
3.2NIPS2017
论文标题:ContrastiveLearningforImageCaptioning
作者引入对比学习,把对应的图像和标题作为正例pair,并把其中的图像随机采样得到负例pair,并且在已有的sota模型上优化,提升生成的caption的效果。
3.3ICLR2020
论文标题:ContrastiveLearningofStructuredWorldModels
前面提到,表示学习能够较好的解决一些简单的任务,但是理解物体之间的关系以及建模其间的交互关系不单单需要好的表示,同样需要一个好的归纳偏好。
这里的对比学习是从TransE架构迁移而来,具体地,在TransE中,我们会希望一个三元组的能够让尽可能的小,即的表示加上relation的表示和的表示尽可能地接近,而迁移到世界模型中,就是要将entity换成物体的state,relation换成action,即经过图卷积后的得到的新的表示,通过下面的式子进行优化:
Summary
本文介绍了关于对比学习背后的动机,以及一系列在图像、文本上的一些工作,在计算机视觉领域,其习得的表示能够很好地在下游任务泛化,甚至能够超过监督学习的方法。
回过头来看,预训练模型从ImageNet开始,后来这一思想迁移到NLP,有了BERT等一系列通过自监督的预训练方法来学习表示,后来这一想法又反哺了计算机视觉领域,引出了诸如MoCo、SimCLR等工作,在一系列分割、分类任务上都取得了惊人的表现。
那么,这一思想会不会又再次和NLP结合,碰撞出新的火花呢,让我们拭目以待。
参考链接
点击以下标题查看更多往期内容:
#投稿通道#
让你的论文被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
来稿标准:
稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)