跨模态检索论文阅读:Dissecting Deep Metric Learning Losses for Image-Text Retrieval(GOAL)

news2024/11/27 18:45:01

Dissecting Deep Metric Learning Losses for Image-Text Retrieval
剖析图像文本检索中的深度度量学习损失
2022.10

视觉语义嵌入(VSE)是图像-文本检索中的一种流行的应用方法,它通过学习图像和语言模式之间的联合嵌入空间来保留语义的相似性。三元组损失与硬负值的挖掘已经成为大多数VSE方法的事实目标。

图像领域深度度量学习(DML)产生了新的损失函数,超越了三元损失。 尽管在设计基于梯度运动的损失方面做了一些尝试,但大多数DML损失是在嵌入空间中根据经验定义的。

本文提出了一个新的基于梯度的目标分析框架,即GOAL,以系统地分析现有DML函数中梯度的组合和重新加权,而不是直接应用这些损失函数,这可能导致模型参数的次优梯度更新。在这个分析框架的帮助下,我们进一步提出了梯度空间中新的目标系列,探索不同的梯度组合。在梯度不能与有效的损失函数积分的情况下,我们实现了我们提出的目标,使它们在梯度空间而不是在嵌入空间的损失上直接运作。 综合实验表明,我们的新目标在不同的视觉/文本特征和模型框架中都比基线有持续的性能提高。 我们还展示了GOAL框架的通用性,将其扩展到其他使用三元损失的模型,包括具有严重跨模式交互的视觉-语言模型,并在COCO和Flick30K的图像-文本检索任务中取得了最先进的结果。

简介

视觉语义嵌入(VSE)是在图像和自然语言之间建立联系的主要课题之一。它旨在将图像和它们的描述性文本信息映射到一个联合空间中,这样,一对相关的图像和文本应该被映射到彼此附近,而一对不相关的图像和文本应该被映射到彼此远处。本文专注于图像-文本匹配和检索任务的视觉-语义嵌入,但我们的方法可以推广到其他使用三重损失系列的图像-文本检索模型(如X-VLM)。

一个VSE模型通常由图像和文本的特征提取器、特征聚合器和训练期间的目标函数组成。尽管VSE在特征提取器和特征聚合器方面取得了重大进展,但人们对训练模型的损失函数关注较少。

基于铰链的三联体排名损失与硬负抽样已经成为许多VSE方法的事实训练目标。许多损失函数被提出来以提高图像嵌入任务的训练性能,显示出三重损失对于一般的度量学习来说不是最佳的。早期的损失,如triplet loss和contrastive loss的定义是,在嵌入空间中,正对应该接近,而负对应该分开。然而,这种定义的损失函数可能不会导致理想的特征,这可能会明确地影响模型参数的更新。

Triplet loss是一种常用的深度度量学习损失函数,用于学习样本间的距离度量,其基本思想是使得同类样本之间的距离尽可能小,异类样本之间的距离尽可能大。
具体来说,在训练过程中,Triplet loss需要输入一个样本三元组(anchor,positive,negative),其中anchor表示锚样本,positive表示与anchor同类的样本,negative表示与anchor不同类的样本。Triplet loss的目标就是最小化锚样本和同类样本之间的距离,同时最大化锚样本和不同类样本之间的距离。

本文提出了基于梯度的目标分析框架,即GOAL,一个新的基于梯度的VSE问题分析框架。我们首先提出了一个新的梯度框架,以剖析梯度层面的损失,并提取其关键梯度元素。然后,我们探索了一种新的训练思路,即在每个训练步骤中直接定义梯度来更新模型,而不是定义损失函数,如图1所示。这个新的框架允许我们简单地将DML损失中的关键梯度元素结合起来,形成一个新的梯度家族,避免了将梯度整合到损失函数中的问题。最后,新的梯度继续改善了现有的VSE在图像文本检索任务上的表现。

在这里插入图片描述
图1。为了实现所需的视觉语义嵌入空间,一种常见的方法是设计一个损失函数,该函数可以在PyTorch或TensorFlow等深度学习平台上计算。这些平台上的自动梯度机制自动计算梯度以更新模型参数,形成所需的嵌入空间。在实践中,视觉语义嵌入的目标是优化从图像和文本中提取的特征点的聚类或分离,而损失函数在某种程度上是实现该目标的间接方法,而梯度更直接地影响嵌入空间的更新。我们提出了一种直接设计梯度来训练模型的方法。

本文贡献

  • 提出了一个通用框架GOAL来全面分析现有深度度量学习损失函数的梯度更新,并应用这个框架来帮助寻找VSE问题的更好目标。
  • 提出了一种新的方法,通过用梯度目标家族来优化模型,而不是使用损失函数,直接处理图像-文本检索任务。
  • 展示了对现有方法的持续改进,在COCO数据集的图像-文本检索任务中取得了最先进的结果。

相关工作

用于图像-文本匹配的视觉语义嵌入:
VSE++是一种基本的VSE模式,其中视觉和文本嵌入是单独训练的,然后在投射到一个共享空间后用AvgPool进行聚合,之后通过硬负挖掘的三倍损失来联合优化。 与使用特征图的局部网格作为视觉特征的主流相比,自下而上的注意力被引入到学习图像-文本匹配的视觉语义内联,这通常是通过堆叠预先训练好的物体检测器的区域表征来实现的。通用集合运算符(GPO)来学习最佳集合策略,它优于具有复杂图像聚合器的方法。受语言模型大规模预训练的成功启发,最近出现了一种趋势,即在大规模图像-文本对上进行任务无关的视觉-语言预训练(VLP),以获得通用的表达,然后在特定任务的数据和损失上进行微调,以在下游任务(包括图像-文本检索)中获得最先进的结果。然而,与我们提出的方法相比,流行的方法选择优化三联体损失作为图像-文本匹配任务的事实目标。 在本文中,我们将努力重新审视为视觉语义嵌入寻找更好的训练目标的问题。

深度度量学习在极端的分类环境中很有用,比如细粒度识别。其目的是训练网络将语义相关的图像映射到附近的位置,将不相关的图像映射到嵌入空间中的远处位置。有许多损失函数被提出来解决深度度量学习问题。三元损失函数及其变体,如圆圈损失,形成一个包含锚、正和负实例的三元组,其中锚和正实例共享相同的标签,而锚和负实例共享不同的标签。成对的损失函数,如对比性损失、二项式偏差损失、解除结构损失和多重相似性损失,当一对具有相同标签的实例之间的距离很大时,以及一对具有不同标签的实例之间的距离很小时,就会受到惩罚。所有这些损失函数都鼓励正面图像对的距离要小于负面图像对的距离。由于DML的训练目标与VSE问题相似,本文借用DML的这些损失设计思想来改进VSE问题。

梯度修改:
最近在DML方面的工作,如Multi-Similarity Loss和Circle Loss,从标准的三元损失公式开始,调整损失函数的梯度,通过非常简单的代码修改就可以得到明显的改进。这些工作都找到了明确的损失函数,其梯度是理想的。 其他的策略是从一个理想的梯度加权函数开始,然后整合理想的梯度,得出一个带有适当属性的梯度的损失函数。这通常仅限于简单的加权策略,如简单线性形式和当三联体包含硬负数时对正数的简单梯度去除,因为它可能难以找到梯度与复杂加权策略一致的损失函数。 最相关的工作是P2Sgrad,它分析了基于边际的softmax损失家族中的梯度,并直接用余弦相似度修改梯度以达到更好的优化效果。与P2Sgrad相比,我们的工作侧重于三联体损失及其变体损失函数。
本文的框架直接探索了所需梯度更新的空间。通过不局限于用适当的梯度去除损失函数,我们可以更明确地在实验中剖析梯度的不同部分的影响。此外,我们还可以将实验中最有用的梯度项重新组合成一种梯度条件,稍微改变现有的算法以提高性能。

基于梯度的目标设计框架工作

我们为一批图像和文本如何影响网络定义了一系列的术语。 设X是一批输入图像,Y是一批输入文本,x是用图像提取器提取的图像的L2标准化特征向量,y是用文本提取器提取的文本的L2标准化特征向量,l是这批图像的损失值、 θ是图像提取器的参数,φ是文本提取器的参数,η是学习率,fθ(·)是图像提取器的映射函数,gφ(·)是文本提取器的映射函数,L(·)是损失函数。在前向训练步骤中,表达式为:
在这里插入图片描述
这两个方程强调,提取器参数的更新与两组导数项相结合。第一组导数项∂l/∂x和∂l/∂y代表了图像和文本嵌入特征的变化对损失的影响,这也是本工作中最详细探讨的术语。第二组导数项∂x/∂θ和∂y/∂φ表示模型的参数变化如何影响嵌入特征。由于导数链规则的存在,在具有多层的现代深度网络中,这个项总是可以用每层的多个项的乘法来扩展,这在工作中没有讨论。

第一组导数项总是受到损失函数的分析形式的制约。例如,由于提升结构损失和二项式偏差损失的指数形式,它们的导数也包含一个指数项。这样的项可能会导致梯度不稳定,这也是损失函数的设计最多只能隐含地控制提取器的学习行为的一个例子。

通过最新的深度学习平台,如Pytorch,它支持前向模块的定制梯度反向计算,而不是依赖于损失的导数,我们可以明确地定义基于所提出的GOAL框架的梯度更新,以直接影响提取器的学习行为。 在下面的讨论中,我们重点讨论了DML文献中许多三重损失函数中第一组术语的特殊形式,然后提出直接定义模型训练的第一组术语。

Gradient Components

给定一对图像和文本特征x和y,当图像特征x被当作锚点时,我们表示其在文本批次Y中挖掘的文本硬负面特征y′;当文本特征y被当作锚点时,我们表示其在图像批次X中挖掘的图像硬负面特征x′。然后,我们可以得到两个三联体(x, y, y′)和(y, x, x′)。在第一个三联体中,Sx,y = xTy和Sx,y′ = xTy′是作为归一化图像特征和归一化文本特征的正负对的点积计算的余弦相似度。类似的余弦相似度是为第二个三联体计算的,Sy,x = yTx和Sy,x′ = yTx′。最后,这些余弦相似度被输入一个对称的三联体损失函数l = L(Sx,y, Sx,y′) + L(Sy,x, Sy,x′)。

与图像和文本特征有关的梯度是:
在这里插入图片描述
三联体损失及其变体的区别主要来自标量。在DML文献中,主要有两组标量形式:与三联体的正负对相似性都有关的标量,我们表示为(Triplet Weight T ),与三联体的正或负对相似性有关的标量,我们表示为(Pair Weight P )。

Triplet Weights

对于标准的三联体损失函数与硬性负向开采,梯度可推导为:在这里插入图片描述

Pair Weight

除了三联体权重,许多 DML 工作也提出了损失函数中的配对权重。为了详细讨论对权重P,我们表示正数对的权重为P+,负数对的权重为P-。让一个恒定的缩放参数作为公平比较的基线。在这种情况下,两对权重都设置为常数1。
最近的工作认为,当负数对彼此接近时,负数对的权重应该很大。否则,正如[36]中提到的,对DML的优化任务会很快收敛到一个糟糕的局部最小值。Circle loss中的解决方案是应用线性配对权重Plin:对于负的配对,如果相似度大,权重就大,如果相似度小,权重就小;对于正的配对,如果相似度小,权重就大,如果相似度大就小:

Combinations of Gradient Components

在这一节中,我们从DML的三元权重和配对权重方面剖析了许多以前的损失函数。表1显示了如何将Gradient Components的不同组合映射到现有的损失函数中。除了这些组合之外,其余标注为 "新 "的组合都是未曾探索过的。如果训练需要损失函数,这些gradient component组合就很难被探索,如果它们不是可整合的,就几乎不可能的。然而,在我们的GOAL框架下,我们能够用这些梯度训练一个模型。
在这里插入图片描述
表1. 将三联体权重和成对权重的不同梯度组合映射到现有的DML损失函数中。在我们的GOAL框架下,标记为 "新 "的组合是可以被探索的

实验

我们直接用梯度目标取代三个开源作品中的损失模块: VSE++、VSE和X-VLM,并保持所有其他训练设置与他们的原始工作相同。我们在前面测试了这三个作品中由三联体权重和成对权重组合形成的所有可能梯度目标。每个目标运行3次,以消除来自批次随机抽样和联合空间映射层随机初始化的随机性造成的影响。我们报告了两种常见的检索结果,即图像到文本检索和文本到图像检索,用Recall@1的平均值和标准偏差作为两个数据集的衡量标准。

我们在最新的最先进的方法X-VLM[40]中应用了相同的梯度目标,在下游微调中替换了其对比性损失项。这个结果被称为 “X-VLM ours”。我们继续在MSCOCO 5K测试和Flickr 1K测试中推动最先进的结果的边界。
在这里插入图片描述

表6. 我们在MS-COCO 5K和Flickr 1K测试中使用所提出的GOAL框架设计的新型损失函数进行的最先进的图像-文本检索结果

结论

我们提供了一个新的框架GOAL,用从深度度量学习损失函数中剖析出来的梯度成分组合来训练图像-文本匹配任务。在实践中,所提出的梯度目标可以很容易地应用于替代损失函数的训练。对三重权重和一对权重的详尽组合进行的实验表明,三重权重和一对权重对检索性能都有各自的影响,一般来说,Tcir和Psig-ms的组合在图像-文本检索中取得了最佳性能。这个框架有助于找到更好的梯度目标,这些梯度目标在这一领域从未被探索过,并在多种既定方法上提供了一致的检索改进,包括取得新的最先进的结果。

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

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

相关文章

2023.06.14 QT day3

用QT实现的简单文本编辑器 头文件widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton> #include <QTextEdit> #include <QFont> #include <QFontDialog> #include <QColor> #include <QColorDialo…

C语言符合类型之结构篇(结构指针)

结构相关知识总结 什么是结构&#xff1f;结构的声明与简单使用结构的初始化结构中成员变量的访问结构的初始化器结构数组结构数组的声明结构数组的成员标识 结构的嵌套结构指针结构作为参数在函数中传递将结构成员作为参数进行传递将结构地址(指向结构的指针)作为参数进行传递…

leetcode 279.完全平方数

题目描述 给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#xff0c;其值等于一个整数自乘的积。例如&#xff0c;1、4、9 和 16 都是完全平方数&#xff0c;而 3 和 11 …

cmu db p4

在lab4中实现一个基于 2PL 的并发控制方式&#xff0c;自动为并发事务执行加锁解锁&#xff0c;提供可串行化能力并实现可重复读、读已提交、读未提交三种隔离度 Lock Manager&#xff1a;锁管理器&#xff0c;利用 2PL 实现并发控制。支持 REPEATABLE_READ、READ_COMMITTED 和…

我五年经验,面试官: “不,你是把一年的工作经验用了五年”

最近看到很多软件测试由于公司裁员而需要重新求职的。他们普遍具有4年甚至更长的工作经验。但求职结果往往都不太理想。 我在与部分软件测试求职者交谈的过程中发现&#xff0c;很多人的工作思路不清晰&#xff0c;技能不扎实&#xff0c;没有持续学习的习惯&#xff0c;但对于…

编程(41) ----------线程池

本篇主要提及线程池的相关内容. 依旧是从最基础的含义开始. 什么是线程池? 在计算机中池的是一个很大的概念, 分为很多种. 但无论是什么池, 其核心都是存取相关数据. 线程池也不例外, 即存放线程的池. 其存在意义与线程异曲同工. 线程产生并使用是因为进程太"重"了…

Andriod开发 ViewPager PageTabStrip

1. ViewPager ViewPager常见于APP的引导页或者产品介绍&#xff0c;左右滑动展示不同页面。 ViewPager用PagerAdapter来绑定数据。PagerAdapter是个抽象类&#xff0c;所以需要写一个子类来实现它。 xml: <?xml version"1.0" encoding"utf-8"?> …

设计模式(十五):行为型之命令模式

设计模式系列文章 设计模式(一)&#xff1a;创建型之单例模式 设计模式(二、三)&#xff1a;创建型之工厂方法和抽象工厂模式 设计模式(四)&#xff1a;创建型之原型模式 设计模式(五)&#xff1a;创建型之建造者模式 设计模式(六)&#xff1a;结构型之代理模式 设计模式…

I2C与I3C

Improved Inter Integrated Circuit &#xff0c;是 MIPI&#xff08;Mobile Industry Processor Interface&#xff09;移动产业处理器接口联盟推出的改进型 i2c (Inter-Integrated Circuit Bus)总线接口。 I3C Introduction I3C &#xff1a;Improved Inter Integrated Cir…

CoreDX DDS应用开发指南(10)通信状态Communication Status

13 Communication Status通信状态 DDS基础设施跟踪与数据通信相关的许多状态和统计信息。应用程序可以选择了解这些状态和统计信息中的一些、全部或全部。 每个DDS实体都有其相关状态,如表13-1所示。 一些通信状态与可用于订阅应用程序的数据相关联。这些被称为读取…

Python发展5大方向,5个对应例子让你更清晰的认知Python!

目录 前言1.数据分析相关路线&#xff1a;案例&#xff1a;使用Python进行股票数据分析 2.人工智能学习路线&#xff1a;案例&#xff1a;使用Python进行图像识别 3.Web开发学习路线&#xff1a;案例&#xff1a;使用Python和Django开发博客网站 4.科学计算学习路线&#xff1a…

(小甲鱼python)类和对象(III)总结 类的继承---构造函数、重写、钻石继承、super()函数

一、基础复习 1.类和对象&#xff08;I&#xff09;总结 类的定义、self的用法 2.类的继承(II)、类的判断isinstance()、issubclass()、多重继承、类的组合 3.类和对象&#xff08;III&#xff09;总结 类的绑定&#xff0c;self&#xff0c;__dict__的妙用 二、类的继承 1.…

4.4.2 译码器

1. 学习基础知识&#xff1a;首先&#xff0c;我会了解译码器的基本概念、原理和应用。通过阅读教科书、参考资料或在线资源&#xff0c;我会学习译码器的工作原理、不同类型的译码器以及它们在电子系统中的应用场景。 2. 研究示例和练习题&#xff1a;为了更好地理解译码器的…

12、Nginx高级之高级模块(secure_link/secure_link_md5)

一、功能 防盗链&#xff1b; ngx_http_secure_link_module模块用于检查所请求链接的真实性&#xff0c;保护资源免受未经授权的访问&#xff0c;并限制链接寿命。 该模块提供两种可选的操作模式。 第一种模式由 secure_link_secret 指令启用&#xff0c;用于检查所请求链接的真…

【Python爬虫开发基础⑤】HTML概述与基本标签详解

专栏&#xff1a;python网络爬虫从基础到实战 欢迎订阅&#xff01;近期还会不断更新~ 往期推荐&#xff1a; 【Python爬虫开发基础①】Python基础&#xff08;变量及其命名规范&#xff09; 【Python爬虫开发基础②】Python基础&#xff08;正则表达式&#xff09; 【Python爬…

出境游复苏加速,距离“回到过去”还有多远?

6月14日一早&#xff0c;日本驻华大使馆一则“自6月19日起正式签发电子签证”的消息&#xff0c;引起了旅游圈的广泛关注。尽管其电子签方案因为流程繁琐甚至超过纸质签证&#xff0c;收获了一片吐槽之声&#xff0c;但游客对出境游的期待&#xff0c;却实打实地得到了展现。 …

solr快速上手:整合SolrJ实现客户端操作(九)

0. 引言 我们前面学习了solr的服务端基础操作&#xff0c;实际项目中我们还需要在客户端调用solr&#xff0c;就像调用数据库一样&#xff0c;我们可以基于solrJ来实现对solr的客户端操作 1. SolrJ简介 SolrJ 是 Solr官方提供的 Java 客户端库&#xff0c;主要用于与 Solr 服…

【Java学习记录-8】集合

集合 特点结构Collection概述创建方式常用方法遍历方式 List概述遍历方式特有方法 特点 提供一种存储空间可变的存储类型&#xff0c;存储的数据容量可以随时发生改变 结构 Collection 概述 是单列集合的顶层接口&#xff0c;它表示一组对象&#xff0c;这些对象也称为Coll…

好用的生产型企业ERP系统有哪些?

一、好用的生产型企业ERP系统有哪些&#xff1f; 目前而言&#xff0c;制造型想要部署一款好用的ERP系统&#xff0c;通常可以从2个方向来考虑&#xff1a; 第一方向&#xff1a;传统IT软硬件。比如&#xff1a;传统ERP厂商SAP&#xff1b; 第二方向&#xff1a;与新一代数字…

基于Java人才招聘网站系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…