Contrastive Self-Supervised Learning 的对比学习框架和设计新方法
https://towardsdatascience.com/a-framework-for-contrastive-self-supervised-learning-and-designing-a-new-approach-3caab5d29619
近来,一系列“新颖”的自监督学习领域算法取得了不错的成果,如:AMDIM[2],CPC[3],Moco[5],SimCLR[4],BYOL[6]等。YADIM[1]设计了一个框架来表达对比性自我监督学习方法,受该框架启发,本文从4个方面了分析近来的对比自监督算法:CPC,AMDIM,MOCO,SimCLR和BYOL,并表明尽管这些方法在表面上看起来有所不同,但实际上它们彼此之间都是细微的调整。
在此博客中,我们将:
- 回顾自监督的学习;
- 回顾对比学习;
- 拆解对比自监督算法框架;
- 使用框架比较CPC,AMDIM,MOCO,SimCLR和BYOL。
实作
您可以找到我们在PyTorch Lightning中实现的本文中介绍的所有增强功能和方法,这将使您能够在任意硬件上进行训练,并使每种方法的并排比较更加容易。
AMDIM
BYOL
CPC V2 (only verified implementation outside of DeepMind to our knowledge).
Moco V2
SimCLR
1.Self-Supervised Learning
回想一下,在监督学习中,系统被赋予输入(x)和标签(y),
在自监督学习中,仅给定系统(x),而系统学习的不是(y),而是“学会根据输入的其他部分来预测其输入的一部分”
实际上,这种表达方式是多样化的,可以创造性地“分解”输入内容, 这些策略称为 pretext tasks。研究人员尝试了各种方法,这里举三个示例:(1)预测两个斑块的相对位置,(2)解决拼图游戏,(3)给图像着色。
尽管上述方法充满创意,但实际上在实践中效果并不理想。
然而,当使用对比学习的最新方法时,自监督学习已经开始明显缩小在ImageNet上与监督学习之间的差距。
2 Contrastive Learning
大多数机器学习算法背后的基本思想是,相似的示例应该组合在一起,并且与其他群集相距甚远。
这个想法是最早进行对比学习的著作之一,即“区别学习相似性度量,并应用于人脸验证”(Chopra等人于2004年提出)
下图说明了这个主要思想:
对比学习通过使用三个关键要素来实现这一目标,即正样本,锚点和负样本表示。 要创建一个正对,我们需要两个相似的例子,而对于负对,我们要使用一个不相似的例子。
但是在自监督学习中,我们不知道示例的标签。因此,无法知道两个图像是否相似。 假设存在大小为N的数据集中,每个图像都是其自己的类别,那么就可以使用数据增强来生成这些三元组(the positive and negative pair)。