首页 > 其他分享 >论文分享|KDD2024‘北航|平等对待每种语言:CCRK—1对K对比学习一致提升跨语言跨模态检索性能

论文分享|KDD2024‘北航|平等对待每种语言:CCRK—1对K对比学习一致提升跨语言跨模态检索性能

时间:2024-07-11 11:26:38浏览次数:11  
标签:模态 语言 KDD2024 CCRK CCR 图像 对齐 表征

推荐一篇笔者参与的KDD2024工作,面向多语言场景下的图文检索的CCRK。核心创新点可以用下图总结:

  1. 我们提出了一种新颖的1对K对比学习损失,同时解决了CCR任务中模态内错误传播模态间优化偏差问题,在训练中平等对待各种语言。
  2. 我们改进了现有的预训练中M-ITM和M-MLM任务的难负例采样,并结合1对K对比学习提出了一种新的CCR预训练模型
  3. 我们提出了一种新的评价指标MRV,计算不同语言图文互检rank的差异,旨在克服仅使用R@K评估CCR模型的不足,在评估中平等对待每种语言。

img

论文题目:Improving the Consistency in Cross-Lingual Cross-Modal Retrieval with 1-to-K Contrastive Learning

来源:KDD2024/北航/笔者参与的工作

方向:跨语言跨模态检索

开源地址:https://github.com/BUAADreamer/CCRK

摘要

跨语言跨模态检索Cross-lingual Cross-modal Retrieval CCR)是网页搜索中的一项重要任务,旨在同时突破模态和语言之间的障碍,实现多语言场景下图文检索单一模型。近年来,基于跨语言跨模态预训练的研究取得了显著进展,尤其是基于大规模数据对比学习的方法显著提高了检索任务的表现。

然而,这些方法直接遵循现有跨语言或跨模态领域的预训练方法,导致CCR中出现了两种不一致的问题:采用跨语言风格的方法会受到模态内错误传播的影响,导致整个数据集中不同语言的召回性能不一致;采用跨模态风格的方法会受到模态间优化方向偏差的影响,导致每个实例内不同语言的排序不一致,而这无法通过Recall@K反映出来

为了解决这些问题,我们提出了一种简单但有效一对多(1-to-K)对比学习方法,平等对待每种语言,消除错误传播和优化偏差。此外,我们提出了一种新的评估指标——平均排名方差(MRV),以反映每个实例内不同语言的排序不一致。在四个CCR数据集上的广泛实验表明,我们的方法在使用较小规模预训练数据的情况下,提高了召回率和MRV,达到了新的SOTA。

CCR的不一致性

CCR中的方法一般可以分为两类,一类是以英语作为锚点(比如CCLM ),一类以图像作为锚点(比如UC2 )。

以英语作为锚点的方法的不一致性

以英语作为锚点的方法分为两方面。一是利用英语图文对(比如CC3M),将图像表征英文标题表征对齐;二是利用平行语料(比如WikiPedia),将英语文本表征其他语言的文本表征对齐。损失都使用批内对比学习

对于这种方法来说,图像和英语的对齐本来就相对比较困难,图2(b)中展现出跨模态的损失下界的数量级远高于单模态损失下界。而CCR本来期望的理想情况是,将不同语言的表征和图像表征直接对齐,而利用英语作为锚点就会导致“中间商赚差价”,不同语言和一个中介进行对齐,产生模态内的误差传播问题。

img

以图像作为锚点的方法的不一致性

以图像作为锚点的方法则是将每种语言的标题表征分别与图像表征批内对比学习进行对齐。

如图2(b)所示,我们使用CCLM的图像和文本编码器对xFlickr&CO中的一些样本进行了TSNE可视化,然而可以看到,图像表征每种语言对应标题的文本表征的距离都非常不固定,分布非常杂乱,说明,图像可能会偏好性的和一些语言对齐,而和其他语言没有很好地对齐。因此,以图像为锚点的方法会带来模态间的优化偏差问题。

img

方法

1对K对比学习

为了解决不一致性的两个问题,我们首先使用Meta开源的m2m-100-lg 将UC2的6语言图文对预训练数据集翻译为10语言图文数据集,从而涵盖了常见的几个多语言图文检索数据集的所有语言。接下来,我们就可以使用以下新颖的1对K对比学习损失进行优化。

img

img

用我们讨论过程中画的一个简图来更直观理解一下,下图中的m就是文中的k。简单来说就是将最后的相似度矩阵改为n*(mn)和(mn)*n ,每一行中的黄色部分的标注为正例(图像和对应不同语言标题的表征相似度),蓝色部分标注为负例(图像和其他图像对应的不同语言标题表征相似度)。

img

预训练模型:CCRK

我们借鉴了ALBEF 架构,使用Dual-Encoder作为粗排Embedding模型,Cross-Encoder作为精排模型。

对于Embedding模型,我们使用1对K对比学习损失进行优化。

对于精排模型,我们对常见的多模态掩蔽语言模型任务(M-MLM)和多模态图像文本匹配任务(M-ITM),进行了改进。我们利用Embedding模型得到的图像和各语言标题的相似度,选取相似度最低的语言标题作为正例,计算如下的损失:

img

img

img

最后我们将提出的损失进行结合,就得到了我们的预训练模型

img

评价指标:Mean Rank Variation (MRV)

对于每个图像,我们先计算每种语言标题和图像在候选集中互相检索的排序,并计算图像和这些标题的平均排序。接下来我们就使用如下的公式,计算每种语言标题和图像互检排序与平均排序的方差。从而可以反映出,每种语言和图像的对齐是否一致

img

实验

主实验

我们使用两张A100 40G,在2M/3M两种预训练图文数据集设置,进行了预训练。下游任务的训练和CCLM使用的损失保持一致,均使用4张V100 32G。可以发现,我们的方法和使用同样规模数据集的模型中对比,在各个数据集常规的Recall@K指标和MRV指标上都取得了SOTA。这证明了我们方法的有效性。

需要注意的是,我们方法并不需要依赖于外部的平行语料,仅依赖于翻译得来的图文数据集,因此可扩展性较强,只需要使用mlm-100对更多语言进行翻译,再进行预训练就可以支持更多语言。

img

消融实验

我们对提出的创新点进行了消融实验,我们发现1对K对比学习对性能带来的提升最大。难负例采样策略也能够稳定地提升下游任务的性能。

img


大家好,我是NLP研究者BrownSearch,如果你觉得本文对你有帮助的话,不妨点赞收藏支持我的创作,您的正反馈是我持续更新的动力!如果想了解更多LLM/检索的知识,记得关注我!

这篇工作是笔者读硕士以来的第一篇收录工作,从22年开始,我主要负责写代码和做实验。实验持续了6个月,论文的投稿持续了一年,终于最终被KDD2024录用,整个过程磕磕绊绊,得益于老师和学长的渊博学识和悉心帮助,总的来说论文和实验比较扎实,我也学到了很多。这个过程也让我相信,老老实实把工作做扎实一定会有审稿人慧眼识珠,希望未来能够有更多论文发表。检索领域还是非常有趣且实用,欢迎感兴趣的读者批评指正!最后,再次宣传下CCRK的代码仓库,如果您觉得有所帮助,欢迎star

开源地址:https://github.com/BUAADreamer/CCRK

标签:模态,语言,KDD2024,CCRK,CCR,图像,对齐,表征
From: https://blog.csdn.net/weixin_45783724/article/details/140292592

相关文章

  • C语言-常用算法-6
    题目:一个球从100米高度自由下落,每次落地后反弹回原来高度的一半;再落下,那么它在第10次落地时,共经过多少米?第十次反弹多高。源代码:#include<stdio.h>intmain(){doubleheight=100,length_total=100;for(inti=0;i<10;i++){height/=2;......
  • C语言-常用算法-5
    题目:如果一个渔夫从2011年1月1日开始每三天打一次鱼,两天晒一次网,编程实现输入2011年1月日后的任意日期,输入该渔夫是在打鱼还是晒网。源代码:#include<stdio.h>intmain(){intmonth_days[12]={31,28,31,30,31,30,31,31,30,31,30,31};intyear,month,day;......
  • 嵌入式学习——C语言数据结构(三)
    七、赋值运算符    1、+=     加且赋值         C += A;等价于C=C+A    2、-=      减且赋值         C -= A;等价于C=C-A    3、*=      乘且赋值      ......
  • 墨烯的C语言技术栈-C语言基础-011
    函数在数学中f(x)=2*x+1这是数学的函数C语言是结构化的程序设计语言结构化分为三种(1)顺序结构(2)选择结构(3)循环结构这种三种以及这三种组合可以描述生活中的所有事比如//求两个任意整数和Add(intx,inty){ intz=0; z=x+y; returnz;}in......
  • 一文搞懂NLP自然语言处理
    自然语言处理(NLP,NaturalLanguageProcessing)作为人工智能的一个重要分支,近年来得到了广泛的关注和应用。无论你是AI初学者还是有经验的开发者,深刻理解NLP的基本概念和应用场景都是非常必要的。本文将带你从零开始,全面了解NLP的核心知识与技术。一、什么是自然语言处理?自然......
  • 衡庐浅析·C语言程序设计·第二章·运算符及其优先级关系(练习题一)
        本文适用于大学的期中期末考试、专升本(专接本、专插本)考试、408等考研预科。如有相关题目疑问或建议欢迎在评论区进行互动。    转载请标明出处。不知道大家有没有消化完第二章的内容。在这里我们将列出一些关于运算符及其优先级关系的课后练习题,方便大家......
  • 入门c语言DAY7——转义字符
    入门第七天(昨天就要发出来的,结果退出来的时候系统没给我保存....目前写过的最长的一篇文章了) 由例子引出转义字符,如图: 可以看到将n前加上\后不但没有打印出\n,反而空了一行。像\n这样的字符就叫转义字符。(当然也不是什么字符前加\都可以用作转义字符~先来浅浅看一下转义......
  • Linux C语言基础 day8
    目录思维导图:学习目标:学习内容:1.字符数组1.1二维字符数组1.1.1格式1.1.2初始化1.1.3 二维字符数组输入输出、求最值、排序2.函数2.1概念关于函数的相关概念2.2函数的定义及调用2.2.1定义函数的格式2.3 函数的分类1.无参无返回值函数2、有参无返回......
  • R语言读取和写入文件
    ####3.2文本文件的读写######3.2.1base包import.txt<-read.table("data/iris.txt",header=TRUE)#读入iris.txt文件head(import.txt)import.csv<-read.table("data/iris.csv",header=TRUE,sep=",")#读入iris.csv文件head(import.c......
  • R语言入门
    #新手上路a<-1:10aAcor(iris[,1:4])Cor(iris[,1:4])#获取帮助?median#等价于help("median"),查看中位数函数的帮助文档??median#等价于help.serach("median")搜索包含median的帮助信息help("runExample")help("runExample",package="shin......