对比学习:让模型从无标注数据中学习表征

训练优化对比学习openstarry.com

对比学习:让模型从无标注数据中学习表征

对比学习的核心直觉非常朴素:如果两个样本是"相似"的,它们的表征应该靠近;如果"不相似",它们的表征应该远离。这种简单的思想,却催生了自监督学习领域最重要的突破之一。

为什么需要对比学习?

传统监督学习需要大量人工标注数据,这在很多领域成本高昂甚至不可行。例如,医疗影像需要专业医生逐张标注,自动驾驶需要精确的像素级标注。

对比学习的愿景:从未标注数据中自动学习有用的特征表示,然后用少量标注数据微调即可。

传统监督学习:
  100万张图片 + 人工标注 → 训练模型
  问题:标注成本巨大

对比学习(自监督):
  100万张图片(无标注)→ 学习通用特征
  1000张标注图片 → 微调
  优势:大幅降低标注需求

对比学习的核心思想

对比学习通过构造正样本对负样本对来学习表征:

原始图片 A → 随机裁剪 + 颜色抖动 → A'(正样本)
原始图片 B → 随机裁剪 + 颜色抖动 → B'(正样本)

正样本对:(A, A'), (B, B')
负样本对:(A, B), (A, B'), (A', B), (A', B')

目标:f(A) 与 f(A') 靠近,f(A) 与 f(B) 远离

InfoNCE 损失函数

对比学习的核心损失函数是 InfoNCE(Noise Contrastive Estimation)。它的目标是:给定一个锚点样本,从一批样本中找出正样本。

# InfoNCE 损失
def info_nce_loss(z_i, z_j, temperature=0.1):
    """
    z_i, z_j: 正样本对的表征向量
    batch 中有 N 个正样本对,其余为负样本
    """
    # 计算所有样本对的相似度
    sim = cosine_similarity(z_i, z_j) / temperature
    
    # 正样本对的相似度(对角线)
    pos_sim = torch.diag(sim)  # [N]
    
    # 分母:正样本 + 所有负样本
    denom = sim.sum(dim=1)  # [N]
    
    # 损失:最小化负对数似然
    loss = -torch.log(pos_sim.exp() / denom)
    return loss.mean()

直觉:这个损失函数鼓励模型将正样本对的相似度远高于负样本对。


经典方法对比

SimCLR(Simple Framework for Contrastive Learning)

Google 2020 年提出,奠定了对比学习的标准范式:

SimCLR 流程:
1. 从 batch 中采样 N 个样本
2. 每个样本做两次随机增强 → 得到 2N 个增强视图
3. 用 ResNet 编码器提取特征
4. 用 MLP 投影头映射到表征空间
5. 计算 InfoNCE 损失

关键设计:
- 大 batch size(4096 或更大)→ 更多负样本
- 强数据增强(裁剪、颜色、模糊)→ 更难的正样本对
- MLP 投影头 → 提升表征质量

MoCo(Momentum Contrast)

Facebook 2020 年提出,用动量更新解决大 batch 的限制:

MoCo v2 核心设计:
- 维护一个动态的负样本队列(queue)
- 编码器用动量更新(momentum=0.999)
- 不需要大 batch,小 batch 也能获得大量负样本

优势:在 8 张 GPU 上就能训练,不需要超大 batch

CLIP(Contrastive Language-Image Pre-training)

OpenAI 2021 年提出,将对比学习扩展到多模态:

CLIP 的跨模态对比学习:
- 图像编码器:提取图像特征
- 文本编码器:提取文本特征
- 对比目标:匹配的图文对靠近,不匹配的远离

训练数据:4 亿图文对(从互联网收集)
零样本能力:无需微调,直接用文本描述分类图像

数据增强的关键作用

对比学习的效果很大程度上取决于数据增强策略。好的增强应该:

增强方式 图像任务 NLP 任务
随机裁剪✅ 常用-
颜色抖动✅ 常用-
高斯模糊✅ 常用-
随机掩码-✅ 常用
词序打乱-✅ 常用
同义词替换-✅ 常用

对比学习的实际应用

计算机视觉

自然语言处理

多模态


对比学习的局限性


总结

对比学习的核心贡献在于证明了一个简单而深刻的道理:即使没有人工标注,仅仅通过"相似"和"不相似"的对比信号,模型也能学到高质量的特征表示。从 SimCLR 到 CLIP,对比学习正在重塑我们对自监督学习的理解。

以 AI 之力,筑未来之境

现在注册,立即免费获赠 200 次大模型调用权益

免费注册 →