什么是对比学习

自主地从大量数据中学习同类数据的相同特性,并将其编码为高级表征,再根据不同任务进行微调即可。

对比式学习着重于学习同类实例之间的共同特征,区分非同类实例之间的不同之处。

与生成式学习比较,对比式学习不需要关注实例上繁琐的细节,只需要在抽象语义级别的特征空间上学会对数据的区分即可,因此模型以及其优化变得更加简单,且泛化能力更强。

目前,对比学习貌似处于“无明确定义、有指导原则”的状态,它的指导原则是:**通过自动构造相似实例和不相似实例,要求习得一个表示学习模型,通过这个模型,使得相似的实例在投影空间中比较接近,而不相似的实例在投影空间中距离比较远。**而如何构造相似实例,以及不相似实例,如何构造能够遵循上述指导原则的表示学习模型结构,以及如何防止模型坍塌(Model Collapse),这几个点是其中的关键。

SimCLR

一些问题

MoCo

一些问题

SimCLR与MoCo

都是基于负例的对比学习方法

SimCLR主要是使用batch内的负例

Moco主要是维护负例的队列

类似于simCLR,负例可以由一个batch中的其他数据组成,但此时负例对只能来源于同一个batch的数据。通过queue提供负例,负例的来源范围更广,可以来自于不同batch的数据,并且负例不会产生梯度,计算量可以得到下降,使用的显存量会下降,同时训练模型的难度也会下降。

一句话概括,相比于simCLR,通过queue提供负例,可以减少负例增多导致的计算量增多。