基于对比学习的自监督视觉表示学习算法:SimCLR
字数 1450 2025-10-28 08:36:45
基于对比学习的自监督视觉表示学习算法:SimCLR
题目描述
SimCLR(A Simple Framework for Contrastive Learning of Visual Representations)是一种自监督学习算法,其核心思想是通过对比学习的方式,让模型学会在没有人工标注的数据集中提取有效的图像特征。该算法不依赖标签信息,而是通过构建图像的不同增强视图(如裁剪、旋转、颜色抖动等),将同一原始图像的不同增强版本视为正样本对,不同图像的增强版本视为负样本对,并训练模型使正样本在特征空间中相互靠近,负样本相互远离。最终,学到的特征表示可迁移到下游任务(如图像分类、目标检测)中,显著减少对标注数据的依赖。
解题过程
-
数据增强策略
- 对输入图像应用两次随机增强操作,生成两个相关视图(即正样本对)。增强方法包括:
- 随机裁剪并缩放至固定大小(模拟不同视角)
- 随机水平翻转
- 颜色失真(调整亮度、对比度、饱和度)
- 高斯模糊
- 例如,同一张猫的图像经过两次增强后,可能分别得到一张裁剪后的猫脸和一张颜色调整后的猫身,但它们仍代表同一只猫。
- 对输入图像应用两次随机增强操作,生成两个相关视图(即正样本对)。增强方法包括:
-
编码器网络提取特征
- 使用卷积神经网络(如ResNet)作为编码器 \(f(\cdot)\),将增强后的图像映射为低维特征向量。
- 输入图像 \(x\) 经过增强得到 \(\tilde{x}_i\) 和 \(\tilde{x}_j\),通过编码器得到特征 \(h_i = f(\tilde{x}_i)\) 和 \(h_j = f(\tilde{x}_j)\)。
-
投影头映射到对比空间
- 添加一个小的神经网络(通常为多层感知机),将特征 \(h\) 映射到更高维的投影空间 \(z = g(h)\)。
- 投影头的目的是消除特征中与下游任务无关的信息,让对比学习更专注于语义相似性。训练完成后,投影头会被丢弃,仅保留编码器用于下游任务。
-
对比损失函数优化
- 对于一个批次中的 \(N\) 张原始图像,通过增强得到 \(2N\) 个视图。对于每个正样本对 \((z_i, z_j)\),损失函数鼓励其相似度高于与其他 \(2(N-1)\) 个负样本的相似度。
- 采用归一化温度缩放交叉熵损失(NT-Xent)。对于正样本对 \((i, j)\),其损失计算为:
\[ \ell_{i,j} = -\log \frac{\exp(\text{sim}(z_i, z_j) / \tau)}{\sum_{k=1}^{2N} \mathbb{1}_{k \neq i} \exp(\text{sim}(z_i, z_k) / \tau)} \]
其中 $\text{sim}(u,v) = u^T v / \|u\|\|v\|$ 为余弦相似度,$\tau$ 是温度参数,用于调节相似度分布的尖锐程度。
- 训练与下游任务迁移
- 通过最小化所有正样本对的损失之和,优化编码器和投影头的参数。
- 训练完成后,丢弃投影头,使用编码器 \(f(\cdot)\) 提取的特征作为输入,在下游任务(如线性分类器)上微调或直接评估特征质量。
关键创新点
- 强调数据增强组合的重要性(特别是颜色失真与裁剪的结合)。
- 引入可学习的投影头提升特征质量。
- 大批量训练与负样本数量的关联性(大批量提供更多负样本,提升对比效果)。
通过这一流程,SimCLR无需标签即可学习鲁棒的视觉表示,为后续视觉任务奠定基础。