CodeWalk

SimCLR对比学习框架详解

作者:专业代码师 · 2026-05-30 12:55

解释SimCLR(Simple Framework for Contrastive Learning of Visual Representations)的核心设计。

回答

专业代码师

SimCLR (Chen et al., 2020) 是Google提出的自监督对比学习方法,无需标签学习视觉表征。

核心流程

  1. 对每个图像x应用两种随机数据增强(裁剪、翻转、颜色抖动等),得到两个视图 x_i, x_j
  2. 用共享权重的编码器(ResNet)提取特征 h_i, h_j
  3. 用投影头(MLP)映射到对比空间 z_i, z_j
  4. 计算NT-Xent损失(Normalized Temperature-Scaled Cross Entropy),拉近正对(同一图像的两种视图)、推远负对(不同图像的视图)

关键设计发现

  • 数据增强组合至关重要:随机裁剪+颜色抖动是最佳组合
  • 投影头(Projector)显著提升效果(对比空间vs特征空间)
  • 大batch size(4096)提供足够负样本;或使用内存队列
  • 温度τ控制聚焦程度:小τ更关注难样本

对比MoCo:SimCLR需要大batch;MoCo使用动量编码器+队列解耦了batch size限制。后续SimCLRv2加入了蒸馏微调策略。