自监督学习中的对比学习训练模型来区分相似和不相似的数据点,无需标记数据。 其核心思想是创建数据样本对:正对(同一输入的增强视图)和负对(不同的输入)。 模型通过最小化负对之间的相似性并最大化正对之间的相似性来学习。 例如,在图像任务中,同一张照片的两个随机裁剪或颜色调整版本形成一个正对,而来自不同来源的图像则为负对。 该模型生成嵌入,其中相似的输入聚集在一起,使其能够捕获有意义的模式。
典型的架构包括一个编码器(例如,CNN 或 Transformer),它将输入映射到嵌入,以及一个投影头,它将嵌入映射到较低维度的空间以计算相似度。 损失函数,如 InfoNCE,衡量模型区分正样本和负样本的能力。 例如,给定一个锚点图像、其增强版本(正样本)和一个批次中的其他图像(负样本),如果锚点比正样本更接近负样本,则损失会惩罚该模型。 温度缩放通常用于调整模型对难负样本的关注程度。 这种设置鼓励编码器学习对噪声或增强不变的鲁棒特征。
对比学习广泛应用于计算机视觉(例如,SimCLR、MoCo)和 NLP(例如,句子嵌入)。 在实践中,开发人员受益,因为它减少了对标记数据的依赖。 例如,医学影像可以通过对比同一扫描的不同视图来利用未标记的 X 射线。 该方法也可以很好地随批次大小进行缩放,因为更大的批次提供更多的负样本。 挑战包括选择有效的增强和管理计算成本。 然而,像 PyTorch Lightning 和 TensorFlow 这样的框架简化了实现,让开发人员可以专注于调整增强和模型容量以适应他们的领域。