当前位置: 首页 > news >正文

对比学习

目录

1.SimCLR

1.1 SimCLR框架主要组成

1.2 主要特性/观点

2.MOCO

2.1 MoCo v1

2.2 MoCo v2

参考文献


1.SimCLR

1.1 SimCLR框架主要组成

图1 SimCLR模型框架

从上图可以看出,SimCLR由以下几部分组成:

  • 随机数据扩增模块,通过该模块生成positive pair:
  • Base encoder f,文中采用resnet50(在average pooling layer之后作为输出);
  • projection head g       
  • contrastive loss function (NT-Xent loss,the normalized temperature-scaled cross entropy loss)) 

算法完整流程如下:

1.2 主要特性/观点

  • 使用多个数据扩增的组合,对于对比学习非常重要。数据扩增幅度更强,对于对比学习的收益,比有监督学习更多;
  • 获得表征后,在计算对比损失前,引入了一个非线性的projection head,来提升表征的质量;

  • 对比学习损失中,使用了归一化以及可调温度参数
  • 较大的batch size,更深或者更宽的模型,对于提升对比学习效果更有用。

2.MOCO

2.1 MoCo v1

                      a)详细结构                                                                                        b)简图

MoCo v1算法的框图如上图所示。可以看出与SimCLR的差异是,

  • 参与计算对比学习的损失的图像,SimCLR利用了同一batch中的图像,而MoCo v1则维护了一个Memory Queque,相对来说减小了对大batch size的需求;
  • MoCo v1中key encoder的更新,是基于query encoder的权重进行了momentum的操作,           ;而SimCLR中encoder为同一个;
  • 使用损失函数不同:

          MoCo v1 InfoNCE: 

          SimCLR NT-Xent loss:     

MoCo v1算法伪代码如下:

            

2.2 MoCo v2

                                    

MoCo v2框架中引入了 SimCLR中用到的两个方法:

  • MLP projection head;
  • 更多的data augmentation。

参考文献

[1] The Beginner’s Guide to Contrastive Learning

[2] https://github.com/facebookresearch/moco

[3] A Tale of Color Variants:Representation and Self-Supervised Learning in Fashion E-Commerce

[4] MoCo v1: Momentum Contrast for Unsupervised Visual Representation Learning

[5] MoCo v2: Improved Baselines with Momentum Contrastive Learning

[6] MoCo v3: An Empirical Study of Training Self-Supervised Vision Transformers

[7] http://github.com/zhirongw/lemniscate.pytorch

[8] https://github.com/leftthomas/SimCLR

[9] https://github.com/Seonghoon-Yu/MoCov2_Pytorch_tutorial/blob/main/MoCov2.ipynb

[10] https://github.com/p-giakoumoglou/pyssl?tab=readme-ov-file

http://www.lqws.cn/news/196849.html

相关文章:

  • Python实例题:Python计算线性代数
  • 使用Conda管理服务器多版本Python环境的完整指南
  • Git 使用完全指南:从入门到协作开发
  • 光学字符识别(OCR)理论概述与实践教程
  • cmake编译LASzip和LAStools
  • pycharm 中文字体报错
  • 主流大语言模型安全性测试(三):阿拉伯语越狱提示词下的表现与分析
  • 几种简单的排序算法(C语言)
  • 【Fiddler工具判断前后端Bug】
  • mariadb5.5.56在centos7.6环境安装
  • 无法与IP建立连接,未能下载VSCode服务器
  • 基于Java+VUE+MariaDB实现(Web)仿小米商城
  • ADB识别手机系统弹授权框-如何处理多重弹框叠加和重叠问题
  • 电子电气架构 ---智能汽车电子电气架构
  • 使用 Python + SQLAlchemy 创建知识库数据库(SQLite)—— 构建本地知识库系统的基础《一》
  • Docker构建Vite项目内存溢出:从Heap Limit报错到完美解决的剖析
  • jvm 垃圾收集算法 详解
  • 数据库(sqlite)基本操作
  • 【JVM】Java虚拟机(二)——垃圾回收
  • Docker基础(一)
  • “组件、路由懒加载”,在 Vue3 和 React 中分别如何实现? (copy)
  • Vue:Ajax
  • 基于物联网设计的智慧家庭健康医疗系统
  • Jenkins持续集成CI,持续部署CD,Allure报告集成以及发送电子 邮件
  • 从golang的sync.pool到linux的slab分配器
  • Ubuntu2404 下搭建 Zephyr 开发环境
  • 一个完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (二)
  • 51单片机基础部分——矩阵按键检测
  • .NET 事件模式举例介绍
  • 飞牛云一键设置动态域名+ipv6内网直通访问内网的ssh服务-家庭云计算专家