中文笔记:对比学习相关工作总结

2024 年 9 月 20 日 星期五(已编辑)
26
这篇文章上次修改于 2024 年 9 月 20 日 星期五,可能部分内容已经不适用,如有疑问可询问作者。

中文笔记:对比学习相关工作总结

对比学习研究的四个阶段

对比学习是一类强大的自监督学习方法,逐步在计算机视觉领域得到了广泛的应用。本文根据对比学习方法的演化,将其分为四个阶段,并对每个阶段的代表性方法进行介绍。


第一阶段:初期对比学习方法

1. InstDisc (Instance Discrimination)

Instance Discrimination 提出了个体判别作为代理任务,并首次引入了 memory bank 和 NCE(Noise Contrastive Estimation)损失来训练模型。该方法使用动量更新策略来逐步提升特征的稳定性和一致性。

2. Unsupervised Embedding Learning via Invariant and Spreading Instance Feature

该方法属于 SimCLR 的前身。当 mini-batch 大小为 时,正样本数量为通过数据增强生成的 ,而负样本则为剩下的所有样本,即 。这种策略极大地丰富了训练过程中的正负样本对。

3. CPC (Contrastive Predictive Coding)

CPC 的代理任务是预测未来的时刻。模型中的 query 是预测值,而正样本是通过编码器从真实未来时刻的输入中获得的特征,随机样本的特征则作为负样本。

4. CMC (Contrastive Multiview Coding)

Contrastive Multiview Coding 提出了从不同视角或不同模态的输入作为正样本进行对比的思路。由于它们都对应同一场景,因此应视为正样本,而不同场景的输入作为负样本。该方法的一个问题在于,每个模态都需要一个独立的编码器,导致计算量增加。随着 Transformer 的发展,未来或许可以用一个编码器处理不同模态的数据。


第二阶段:对比学习方法的突破

1. MoCo (Momentum Contrast)

MoCo 提出了将对比学习问题归结为字典查询问题。该方法的核心创新点在于引入了队列动量编码器,实现了大规模字典构建的同时保证了特征的一致性。这一写作方式对对比学习的研究具有重要影响。

2. SimCLR

SimCLR 提出了三个重要贡献:

  • 增加了多种数据增强方法(从消融实验中可知 Crop 和 Color 最为有效)。
  • 在训练中加入了一个 projection head(MLP+ReLU),提高了模型性能。
  • 使用了更大的 batch size,使得训练更加稳定。

3. MoCo v2

MoCo v2 基于 MoCo 进行了改进,增加了 MLP、更多的数据增强方法以及余弦学习率调度(Cosine Learning Rate Schedule),提升了模型的性能。

4. SimCLR v2

SimCLR v2 的主要工作是结合有监督学习进行 fine-tuning。首先进行自监督对比学习,然后使用少量有标签的数据对模型进行微调,获得一个教师网络。教师网络生成伪标签,对无标签数据进行自监督学习。同时,SimCLR v2 引入了更大的骨干网络、更深的 MLP,以及动量编码器。

5. SwAV (Swapping Assignments between Views)

SwAV 将对比学习与聚类方法结合起来。在该方法中,一个视角的特征被用于预测另一个视角的特征。SwAV 提出了 Multi-crop 数据增强策略,使用不同大小的 patch 来学习全局和局部特征。这种方法减少了与大量负样本的对比,节省了计算资源。


第三阶段:去除负样本的对比学习

1. BYOL (Bootstrap Your Own Latent)

BYOL 的一个关键创新在于完全去除了负样本。通过在 projection head 后加入 prediction 模块,模型的匹配问题被转换为预测问题。BYOL 的编码器通过 MoCo 的动量更新机制,并使用 MSE 损失让两个向量尽可能接近。尽管没有负样本,BYOL 利用 Batch Normalization 保证模型不发生坍塌。

2. SimSiam

SimSiam 对之前的工作进行了总结,并去除了 BYOL 中的动量编码器。SimSiam 通过 stop-gradient 操作避免了模型坍塌,类似于 EM 算法,逐步更新模型权重。


第四阶段:结合 Transformer 和深度神经网络的对比学习

1. MoCo v3

MoCo v3 基于 SimSiam,将 ResNet-50 替换为 Vision Transformer(ViT)。在训练过程中,使用大 batch size 时出现了准确率突然下降的现象。研究发现,问题出在梯度在第一层 patch projection 位置处波动较大。通过随机初始化 patch projection 并冻结该层,训练得以平滑进行。

2. DINO (Self-Distillation with No Labels)

DINO 在教师网络中加入了 Centering 操作,防止模型发生坍塌,同时利用 self-distillation 技术提升模型性能。


总结

对比学习方法经历了从最初的基于负样本的 InstDisc,到去除负样本的 BYOL,再到基于 Transformer 的 MoCo v3 的演变。这一过程中,每一阶段的进展都为自监督学习领域带来了新的思路和应用场景。由于CLIP在多模态领域中的良好表现,对比学习仍然有巨大的发展潜力。

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...