对比损失Contrastive Loss(CVPR 2006)原理解析

news2024/10/7 8:23:05

paper:http://yann.lecun.com/exdb/publis/pdf/hadsell-chopra-lecun-06.pdf

 

本文提出的对比损失contrastive loss被广泛应用于自监督模型中,但最初对比损失是作为一个特征降维方法而提出的。 

摘要

降维是学习一种映射关系,通过这种映射关系,将一组高维输入点映射到一个低维流形上,输入空间中的“相似”点映射到流形上后对应点之间的距离比较近。大多数现有的降维方法存在两个缺点,一是它们中的大多数都依赖于输入空间中一个有意义并且可计算的距离度量,二是它们没有计算一个可以精确地映射新的输入样本的“函数”,这些新的输入样本和训练样本的关系是未知的。

本文提出了一种通过学习不变映射的降维方法(Dimensionality Reduction by Learning an Invariant Mapping, DrLIM)来学习一个全局相关非线性映射函数,从而将数据均匀地映射到输出流形。这种学习仅依赖于邻域关系而不需要输入空间中的任何距离度量。通过实验证明,该方法可以学习到对输入某些变换的不变映射。

现有方法存在的问题

当前大多数降维方法存在两点不足,一是它们无法生成一个函数或映射可以应用于与训练样本关系未知的新样本,二是许多方法都假设输入空间中存在一个有意义并且可计算的距离度量。

当前方法的另一个局限性是,它们倾向于在输出空间中聚类点,有时点的分布过于密集,可能会被认为是退化解。而大家更希望找到一个被样本均匀覆盖的流形。

本文的创新点

本文提出的Dimensionality Reduction by Learning an Invariant Mapping (DrLIM),为上述问题提供了一种解决方法。DrLIM是一种学习全局相关非线性函数的方法,该函数将数据映射到一个低维流形。该方法具有四个基本特征:

  • 它只需要训练样本之间的邻域关系。这些关系可以来自先验知识或手动标记,并且独立于任何距离度量。
  • 它可以学习具有对输入的复杂非线性变化的不变性的函数,如照明变化和几何畸变。
  • 学习到的函数在没有先验知识的情况下,可以用来映射在训练过程中没有见过的新样本。
  • 由函数生成的映射在某种意义上在输出空间中是“平滑的”和连贯的。

方法介绍

本文提出了一种新的损失函数 - 对比损失函数contrastive loss,通过拉进邻域样本之间的距离拉远非邻域样本之间距离的方式,来学习参数化函数 \(G_{W}\) 的参数 \(W\)。先验知识可以用来判断样本间的邻域关系。

考虑一组高维训练向量 \(\vec{X}_{i} \) 的集和 \(\mathcal{I}\),假设对于每个 \(\vec{X}_{i}\in \mathcal{I}\) 都有一组训练向量 \(S_{\vec{X}_{i} }\) 与之相似。这个相似向量集和可以通过先验知识得到,例如对distortion或temporal proximity的不变性,而不是基于一个简单的距离。一个有意义的映射会将输入空间中相似的向量映射成输出流形中距离相近的点,将不相似的向量映射为距离较远的点。本文提出的对比损失和传统的损失不同,之前的损失函数遍历所有样本计算和对应GT之间的损失然后求和,而对比损失是计算两两样本对之间的损失。假设 \(\vec{X}_{1},\vec{X}_{2}\in \mathcal{I}  \) 是一对输入向量,\(Y\) 是分配给这对向量的二进制标签,如果 \(\vec{X}_{1},\vec{X}_{2}\) 是相似的,\(Y=1\),反之 \(Y=0\)。定义 \(\vec{X}_{1},\vec{X}_{2}\) 之间需要学习的参数化距离 \(D_{W}\) 为 \(G_{W}\) 的输出之间的欧式距离

为了简便,\(D_{W}(\vec{X}_{1},\vec{X}_{2})\) 记为 \(D_{W}\),对比损失的通用形式如下

其中 \((Y,\vec{X}_{1},\vec{X}_{2})^{i}\) 是第 \(i\) 对有标签样本,\(L_{S}\) 是一对相似样本点的偏损失函数,\(L_{D}\) 是一对不相似样本点的偏损失函数,\(P\) 是训练样本对的数量(它可能和样本数量的平方一样大)。

\(L_{S}\) 和 \(L_{D}\) 的设计必须使最小化 \(L\) 等价于减小相似样本对的 \(D_{W}\),增大非相似样本对的 \(D_{W}\)。

损失函数的具体形式如下

其中 \(m>0\) 是一个边界值,它定义了 \(G_{W}(\vec{X})\) 周围的一个半径。不相似的样本对只有它们的距离在这个半径范围内时才会对损失函数有贡献,如下图所示。

 

其中关于不相似样本对的对比项 \(L_{D}\) 是至关重要的,只在所有的相似样本对集合上最小化 \(D_{W}(\vec{X}_{1},\vec{X}_{2})\) 通常会得到一个崩溃解,因为可以通过将 \(G_{W}\) 设为一个常数从而使 \(D_{W}\) 和损失 \(L\) 都变为0。

算法流程

 

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

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

相关文章

day10 线程池及gdb调试多线程

目录 线程池的概念 概念: 必要性: 线程池的基本结构: 线程池的实现 完整代码 线程的GDB调试 线程池的概念 概念: 通俗的讲就是一个线程的池子,可以循环的完成任务的一组线程集合; 必要性&#xff…

【软件工程】为什么要选择软件工程专业?

个人主页:【😊个人主页】 文章目录前言软件工程💻💻💻就业岗位👨‍💻👨‍💻👨‍💻就业前景🛩️🛩️🛩️工作环…

趣谈之什么是 API 货币化?

本文介绍了 API 货币化和 APISIX 实现 API 货币化方法。 作者刘维,API7.ai 技术工程师,Apache APISIX Contributor 原文链接 什么是 API 货币化 想象你开发并部署了一个服务,能够搜集你所在城市所有超市的打折和优惠信息,其他的…

C生万物 | 校招热门考点 —— 结构体内存对齐

文章目录一、前言结构体偏移量计算:offsetof二、规则介绍例题的分解与细说三、习题演练1、练习①2、练习②四、为什么存在内存对齐?1、平台原因(移植原因)2、性能原因五、如何修改默认对齐数六、实战演练✍一道百度笔试题: offsetof 宏的实现&#x1f4…

深度学习基础篇之深度神经网络(DNN)

神经网络不应该看做是一个算法,应该看做是一个特征挖掘方法。在实际的业界发展过程中,数据的作用往往大于模型,当我们把数据的隐藏特征提取出来之后,用很简单的模型也能预测的很好。 神经网络模型由生物神经中得到启发。在生物神…

【Linux】Makefile的简述

目录 前言: 一、Makefile的规则 二、Makefile的函数语法 (1)通配符pattern ​(2) 删除clean ​(3) 立即变量、延时变量 (4) Makefile常用函数 3-1.Makefile要达到…

第11章_常用类和基础API

第11章_常用类和基础API 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 本章专题与脉络 1. 字符串相关类之不可变字符序列:String 1.1 String的特性 java.lang.String 类代表字符串…

vue之--使用TypeScript

搭配 TypeScript 使用 Vue​ 像 TypeScript 这样的类型系统可以在编译时通过静态分析检测出很多常见错误。这减少了生产环境中的运行时错误,也让我们在重构大型项目的时候更有信心。通过 IDE 中基于类型的自动补全,TypeScript 还改善了开发体验和效率。…

2023年美赛春季赛 Y题详细思路

由于今年各种各样的原因,导致美赛头一次,据说也将是最后一次,临时调整,加设春季赛。这对于急需建模奖项的大家来说是一个很好的机会。无论怎样的原因,今年美赛我们可能有所遗憾。但,春季赛也许就是弥补遗憾…

HTML4.1表单标签

input(登录、注册、搜索功能) type属性值类型称号展示类型text文本框placeholder占位符password密码框placeholder占位符radio单选框name checked(默认选中)同类型单选checkbox复选框 checked file 文件选择multiple多文件选择s…

分类预测 | MATLAB实现CNN-GRU-Attention多输入分类预测

分类预测 | MATLAB实现CNN-GRU-Attention多输入分类预测 目录分类预测 | MATLAB实现CNN-GRU-Attention多输入分类预测分类效果模型描述程序设计参考资料分类效果 模型描述 Matlab实现CNN-GRU-Attention多变量分类预测 1.data为数据集,格式为excel,12个输…

集合-LinkedList

LinkedList LinkedList的概述 LinkedList的底层使用双向链表实现。 链表是一种线性数据结构,其中每个元素都是一个单独的对象,包含一个指向列表中下一个节点的引用。 它可以用于实现各种抽象数据类型,例如列表、堆栈、队列等。 LinkedLis…

安装Nginx——docker安装

使用docker安装Nginx 1.开启docker systemctl start docker docker search nginx[rootlocalhost ~]# systemctl start docker //开启docker [rootlocalhost ~]# docker search nginx //搜素镜像 2. docker pull nginxdocker imagesdocker run -…

如何将录音转成文字?

在现代社会中,随着语音技术的不断发展和普及,将录音转换为文字变得越来越容易。无论是为了记录会议、面试、讲座、采访,还是为了记录个人的思考和想法,将录音转换为文字是一种方便快捷的方式。本文将介绍几种将录音转换为文字的方…

计算机系统结构教程-第七章-储存系统笔记(1)

7.1储存系统的层次结构 概述 理想的储存器:容量大、速度快、价格低。 但以上三种要求在实际应用中是相互矛盾: (1)速度快,价格高。 (2)容量大,价格低。 (3&#xf…

ESLint检测VUE和JSON文件

ESLint 默认只支持检测JS文件中的文件,无法识别其它类型的文件,如果需要检测其它类型的文件就需要安装并指定对应的处理器,有点类似webpack的loader 处理vue文件 使用ESLint默认的处理器处理Vue文件大多数情况下会收到一个这样的错误。 Pa…

贪心算法

章节目录:一、算法介绍二、应用场景-集合覆盖问题2.1 问题引出2.2 思路分析2.3 代码示例三、结束语一、算法介绍 贪心算法(greedy algorithm ,又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的…

Vue04_事件绑定_methods

v-on:事件名"表达式" methods: 定义回调函数 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><div id"app"><!--eve…

12、Qt生成dll方式-libs方式使用

Qt创建dll&#xff0c;使用LIBS -L$PWD -lxxx的方式调用dll 一、创建项目 1、打开Qt->新建文件->其他项目->Empty qmake Project->Choose... 2、输入项目名->选择位置->下一步 3、MinGW->下一步 4、默认&#xff0c;完成 5、在.pro中添加TEMPLATE sub…

C51单片机按键控制流水灯模式(定时器版本)以及定时器时钟

上篇文章我们学了关于定时器的三大组成部分及许多寄存器的概念问题&#xff0c;这篇文章我们就要开始讲解实操部分。 首先&#xff0c;我们先来看看本文最后写成的代码&#xff1a; 以上三张是代码的主函数&#xff0c;此外&#xff0c;代码中还需用到的独立按键检测代码在下面…