自监督学习模型发展综述:Inst Disc、Inva Sread、MOCO、SimCLR、BYOL

news2024/11/25 13:28:21

文章目录

  • 一、Inst Disc
    • 研究意义价值
    • 个体判别(instance discrimination)
    • 特点
    • 实现方法
    • 如何训练CNN
    • 大量负样本如何存储
    • 前向传播过程
    • Proximal Regularization
    • 超参数设置
  • 二、Inva Sread
    • 特点
    • 原理
    • 如何选取正负样本
    • 前向传播过程
    • 目标函数
    • 模型效果不够好的原因
  • MoCo
  • SimCLR
    • 模型
    • 正负样本对的选取
    • Proection Head
    • 前向传播过程
    • 和Inva Sread的区别
  • BYOL
    • 模型
    • 目标函数
    • BYOL模型中的BN作用
  • 参考

代理任务:个体判别,每一张图片都是自己的类,每一张图片都尽可能和其他图片分开。

对比学习:需要有正负样本,让正负样尽可能的分开,负样本越多对比学习效果更好

一、Inst Disc

研究意义价值

提出了个体判别的代理任务,提出使用memory bank数据结构存储大量负样本,是MoCo的前身。

个体判别(instance discrimination)

将每一张图片都看作是一个类别,希望模型可以学习图片的表征,从而把各种图片都区分出来。

特点

把每一张图片都看做一个类别,通过卷积神经网络学习每一张图片(每个实例)的特征,从而把每一张图片都分开。

在这里插入图片描述

实现方法

通过CNN给图片编码成一个128维的特征,然后在特征空间中将这些特征尽可能分开。

如何训练CNN

使用对比学习中的正负样本进行训练。
正样本:图像本身
负样本:数据集中除了正样本的其他图片。

大量负样本如何存储

数据结构:memory bank(字典),后文简称mb,把所有图片的特征向量都存储在一个memory bank中。

以ImageNet数据集为例,数据集中共有128万张图片,因此memory bank字典就需要有128万行,所以需要把图片的特征维度尽可能减小来降低内存。

在论文中选择了128维的向量。

前向传播过程

  • 图片特征向量大小:batchsize = 256, 256张图片进入编码器中,通过ResNet50生成一个2048维特征向量,再降维形成128维的向量。
  • 正样本:一批次为256个
  • 负样本:从mb中随机抽取的4096个图片的特征向量
  • loss function:NCE loss
  • 更新mb:利用NCE loss去更新CNN的参数。本次更新结束后,会将CNN编码得到的向量替换掉memory bank中原有的存储。就这样循环往复的更新CNN和memory bank,最后让模型收敛,就训练好一个CNN encoder了

Proximal Regularization

为模型的训练加一个约束,使得mb可以进行动量式的更新。

超参数设置

  • loss中温度的设置:0.07
  • epoch = 200
  • 负样本个数:4096
  • batchsize = 256
  • initial learning rate = 0.03

Moco中的超参数设置都与该设置相同。

二、Inva Sread

SimCLR前身

特点

  1. 不使用其他数据结构去存储大量负样本,正负样本均来源于一个mini-batch。
  2. 只使用一个编码器进行端到端的学习

原理

对比学习的思想。

  • 相似的图片通过编码器后生成的特征应该类似,保持特征不变性
  • 不相似的图片通过编码器后生成的特征应该有很大的差异,尽可能分散

代理任务:个体判别

在这里插入图片描述

如何选取正负样本

在这里插入图片描述
画图理解一下正负样本如何选取:

假设一个mini-batch为256张图片(x1-x256),经过数据增强后会再次得到256张图片(x1’-x256’),原图和其经过数据增强后的图片即成为一个正样本对(positive sample pair),即256对,除了正样本对之外的图片即为负样本,即(256-1)个负样本对(negetive sample pair)

在这里插入图片描述

为什么从一个batch中选择正负样本?

可以使用一个编码器进行端到端的学习。

前向传播过程

图像和增广后的图像分别经过CNN编码器输出2048维向量,两个编码器是权值共享的,所以相当于是一个编码器,然后经过降维输出128维向量,在embedding space中让正样本之间向量尽量靠近,让负样本之间向量尽量远离。

目标函数

NCE的变体。

模型效果不够好的原因

  1. 没有使用字典进行存储负样本,负样本数量不够大,导致对比学习的效果不够好。
  2. 没有足够强大的数据增广。
  3. 没有SimCLR中的projection head。

MoCo

动量对比学习方法做无监督表征学习。
具体讲解见:自监督学习之对比学习:MoCo模型超级详解解读+总结

SimCLR

模型

在这里插入图片描述

正负样本对的选取

把原图进行不同的数据增广后得到xi和xj,该两张图片互为正样本,一个batch中的其他图片均为其负样本。如一个batch中有n张图片,对每张图片都进行两次数据增广,经过数据增广后该batch中则会包含2N张图片,其中有N对互为正样本对,则有N-1对为其负样本对。
在这里插入图片描述

在这里插入图片描述

Proection Head

模型中的g(.)函数:全连接层(20482048)-> BN -> 激活函数 -> 全连接层(2048128) -> BN
在这里插入图片描述

前向传播过程

在这里插入图片描述

注意:projection head只在训练的时候使用,在后续下游任务时去掉g函数那一层,使用h特征向量做下游任务。

和Inva Sread的区别

  1. 更多的数据增强: 多种数据增强的方法进行使用。
  2. 更大的batchsize进行训练。
  3. 加了一个projection head:加一个非线性变换。

BYOL

无需负样本就可以做对比自监督学习。

模型

在这里插入图片描述

目标函数

MSE loss

BYOL模型中的BN作用

模型进行隐式的负样本学习。
在这里插入图片描述

参考

Unsupervised Feature Learning via Non-Parametric Instance Discrimination
SimCLR知乎解读

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1022521.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JDK jps命令复习

之前写过jdk命令工具的博文,下面复习jps命令; jps 是 Java Process Status Tool 的简称,它的作用是为了列出所有正在运行中的 Java 虚拟机进程和相关信息; jps 命令参数 -q 只输出进程 ID,省略主类的名称 -m 输出虚拟机进程启动时传递…

【PyTorch攻略(2/7)】 加载数据集

一、说明 PyTorch提供了两个数据原语:torch.utils.data.DataLoader和torch.utils.data.Dataset,允许您使用预加载的数据集以及您自己的数据。数据集存储样本及其相应的标签,DataLoader 围绕数据集包装一个可迭代对象,以便轻松访问…

大模型助力企业数据驱动,火山引擎数智平台发布AI助手

9月19日,火山引擎在其举办的“V-Tech数据驱动科技峰会”上宣布,火山引擎数智平台VeDI推出“AI助手”,通过接入人工智能大模型,帮助企业提升数据处理和查询分析的效率。即使是不会写代码的运营人员,和大模型对话也能做好…

Vue3封装知识点(三)依赖注入:project和inject详细介绍

Vue3封装知识点(三)依赖注入:project和inject详细介绍 文章目录 Vue3封装知识点(三)依赖注入:project和inject详细介绍一、project和inject是什么二、为了解决什么问题三、project和inject如何使用1.provid…

四川百幕晟科技:抖店精选联盟怎么使用?

近年来,电商平台的兴起让很多人纷纷加入进来,希望通过在网上销售产品来赚取更多的利润。在这个竞争激烈的市场中,如何找到稳定的渠道来推广自己的产品成为了每个卖家的追求。抖店精选联盟是一个不错的选择,可以帮助卖家快速提升销…

数字调度与智能填报:提升效率的新时代

数字化和智能化正深刻改变着各行各业,包括调度和填报领域。传统的手工操作正在被数字调度和智能填报技术所取代,它们正在改变各行各业的工作方式,带来巨大的效率提升和智能化管理。 了解数字调度与智能填报 数字调度:优化资源利用…

C/C++大写字母的判断 2023年5月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C大写字母的判断 一、题目要求 1、编程实现 2、输入输出 二、解题思路 1、案例分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 C/C大写字母的判断 2023年5月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 输入一个字符,判…

原生小程序生命周期,路由跳转,本地存储等详解

原生小程序生命周期,路由跳转,本地存储等详解 生命周期,路由跳转,本地存储等API详解 原生小程序(Native Mini Program)是一种在微信小程序平台上开发的小程序类型,与传统的小程序开发方式&#…

合并两个升序链表,合并后也是升序的

开始时也要判断是否有一个链表本来就是空,如果是,直接返回另外一个链表 代码: struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){if(list1NULL){return list2;}if(list2NULL){return list1;} struct ListN…

VB Function过程求最大公约数和最小公倍数

VB Function过程求最大公约数和最小公倍数 Function过程求最大公约数和最小公倍数 Private Function gys(ByVal m%, ByVal n%) As IntegerDim r As IntegerDo 辗转相除法r m Mod nIf r 0 Then Exit Dom nn rLoopgys n End Function Private Sub Command1_Click()Dim a%, …

【EI会议信息】第五届土木建筑与城市工程国际学术会议(ICCAUE 2023)

第五届土木建筑与城市工程国际学术会议(ICCAUE 2023) 2023 5th International Conference on Civil Architecture and Urban Engineering (ICCAUE 2023) 第五届土木建筑与城市工程国际学术会议(ICCAUE 2023)由天津大学主办&…

听GPT 讲Istio源代码--pilot(5)

File: istio/pilot/pkg/serviceregistry/kube/controller/ambientindex.go ambientindex.go文件位于istio/pilot/pkg/serviceregistry/kube/controller目录中。它是Istio中Kubernetes服务注册表控制器的一部分,负责维护工作负载和服务之间的索引,以便快速…

「聊设计模式」之外观模式(Facade)

🏆本文收录于《聊设计模式》专栏,专门攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎持续关注&&收藏&&订阅! 前言 设计模式是一种通用的解决问题的方式,它不仅仅…

MySQL常见面试题(二)

😀前言 在数据库管理和操作中,我们常常需要深入理解其各种数据类型、特性和索引类型来优化我们的数据库设计和查询效率。其中,字符串类型和它们如何在MySQL中实现和使用成为了一个必不可少的知识点。同时,我们也需要理解新的特性&…

基于Java的高校实习管理系统设计与实现(亮点:实习记录、实习打分、实习作业,功能新颖、老师没见过、当场唬住!)

高校实习管理系统 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序(小蔡coding)2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 主要功能描述 五、系统主要功能5.1…

若依cloud -【 100 ~ 】

100 分布式日志介绍 | RuoYi 分布式日志就相当于把日志存储在不同的设备上面。比如若依项目中有ruoyi-modules-file、ruoyi-modules-gen、ruoyi-modules-job、ruoyi-modules-system四个应用,每个应用都部署在单独的一台机器里边,应用对应的日志的也单独存…

Vue 3 + TypeScript + jsplumb

网上搜了很久,没有找到基于vue3写的jsplumb,如是写了一个简单版,已开源 Vue 3 TypeScript jsplumb 支持回显,拖拽,连线的基础功能

十分钟理解OSPF路由协议

十分钟理解OSPF路由协议 1.RIP的缺陷以跳数为度量值最大跳数为15更新路由表采用全更新收敛速度慢 2.RIP与OSPF比较OSPF概述运行OSPF协议之前运行OSPF协议之后 3.OSPF协议工作过程1.发现邻居2.建立邻接关系3.传递链路状态信息4.计算路由 4.OSPF分区域管理 有RIP协议,…

Spring学习(三):MVC

一、什么是MVC MVC(Model-View-Controller)是一种软件设计模式,用于组织和管理应用程序的代码结构。它将应用程序分为三个主要部分,即模型(Model)、视图(View)和控制器(…

WPS 换行后缩进、加粗等自定义样式的清除

在使用WPS的Word编辑文字时,经常会出现换行后,自动缩进这种格式,需要清除这种样式,可以按照下图来操作: