对比学习
目录
1.SimCLR
1.1 SimCLR框架主要组成
1.2 主要特性/观点
2.MOCO
2.1 MoCo v1
2.2 MoCo v2
参考文献
1.SimCLR
1.1 SimCLR框架主要组成
图1 SimCLR模型框架
从上图可以看出,SimCLR由以下几部分组成:
- 随机数据扩增模块,通过该模块生成positive pair:
和
;
- Base encoder f,文中采用resnet50(在average pooling layer之后作为输出);
- projection head g
- contrastive loss function (NT-Xent loss,the normalized temperature-scaled cross entropy loss))
算法完整流程如下:
1.2 主要特性/观点
- 使用多个数据扩增的组合,对于对比学习非常重要。数据扩增幅度更强,对于对比学习的收益,比有监督学习更多;
-
获得表征后,在计算对比损失前,引入了一个非线性的projection head,来提升表征的质量;
- 对比学习损失中,使用了归一化以及可调温度参数
;
- 较大的batch size,更深或者更宽的模型,对于提升对比学习效果更有用。
2.MOCO
2.1 MoCo v1
a)详细结构 b)简图
MoCo v1算法的框图如上图所示。可以看出与SimCLR的差异是,
- 参与计算对比学习的损失的图像,SimCLR利用了同一batch中的图像,而MoCo v1则维护了一个Memory Queque,相对来说减小了对大batch size的需求;
- MoCo v1中key encoder的更新,是基于query encoder的权重进行了momentum的操作,
;而SimCLR中encoder为同一个;
- 使用损失函数不同:
MoCo v1 InfoNCE:
SimCLR NT-Xent loss:
MoCo v1算法伪代码如下:
2.2 MoCo v2
MoCo v2框架中引入了 SimCLR中用到的两个方法:
- MLP projection head;
- 更多的data augmentation。
参考文献
[1] The Beginner’s Guide to Contrastive Learning
[2] https://github.com/facebookresearch/moco
[3] A Tale of Color Variants:Representation and Self-Supervised Learning in Fashion E-Commerce
[4] MoCo v1: Momentum Contrast for Unsupervised Visual Representation Learning
[5] MoCo v2: Improved Baselines with Momentum Contrastive Learning
[6] MoCo v3: An Empirical Study of Training Self-Supervised Vision Transformers
[7] http://github.com/zhirongw/lemniscate.pytorch
[8] https://github.com/leftthomas/SimCLR
[9] https://github.com/Seonghoon-Yu/MoCov2_Pytorch_tutorial/blob/main/MoCov2.ipynb
[10] https://github.com/p-giakoumoglou/pyssl?tab=readme-ov-file