news 2026/2/16 2:46:18

对比学习:【SimCLR】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
对比学习:【SimCLR】

🚩 对比学习最经典的框架:SimCLR笔记它来咯!
主要包括:数据增强+编码+投影头+对比损失


文章目录

  • 1. 一句话概括
  • 2. 简介
    • 2.1 模型定位
    • 2.2 历史意义
    • 2.3 核心思想
  • 3. 方法
    • 3.1 数据增强(Data Augmentation)
    • 3.2 编码网络(Encoder Network)
    • 3.3 投影头(Projection Head)
    • 3.4 对比损失(Contrastive Loss)

1. 一句话概括

SimCLR是一种基于对比学习的自监督框架:对每张图像生成两种强增强视图作为正样本对,使用ResNet编码并通过MLP投影头得到对比空间表示,在 batch 内把其他样本当作负样本,用带温度系数的NT-Xent损失拉近正对、拉远负对,从而学习可迁移的视觉表征。

2. 简介

2.1 模型定位

  • 图像分类、目标检测、语义分割的预训练模型

2.2 历史意义

SimCLR(Simple Contrastive Learning of visual Representations),它是自监督学习(Self-Supervised Learning, SSL)在计算机视觉领域的重要里程碑之一,由 Google Research 在 2020 年提出。

利用对比学习,实现自监督学习模型的性能超越了有监督学习模型的性能。

  • 论文《A Simple Framework for Contrastive Learning of Visual Representations》
  • 代码仓库:https://github.com/google-research/simclr

2.3 核心思想

让同一张图像的不同增强视图在特征空间中彼此靠近,同时让不同图像的增强视图彼此远离。(对比学习)

换句话说,模型要学会“识别”哪些特征属于同一图像的不同视角,从而学到对图像变换鲁棒的通用特征。

3. 方法

3.1 数据增强(Data Augmentation)

  • 对同一张原始图像 x随机采样两种不同的增强方式,得到两个视图x i x_ixix j x_jxj(正样本对)
  • 数据增强方式组合包括:
    • 随机裁剪缩放
    • 颜色扰动
    • 随机灰度
    • 高斯模糊
    • 水平翻转
  • 目的:制造视觉上不同但语义相同的样本,迫使模型关注语义而非表面特征。
  • 前两种数据增强方法对效果提升很重要。
importtorchvision.transformsasT# SimCLR 常用的数据增强组合(适用于 ImageNet 风格输入)simclr_train_transform=T.Compose([T.RandomResizedCrop(size=224,scale=(0.08,1.0)),# 随机裁剪缩放T.RandomApply([# 颜色扰动(按概率应用)T.ColorJitter(brightness=0.4,contrast=0.4,saturation=0.4,hue=0.1)],p=0.8),T.RandomGrayscale(p=0.2),# 随机灰度T.GaussianBlur(kernel_size=23,sigma=(0.1,2.0)),# 高斯模糊(kernel_size 建议为奇数,随分辨率调整)T.RandomHorizontalFlip(p=0.5),# 水平翻转T.ToTensor(),# 转成 PyTorch TensorT.Normalize(mean=(0.485,0.456,0.406),std=(0.229,0.224,0.225))# 对每个通道做标准化(这组数来自 ImageNet 的统计)])

3.2 编码网络(Encoder Network)

  • 使用一个卷积神经网络(ResNet)将增强图像x i x_ixix j x_jxj编码为特征向量。

3.3 投影头(Projection Head)

  • 小型非线性网络,通常是MLP

  • 投影头的输出z zz才是对比学习任务的直接输入,训练完成后可丢弃,只用编码器f ( . ) f(.)f(.)提取的特征做下游任务。

3.4 对比损失(Contrastive Loss)

使用 Normalized Temperature-scaled Cross Entropy Loss(NT-Xent)​ 计算损失:


其中,τ:温度参数(temperature),控制分布的平滑程度。


NT-Xent 损失本质是 InfoNCE 的一种写法

损失的演变过程

  • NCE:原本是一种用于估计概率模型中配分函数(partition function)的方法,通过将密度估计问题转化为二分类问题(区分真实数据与噪声数据)。
  • InfoNCE:在 NCE 的基础上,用于最大化输入与表征之间的互信息的下界,在对比学习中,它表现为“让正样本对的相似度高于负样本对”。
  • NT-Xent:一种写法上的转变
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/11 14:36:30

一篇看懂JWT:Web安全的“身份证”

诸神缄默不语-个人技术博文与视频目录 文章目录 什么是JWT?一个简单的比喻为什么需要JWT?JWT长什么样?1. 头部(Header)2. 载荷(Payload)3. 签名(Signature) 用Python玩转…

作者头像 李华
网站建设 2026/2/13 3:10:58

基于微信小程序的直播带货商品数据分析系统毕设源码+文档+讲解视频

前言 本课题聚焦直播带货行业的数据化运营需求,针对当前直播商品数据分散、分析维度单一、运营决策缺乏精准数据支撑等痛点,设计开发基于微信小程序的直播带货商品数据分析系统。系统以微信小程序为核心载体,结合前端原生开发技术与后端数据处…

作者头像 李华
网站建设 2026/2/12 19:06:36

基于 S7 - 1200 和博图 15.1 的三层立体车库 PLC 设计

三层立体车库plc s7-1200 博图15.1 1、设置启动、停止按钮,且设置指示灯显示车库的开关状态; 2、7个车位的车俩可以自由存取,且车库可以实现自动存取(存取选择最优路径); 3、每个车位均有电机控制&#…

作者头像 李华
网站建设 2026/2/11 10:27:25

当图像开始跳舞:用Matlab玩转频率域滤镜

标题:基于matlab的理想滤波器和巴特沃斯滤波器设计 关键词:一阶巴特沃斯滤波器 理想滤波器 二维傅里叶变换 fft2 描述:对任意图像进行灰度化,然后进行二维傅里叶变化,设定一个阈值,对高频或者低频信号进行滤…

作者头像 李华
网站建设 2026/2/11 17:05:51

Java面试必看:ConcurrentHashMap并发度解析

文章目录Java面试必看:ConcurrentHashMap并发度解析?场景还原:面试官与我的对话什么是并发度?并发度的核心思想并发度的实现细节1. Segment数组2. 分段锁机制3. 动态调整Segment数量4. 高效的查找机制如何配置合适的并发度&#x…

作者头像 李华
网站建设 2026/2/13 14:53:42

计算机基础小题

第一章 填空题 基于(存储程序)原理的冯诺依曼计算机,其工作方式的基本特点是(按地址访问并顺序执行指令)(指令)和(数据)都存放在存储器中,(控制器…

作者头像 李华