【LLM论文日更 | 一种引入上下文的文档嵌入方法 】

  • 论文:​​​​​​​https://arxiv.org/pdf/2410.02525
  • 代码:暂未开源
  • 机构:康奈尔大学
  • 领域:embedding model
  • 发表:arxiv

研究背景

  1. 研究问题:这篇文章要解决的问题是如何改进文档嵌入,使其在特定上下文中的检索任务中表现更好。传统的文档嵌入方法通常直接对单个文档进行编码,但这些嵌入在针对特定用例的检索中可能会失去上下文信息。
  2. 研究难点:该问题的研究难点包括:如何在嵌入过程中考虑文档及其邻近文档的上下文信息;如何在不同领域之间保持模型的鲁棒性;如何在不增加额外计算和存储需求的情况下实现上下文化。
  3. 相关工作:该问题的研究相关工作包括统计方法和神经网络方法的文本检索模型。统计方法如BM25可以利用先验语料库统计信息(如逆文档频率IDF)来增强模型的上下文依赖性。神经网络方法如双编码器架构通过端到端学习来改进检索性能,但缺乏对上下文的显式建模。

所谓上下文信息,可以看这个case study:

问题:

密歇根州布雷肯里奇的人口
证词是否可以用于刑事案件哪些案件需要严格审查
州最高法院的职能
爱达荷州的人口是多少
爱荷华州曼森的人口是多少
量刑听证会后会发生什么 弗拉特黑德县的人口
堪萨斯州惠廷的人口
爱达荷州刘易斯顿的人口是多少
如果您没有出席陪审团会怎么样
宾夕法尼亚州克利尔菲尔德县的人口
审判需要多长时间 肯塔基州克林顿的人口
密歇根州伊斯科县的人口 

对应的问答也基本全是关于人口的统计结果信息,所以这里的邻近是指相似的查询和相似的文档,而不同于平常理解的那种“上下文”,这是逻辑上的相关,而本文的邻近文档是内容上的邻近,本文提出的方法我认为实际上是增强了检索器对内容相似文档的区分能力。

研究方法

        这篇论文提出了两种互补的方法来实现上下文化文档嵌入(Contextual Document Embedding, CDE):一种是对抗性对比学习目标,另一种是新的上下文架构。具体来说,

  1. 对抗性对比学习目标:首先,提出了一种替代的对抗性对比学习目标,该目标明确地将文档邻居纳入到批处理上下文损失中。具体来说,使用快速查询-文档聚类为每个训练批次生成一组邻居。每个训练更新完全由邻居文档构成,以确保嵌入能够在最具挑战性的上下文中区分文档。公式如下:

        2. 上下文架构:其次,提出了一种新的编码器架构,该架构在嵌入过程中显式注入上下文文档的信息。该方法增强了标准的BERT风格编码器,增加了额外的条件,提供了关于邻近文档的聚合文档级信息。公式如下:

 

        

实验设计

  1. 数据收集:实验使用了Nussbaum训练文本嵌入模型元数据集中收集的数据集,包括从维基百科和Reddit等网络资源抓取的24个数据集。训练阶段使用了200M弱监督数据点,监督训练阶段包括1.8M人工编写的查询-文档对,来自HotpotQA和MS MARCO等流行检索数据集。
  2. 实验设置:实验在一个小型设置中进行,使用六层Transformer,最大序列长度为64,最多64个额外上下文字符。评估在BEIR基准的截断版本上进行。大规模设置中,使用小型实验中找到的最佳设置,在长度为512的序列上训练单个模型,并在完整的MTEB基准上进行评估。
  3. 参数配置:所有实验都使用Adam优化器,1000步预热到学习率2⋅10−5,并在训练过程中线性衰减到0。序列dropout设置为均匀概率p=0.005。

结果与分析

  1. 小型设置结果:在对抗性对比学习和上下文架构的改进下,小型设置中的性能优于传统的双编码器训练。结合这两种技术时,性能提升最大。

  2. 批处理和集群大小的影响:在包含过滤的情况下,较小的集群大小明显优于较大的批处理大小。过滤假阴性显著提高了性能。

  3. 全规模训练结果:在监督数据集上的多轮训练中,最佳性能出现在在BGE元数据集上训练四轮时。尽管最佳模型每个查询使用一个硬负样本,但仍然能够在没有硬负样本的情况下实现最先进的结果。

  4. 上下文架构的性能:上下文架构在所有下游数据集上的性能普遍匹配或优于双编码器,特别是在ArguAna和SciFact等较小且领域外数据集上提升最大。

总体结论

这篇论文提出了两种改进传统双编码器模型的方法,用于生成嵌入。第一种方法通过重新排序训练数据点使批次更难,从而改进了传统的训练方法。第二种方法提出了一种新的语料库感知架构,允许训练最先进的文本嵌入模型。实验结果表明,这些改进在多个数据集和任务上均取得了最先进的结果。

优点与创新

  1. 提出了两种互补的方法来实现上下文化文档嵌入:首先是一种新的对比学习目标,该目标明确地将文档邻居纳入到批处理上下文损失中;其次是一种新的上下文架构,该架构将邻居文档信息显式编码到编码表示中。
  2. 在多个设置中实现了比双编码器更好的性能,特别是在跨域情况下,差异尤为显著。
  3. 在MTEB基准测试中取得了最先进的结果,且无需硬负样本挖掘、分数蒸馏、特定数据集指令、GPU内示例共享或极大的批量大小。
  4. 提出了一种新的训练算法,该算法通过快速查询-文档聚类为每个训练批次生成一组邻居,确保嵌入能够在最具挑战性的上下文中区分文档。
  5. 提出了一种新的上下文编码器架构,该架构在标准的BERT风格编码器基础上增加了额外的条件,提供了关于邻居文档的聚合文档级信息。
  6. 在不需要额外存储或其他更改的情况下,通过使用语料库信息生成特定于特定领域的文档和查询嵌入。
  7. 在行业规模上训练时,模型在小(<250M参数)模型上取得了MTEB基准测试的最先进结果。

不足与反思

  1. 计算资源使用:所有模型均在8个NVIDIA H100 GPU上进行预训练。单个无监督epoch的训练时间约为一天,而上下文架构的单epoch训练时间约为两天。较短序列长度的实验快10-20倍,并且可以在单个GPU上运行。
  2. 分布式数据并行(DDP)的挑战:作者指出,使用对比损失和DDP设置训练模型可能会非常困难,特别是在聚合样本时,如果任何伪影揭示了模型来自哪个GPU,模型可能会迅速退化到一个次优解。
  3. 位置性移除:尽管作者使用了带有旋转位置嵌入的BERT版本来避免这个问题,但完全禁用位置性仍然是一个可行的替代方案。
  4. 上下文大小的影响:作者观察到,随着条件的变化,上下文嵌入在空间中可能会移动,但仍然保持相对接近。
  5. 未来的工作:包括分析不同打包策略的完整影响,例如昂贵的平衡K-Means或启发式方法如等距K-Means。​​​​​​​

实验结果表明,上下文架构在不同规模的数据集和任务上表现如何?有哪些具体的改进?

  1. 小规模实验结果:在对BEIR基准的缩短版本上的实验表明,上下文架构在对立性对比学习和传统双编码器训练的基础上均有显著提升。结合这两种技术时,性能提升最大。
  2. 大规模实验结果:在MTEB基准上,使用250M或更少参数的模型,上下文架构在所有下游数据集上均表现出色,特别是在ArguAna和SciFact等较小且领域外的数据集上提升最大。例如,在ArguAna数据集上,上下文架构的NDCG@10评分从基线的54.8提升到81.7。
  3. 过滤假阴性:实验表明,过滤假阴性显著提高了性能,尤其是在大规模批处理和聚类中。过滤假阴性后,模型在多个数据集上的NDCG@10评分均有显著提升。
  4. 批处理难度与性能的关系:实验结果显示,批处理难度与下游性能呈强相关性,更难批处理的学习效果更好。通过调整批处理难度,上下文架构能够在不同规模的数据集上实现更好的性能。

总体而言,上下文架构在不同规模的数据集和任务上均取得了显著的性能提升,特别是在领域外数据集上表现尤为突出。

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

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

相关文章

短短一年多,ChatGPT 发展到什么程序了?

短短一年多&#xff0c;ChatGPT 就与 Google、Youtube、X.com等大佬级网站比肩。成为全球访问量最大的网站之一 爆发期&#xff0c;访问量月增长率高达3000%左右。网站流量从1800万次访问激增至6.72亿次只花了60来天。 2023年一项AI产品访问量统计结果中ChatGPT占比60%&#xf…

信号反射与振铃

反射来源于阻抗不匹配&#xff0c;振铃就是多次反射 对于反射要记住传输系数与反射系数 传输系数与反射系数 振铃现象计算说明

Python轴承故障诊断 (15)基于CNN-Transformer的一维故障信号识别模型

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客 三十多个开源…

Spark原理

主要包括&#xff1a; 核心组件的运行机制&#xff08;Master&#xff0c;Worker&#xff0c;SparkContext等&#xff09;任务调度的原理Shuffile的原理内存管理数据倾斜处理Spark优化 核心组件的运行机制 Spark 执行任务的原理&#xff1a; Spark on Yarn: Cluster模型&am…

【数据结构-邻项消除】力扣1003. 检查替换后的词是否有效

给你一个字符串 s &#xff0c;请你判断它是否 有效 。 字符串 s 有效 需要满足&#xff1a;假设开始有一个空字符串 t “” &#xff0c;你可以执行 任意次 下述操作将 t 转换为 s &#xff1a; 将字符串 “abc” 插入到 t 中的任意位置。形式上&#xff0c;t 变为 tleft “…

GPT-4o 和 GPT-4 Turbo 模型之间的对比

GPT-4o 和 GPT-4 Turbo 之间的对比 备注 要弄 AI &#xff0c;不同模型之间的对比就比较重要。 GPT-4o 是 GPT-4 Turbo 的升级版本&#xff0c;能够提供比 GPT-4 Turbo 更多的内容和信息&#xff0c;但成功相对来说更高一些。 第三方引用 在 2024 年 5 月 13 日&#xff0…

115页PPT华为管理变革:制度创新与文化塑造的核心实践

集成供应链&#xff08;ISC&#xff09;体系 集成供应链&#xff08;ISC&#xff09;体系是英文Integrated Supply Chain的缩写&#xff0c;是一种先进的管理思想&#xff0c;它指的是由相互间提供原材料、零部件、产品和服务的供应商、合作商、制造商、分销商、零售商、顾客等…

TCP simultaneous open测试

源代码 /*************************************************************************> File Name: common.h> Author: hsz> Brief:> Created Time: 2024年10月23日 星期三 09时47分51秒**********************************************************************…

ctfshow(175->178)--SQL注入--联合注入及其过滤

Web175 进入界面&#xff1a; 审计&#xff1a; 查询语句&#xff1a; $sql "select username,password from ctfshow_user5 where username !flag and id ".$_GET[id]." limit 1;";返回逻辑&#xff1a; if(!preg_match(/[\x00-\x7f]/i, json_enc…

可编辑PPT | 柔性制造企业数字化转型与智能工厂建设方案

这份PPT介绍了柔性制造企业在数字化转型和智能工厂建设方面的综合方案。探讨了数据采集、数字孪生、无码开发支撑、数据资产和应用能力层的构建&#xff0c;以及企业信息化的新思路。最终目标是通过这些技术和策略&#xff0c;实现供应链协同、产品全生命周期管理、绿色节能生产…

VUE, element-plus, table分页表格列增加下拉筛选多选框,请求后台

简介 为了方便表格查询时可以筛选列的值&#xff0c;需要给列增加筛选框&#xff08;多选框&#xff09;&#xff0c;element-plus提供了列的filter字段&#xff0c;但是基于表格数据的筛选&#xff0c;不会重新请求后台&#xff0c;而且当前表格数据有多少个条目&#xff0c;…

WPF+MVVM案例实战(一)- 设备状态LED灯变化实现

文章目录 1、项目创建2、UI界面布局1. MainWindow.xaml2、颜色转换器实现2.MainViewModel.cs 代码实现 3、运行效果4.源代码下载 1、项目创建 打开 VS2022 &#xff0c;新建项目 Wpf_Examples&#xff0c;创建各层级文件夹&#xff0c;安装 CommunityToolkit.Mvvm 和 Microsof…

python实现投影仪自动对焦

这是一款投影仪,它带有对焦摄像头 它是如何自动对焦的呢? 我们先看一下对焦算法展示效果 说明:左侧是原视频,右侧是对调焦后的视频帧展示,如果下一帧视频比当前帧清晰就会显示下一帧,否则,还是显示当前帧,直至找到更清晰的帧 原理说明: 在投影仪上对焦摄像头就会实…

HelloCTF [RCE-labs] Level 4 - SHELL 运算符

开启靶场&#xff0c;打开链接&#xff1a; 源码很简单&#xff0c;system("ping -c 1 $ip"); GET传参ip 构造payload&#xff1a; /?ip127.0.0.1;ls / /?ip127.0.0.1;cat /flag 成功得到flag&#xff1a; NSSCTF{04ad1d48-4530-481d-aa5d-8a153b0ebf2c}

常见学习陷阱及解决方案

文章目录 1. 拖延2. 信息过载3. 缺乏计划4. 过度依赖记忆5. 缺乏反馈6. 学习环境不佳7. 不够自信8. 不适合的学习方法结论 在学习过程中&#xff0c;学生常常会遇到各种陷阱&#xff0c;这些陷阱可能会影响学习效果和动机。以下是一些常见的学习陷阱及其解决方案&#xff1a; 1…

软硬链接_动静态库

软硬链接 软链接创建 硬链接创建 软链接是独立文件&#xff08;独立inode号&#xff09; 硬链接不是独立文件&#xff08;inode和目标相同&#xff09; 如何理解软硬链接 软链接有独立inode&#xff0c;软链接内容上&#xff0c;保存的是文件路径 硬链接不是独立文件&#xf…

服务器虚拟化全面教程:从入门到实践

服务器虚拟化全面教程&#xff1a;从入门到实践 引言 在现代 IT 基础设施中&#xff0c;服务器虚拟化已成为一种不可或缺的技术。它不仅能够提高资源利用率&#xff0c;还能降低硬件成本&#xff0c;优化管理流程。本文将深入探讨服务器虚拟化的概念、技术、应用场景及其实现…

初始JavaEE篇——多线程(6):线程池

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaEE 到现在为止&#xff0c;我们已经学习了两个经典的多线程案例了&#xff1a;饿汉模式与懒汉模式、阻塞队列与生产者—消费者模型。想要…

static、 静态导入、成员变量的初始化、单例模式、final 常量(Content)、嵌套类、局部类、抽象类、接口、Lambda、方法引用

static static 常用来修饰类的成员&#xff1a;成员变量、方法、嵌套类 成员变量 被static修饰&#xff1a;类变量、成员变量、静态字段 在程序中只占用一段固定的内存&#xff08;存储在方法区&#xff09;&#xff0c;所有对象共享可以通过实例、类访问 (一般用类名访问和修…

CI/CD 的原理

一、CI/CD 的概念 CI/CD是一种软件开发流程&#xff0c;旨在通过自动化和持续的集成、测试和交付实现高质量的软件产品。 CI(Continuous Integration)持续集成 目前主流的开发方式是协同开发&#xff0c;即多位开发人员同事处理同意应用不同模块或功能。 如果企业在同一时间将…