【论文阅读笔记】Supervised Contrastive Learning

【论文阅读笔记】Supervised Contrastive Learning

摘要

  • 自监督批次对比方法扩展到完全监督的环境中,以有效利用标签信息
  • 提出两种监督对比损失的可能版本

介绍

  • 交叉熵损失函数的不足之处,对噪声标签的不鲁棒性和可能导致交叉的边际,降低了泛化能。
  • 监督对比损失:将同一类别的所有样本作为正样本,并将批次中其余部分的样本作为负样本进行对比
  • 自监督对比对比损失:将每一个锚点(图像的增强版本)与整个批次的其余样本形成的负样本集进行对比。
  • 通过黑白小狗照片的展示,考虑类别标签信息会导致嵌入空间中相同类别的元素比自监督情况下更加紧密地对齐

在这里插入图片描述

  • 自监督对比学习:在嵌入空间中将一个锚点和一个正样本拉在一起,并将锚点与许多负样本进行推散。没有标签可用,正样本通常由样本的数据增强形成,而负样本由锚点和从小批量随机选择的样本组成。
  • 对比学习通过比较正样本和负样本之间的关系来学习有意义的表示,而无需使用标签信息。
  • 创新点在于考虑除了许多负样本之外,还有很多正样本,这与自监督对比学习不同,后者通常只使用单一正样本
  • 允许每一个锚点有多个正样本是对比学习在完全监督设置下的一项创新。
  • 相对于交叉熵损失更稳健

相关工作

  • 相对于交叉熵损失,该损失对于超参数的选择更加不敏感。这意味着在使用该损失时,调整超参数的需求相对较小,更容易在不同的任务和设置中获得良好的性能。
  • 这句话指出了交叉熵损失的缺点,主要包括对噪声的敏感性、对抗性示例的存在以及边际不足。
  • 这句话提到了自监督学习领域的最新进展。
  • 三元组损失是一种用于监督学习的损失函数。在这种损失函数中,每个锚点都与一个正样本和一个负样本配对。正样本通常来自同一类别,而负样本则来自其他类别。这种损失的目标是使得锚点与正样本之间的距离尽可能小,而与负样本之间的距离尽可能大,从而促使模型学到更好的表示。在提供的链接中,可能包含了更详细的关于三元组损失的信息。
  • 自监督对比损失是一种损失函数,其使用方式类似于三元组损失,但有一些关键的区别。在自监督对比损失中,每个锚点样本仍然有一个对应的正样本,但与三元组损失不同的是,每个锚点会使用许多负样本对。这些负样本对通常是通过在整个批次中随机选择样本来形成的。
  • 这种损失函数的目标是通过拉近同一类别样本的表示,并将不同类别样本的表示推开,从而在嵌入空间中形成更好的聚类。这通过在训练时将每个锚点与来自同一类别和其他类别的样本进行对比来实现。这种对比损失的设计使得模型能够学到数据的更有意义的表示,而无需使用显式的类别标签。

Method

  • 对于给定的数据批次,首先对每个样本进行两次数据增强,从而获得两个增强版本的批次。这两个副本表示数据的两个不同视图,以提供更多的信息。

  • 然后,这两个增强版本的批次都通过编码器网络进行前向传播,其中编码器网络将每个样本映射到一个2048维度的归一化嵌入。这个嵌入是表示样本在嵌入空间中的位置的向量。

  • 这个过程的关键点是,通过在两个增强版本上进行前向传播,模型能够学习到更具鲁棒性和泛化能力的特征表示,而无需使用显式的标签信息。这些学到的表示可以在后续的任务中进行微调或用于其他下游任务。

  • 步骤

    • 数据准备: 对于输入的数据批次,进行两次数据增强,生成两个批次的副本,以提高模型对数据的鲁棒性和泛化性能。

    • 编码器网络: 通过编码器网络,对两个副本进行前向传播,得到每个样本的2048维度的归一化嵌入,形成在高维空间中的紧凑表示。

    • 投影网络: 在训练阶段,通过投影网络对表示进行下一步传播,提炼特征以更好地支持监督学习任务。在推断阶段,投影网络被丢弃。

    • 损失计算: 在投影网络的输出上设置一个监督对比损失,该损失用于引导模型学习有助于分类的特征表示。

    • 分类器训练: 为了在具体的分类任务中使用训练好的模型,冻结表示后,训练一个线性分类器,并使用交叉熵损失来优化分类器,以实现更好的分类性能。

  • 自监督对比学习: 通过自监督对比学习方式,学习数据的表示。这是通过在数据批次上引入对比损失,使得相同样本的不同视图之间更加相似,不同样本之间更加分散,从而促使模型学到更具有区分性和泛化性的表示。

  • 监督微调: 利用自监督学习得到的表示,通过监督学习任务对这些表示进行微调。这是通过在冻结的表示上添加一个线性分类器,使用监督学习的交叉熵损失来微调模型,使其适应具体的分类目标。这个过程在冻结了大部分网络参数的情况下,只更新分类器的参数。

  • 一组N个随机采样的样本/标签对(N个数据点,每个数据点包括一个样本和相应的标签)。训练时的相应批次包含2N对。这意味着每个样本会有两个随机增强版本,即每个数据点有两个样本。记作 x2k 和 x2k-1,它们是 xk 的两个随机增强版本。这里 k 表示样本的索引

在这里插入图片描述

  • 对于监督学习,原始的自监督对比损失公式无法处理由于存在标签而已知多个样本属于同一类的情况。在监督学习中,通常会有多个样本属于相同的类别,而原始的自监督对比损失是为自监督学习设计的,其中每个样本只有一个正样本。

  • 在监督学习中,正样本通常来自同一类别,而负样本来自其他类别。由于多个正样本可能属于同一类别,原始自监督对比损失需要进行适当修改以处理这种情况。文章进一步介绍了两种修改方案,即公式2和公式3,来适应监督学习中存在多个正样本的情况。这些修改允许每个锚点有多个正样本,从而更好地处理监督学习任务

  • 这段话指出在监督学习的背景下,需要修改损失函数以适应已知同一类别的多个样本的情况。在原始的自监督对比损失中,损失函数假定每个锚点只有一个正样本。然而,在监督学习中,由于已知同一类别的多个样本,需要对损失函数进行修改,以允许每个锚点有多个正样本。

  • 监督对比学习与三元组损失[53]密切相关,三元组损失是监督学习中广泛使用的损失函数之一。在附录中,我们展示了当使用一个正样本和一个负样本时,三元组损失是对比损失的一个特例。当使用多个负样本时,我们表明SupCon损失等同于N-pairs损失[45]。

    1. AutoAugment:自动搜索数据增强策略的方法,通过在训练集上进行搜索。属于自适应的数据增强方法
  • RandAugment:随机数据增强方法,通过在每一个训练批次中应用不同的增强,增加对多样性和不同视角的学习

  • SimAugment:SimAugment是一种基于相似性的数据增强方法,他利用多个随即增强操作堆叠在一起,创建一个更强大和多样性的增强策略

  • 泛化性能: SupCon 在不同数据集和任务上都表现得更好,具有更强的泛化能力。

  • 最先进准确度: 使用 AutoAugment 策略,该方法取得了新的最先进的准确度。

  • 对比学习与数据增强结合: 结合对比学习和先进的数据增强技术可能产生更好的性能,这强调了方法的综合效果。

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

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

相关文章

键盘快捷键工具Keyboard Maestro mac中文版介绍

Keyboard Maestro mac是一款键盘快捷键工具,它可以帮助用户通过自定义快捷键来快速完成各种操作,提高工作效率。Keyboard Maestro支持多种快捷键组合,包括单键、双键、三键、四键组合等,用户可以根据自己的习惯进行设置。此外&…

Ribbon

在Spring Cloud中,Ribbon是一个用于客户端负载均衡的组件,它可以与其他服务发现组件(例如Eureka)集成,以提供更强大的负载均衡功能。Ribbon使得微服务架构中的客户端能够更加智能地调用其他服务的实例,从而…

各类语言真实性能比较列表

这篇文章是我所做或将要做的所有真实世界性能比较的索引。如果你对想要看到的其他真实世界案例有建议,请在评论中添加。 用例 1 — JWT 验证 & MySQL 查询 该用例包括: 从授权头部获取 JWT验证 JWT 并从声明中获取电子邮件使用电子邮件执行 MySQL…

Linux下socket例子(c/c++)

Linux中的socket 服务端逻辑客户端逻辑c实现c实现服务端持续接收请求多线程实现 UDP实现 参考 服务端逻辑 创建service_sock创建sockaddr_in结构体变量serv_addr,写明端口和ip将socket和结构体绑定监听socket创建客户端sockaddr_in结构体变量clnt_addr接收客户端请…

【计算机网络笔记】路由算法之链路状态路由算法

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

Using Set Processing Effectively 有效地使用集合处理

Using Set Processing Effectively 有效地使用集合处理 The information in the topics that follow applies if you are developing new or upgrading older Application Engine programs to adhere to a set-based model. 如果要开发新的应用程序引擎程序或升级旧的应用程序…

k8s部署elk8 直接通过logstash获取日志文件方式

配置文件 kibana [rootnode101 config]# cat kibana.yml # # ** THIS IS AN AUTO-GENERATED FILE ** ## Default Kibana configuration for docker target server.host: "0.0.0.0" server.shutdownTimeout: "5s" elasticsearch.hosts: [ "http:/…

CSS中4种关系选择器

元素(标签)之间的关系 父元素:直接包含子元素的元素 子元素:直接被父元素包含的元素 祖先元素:直接或间接包含后代元素的元素,父元素也是祖先元素 后代元素:直接或间接被祖先元素包含的元素,子元素也是后代…

C++二分算法:找到最接近目标值的函数值

本文涉及的基础知识点 二分查找算法合集 题目 Winston 构造了一个如上所示的函数 func 。他有一个整数数组 arr 和一个整数 target ,他想找到让 |func(arr, l, r) - target| 最小的 l 和 r 。 请你返回 |func(arr, l, r) - target| 的最小值。 请注意&#xff0c…

基于 Junit 的接口自动化测试框架实现!

分层的自动化测试 5~10 年前,我们接触的自动化测试更关注的是 UI 层的自动化测试,Mercury 的 WinRunner/QTP 是那个时代商业性自动化测试产品的典型代表,在那个时代大家单纯想的都是能用一个自动化操作的工具替代人力的点击,商业…

【教3妹学编辑-mysql】详解数据库三大范式

什么是范式 简单地理解就是:数据库设计时遵循的规范 三大范式 数据库三大范式包含:1、第一范式(1NF);2、第二范式(2NF);3、第三范式(3NF)。其中,第一范式(1NF)的要求是属性不可分割,第二范式(2NF)的要求是…

Java基础-----正则表达式

文章目录 1.简介2.目的3.学习网站4.常用匹配字符5.String类中用到正则表达式的方法 1.简介 又叫做规则表达式。是一种文本模式,包括普通字符和特殊字符(元字符)。正则使用单个字符来描述、匹配一系列某个句法规则的字符串,通常用…

[架构之路-247]:目标系统 - 设计方法 - 软件工程 - 结构化方法的基本思想、本质、特点以及在软件开发、在生活中的应用

目录 前言: 一、什么是非结构化方法 1.1 什么是非结构化方法 1.2 非结构化方法的适用场合 二、什么是结构化方法 1.1 结构化方法诞生的背景:软件规模发展:大规模、复杂系统的需要 1.2 概述 1.3 主要特点与核心思想 三、结构化方法在…

【Web】Flask|Jinja2 SSTI

目录 ①[NISACTF 2022]is secret ②[HNCTF 2022 WEEK2]ez_SSTI ③[GDOUCTF 2023] ④[NCTF 2018]flask真香 ⑤[安洵杯 2020]Normal SSTI ⑥[HNCTF 2022 WEEK3]ssssti ⑦[MoeCTF 2021]地狱通讯 ①[NISACTF 2022]is secret dirsearch扫出/secret 明示get传一个secret ?…

Wireshark抓包:理解TCP三次握手和四次挥手过程

TCP是一种面向连接、端到端可靠的协议,它被设计用于在互联网上传输数据和确保成功传递数据和消息。本节来介绍一下TCP中的三次握手和四次挥手。 文章目录 1 TCP头部格式2 wireshark抓包分析2.1 SEQ和ACK2.2 三次握手2.3 四次挥手 3 程序 1 TCP头部格式 TCP头部占据…

如何进行数据结构的设计和实现?

数据结构的设计和实现 数据结构是计算机科学中至关重要的概念之一,它涉及如何组织和存储数据以便有效地进行操作。在软件开发中,数据结构的选择和设计直接影响了程序的性能、可维护性和可扩展性。在这篇文章中,我们将深入探讨如何进行数据结…

【FPGA】Verilog:实现 RS 触发器 | Flip-Flop | 使用 NOR 的 RS 触发器 | 使用 NAND 的 RS 触发器

目录 0x00 RS 触发器(RS Flip-Flop) 0x01 实现 RS 触发器 0x02 使用 NOR 的 RS 触发器 0x03 使用 NAND 的 RS 触发器 0x00 RS 触发器(RS Flip-Flop) 触发器(Flip-Flop)是一种带有时钟的二进制存储设备…

C/C++多级指针与多维数组

使用指针访问数组 指针类型的加减运算可以使指针内保存的首地址移动。 指针类型加n后。首地址向后移动 n * 步长 字节。 指针类型减n后。首地址向前移动 n * 步长 字节。 步长为指针所指向的类型所占空间大小。 例如: int *p (int *)100;p 1,结果为首…

Vue 2.0的源码构建

Vue.js 源码是基于 Rollup 构建的,它的构建相关配置都在 scripts 目录下。 1. 构建脚本 通常一个基于 NPM 托管的项目都会有一个 package.json 文件,它是对项目的描述文件,它的内容实际上是一个标准的 JSON 对象。 我们通常会配置 script …

Autox.js和Auto.js4.1.1手机编辑器不好用我自己写了一个编辑器

功能有 撤销 重做 格式化 跳转关键词 下面展示一些 内联代码片。 "ui"; ui.layout( <drawer id"drawer"><vertical><appbar><toolbar id"toolbar"title""h"20"/></appbar><horizontal b…