当前位置: 首页 > news >正文

[大语言模型-论文精读] ACL2024-长尾知识在检索增强型大型语言模型中的作用

ACL2024-长尾知识在检索增强型大型语言模型中的作用

在这里插入图片描述
On the Role of Long-tail Knowledge in Retrieval Augmented Large Language Models
Authors: Dongyang Li, Junbing Yan, Taolin Zhang, Chengyu Wang, Xiaofeng He, Longtao Huang, Hui Xue, Jun Huang

1.概览

在这里插入图片描述

问题解决:
这篇论文研究了在大型语言模型(LLMs)中,如何通过检索增强生成(RAG)技术来提升模型对长尾知识(long-tail knowledge)的处理能力。长尾知识指的是那些在大规模预训练中不常见,但在实际应用中又非常重要的知识。论文指出,尽管RAG技术能够通过检索相关文档来增强LLMs的回答质量,但它通常不加区分地增强所有查询,而忽略了LLMs真正需要的长尾知识。

研究成果:
研究者提出了一种基于生成预期校准误差(Generative Expected Calibration Error, GECE)的方法来检测长尾知识,并只在查询涉及长尾知识时才进行文档检索和知识融合。实验结果表明,与现有的RAG流程相比,该方法在平均推理时间上实现了超过4倍的加速,并且在下游任务中性能得到了一致性提升。

2. 研究背景

技术背景:
大型语言模型(LLMs)在自然语言处理(NLP)领域取得了显著的成就,但它们在处理长尾知识时仍然存在挑战。RAG技术通过检索补充知识并将其注入模型来增强LLMs的生成能力,但这种方法往往忽略了对长尾知识的特别关注。

发展历史:
RAG技术的发展可以追溯到早期的检索-生成模型,随着深度学习技术的进步,尤其是Transformer架构的出现,RAG技术得到了快速发展。近年来,研究者们开始关注如何更有效地利用RAG技术来提升LLMs在特定任务上的表现。

3. 技术挑战

困难:

  • 知识冗余: 在预训练阶段,LLMs已经学习了大量的通用知识,RAG技术在处理常见知识时可能会导致计算资源的浪费。
  • 长尾知识检测: 如何有效地检测和区分LLMs在处理查询时是否需要长尾知识是一个挑战。
  • 效率与性能的平衡: 在提升模型性能的同时,如何保持或提升推理效率是一个关键问题。

4. 破局方法

解决方法:

  • GECE指标: 论文提出了一种新的指标GECE,结合了统计学和语义学的方法来衡量知识的“长尾性”, 通过METEOR分数和LLMs生成文本的平均token概率来计算。
  • 长尾知识检测: 使用GECE值来检测输入查询是否涉及长尾知识。
  • 选择性增强: 改进的RAG流程, 只有当查询涉及长尾知识时,才进行文档检索和知识融合,从而提高了推理效率。

ECE:
ECE = ∑ i = 1 B n b i N ∣ a c c ( b i ) − c o n f ( b i ) ∣ \text{ECE} = \sum_{i=1}^{B}\frac{n_{b_i}}{N}|acc(b_i) - conf(b_i)| ECE=i=1BNnbiacc(bi)conf(bi)

GECE:
GECE = ∣ M ( p r e d , r e f ) − 1 n ∑ i = 1 n p ( t i ) ∣ α ⋅ [ E ( ▽ i n s ) ⋅ ▽ i n s ] \text{GECE} = \frac{|M(pred, ref) - \frac{1}{n}\sum_{i=1}^{n}p(t_i)|}{\alpha \cdot [E({\bigtriangledown_{ins}) \cdot {\bigtriangledown}_{ins}}]} GECE=α[E(ins)ins]M(pred,ref)n1i=1np(ti)
这里 ▽ i n s {\bigtriangledown_{ins}} ins是当前实例的梯度, E ( ▽ i n s ) E({\bigtriangledown_{ins}}) E(ins)是整个数据集的平均梯度。

5. 技术应用

实验设置:

  • 使用了NQ、TriviaQA和MMLU等数据集进行实验。
  • 与多个基线模型进行了比较,如Llama2-7B、IRCoT、SKR等。
  • 实验中考虑了不同数量的增强文档(10、15、20篇)对性能的影响。

**实验效果: **

  • NQ数据集:使用GECE后,Rouge-1和Bleu-4指标分别达到了42.9和43.7,平均推理速度提升了2.1倍。
  • TriviaQA数据集:使用GECE后,Rouge-1和Bleu-4指标分别达到了24.8和24.0,平均推理速度提升了2.2倍。
  • MMLU数据集:使用GECE后,准确率提升到了85.9%,推理速度提升了2.4倍。
    在这里插入图片描述
    在这里插入图片描述

结论
通过GECE过滤数据后,所有基线模型的处理速度都有所提升,特别是迭代方法(如ITER-RETGEN和IRCoT)显著加速。此外,通过引入较少的普通实例噪声,还提升了任务性能。

潜在应用:

  • 问答系统: 提升问答系统在处理长尾问题时的准确性和效率。
  • 知识检索: 在需要精确知识检索的场景下,如法律、医疗等领域,提高检索的准确性。
  • 教育辅助: 在教育领域,帮助学生快速准确地获取稀有或专业性知识。

6. 主要参考工作

  • ECE相关研究: 如Aimar等人在2023年的工作,提供了校准误差的新视角。
  • RAG技术: 如Borgeaud等人在2022年的研究,探讨了通过检索增强预训练语言模型的方法。
  • 长尾知识处理: 如Kandpal等人在2023年的研究,讨论了LLMs在长尾知识学习上的挑战。
  • METEOR评估: Banerjee和Lavie在2005年提出的评估机器翻译质量的方法,被用于GECE指标中。

如果您对我的博客内容感兴趣,欢迎三连击(点赞,关注和评论),我将持续为您带来计算机人工智能前沿技术(尤其是AI相关的大语言模型,深度学习,计算机视觉相关方向)最新学术论文及工程实践方面的内容分享,助力您更快更准更及时地了解前沿技术的发展现状。

相关文章:

  • el-table+el-form实现表单校验和解决不垂直居中导致的问题
  • IT技术的发展及应用
  • 在Windows上安装Git
  • Go conc库学习与使用
  • HP 电脑 - 管理电源选项 (Windows 10)
  • 电信光猫破解记录
  • 代号ORION:Meta的AR眼镜揭示黑科技的潜力
  • 优青博导团队携手提供组学技术服务、表观组分析、互作组分析、遗传转化实验、单细胞检测等全方位生物医学支持
  • python的input函数用法
  • C++的生存期
  • 搜狗收录排名的5个方法技巧
  • 使用php生成图片
  • AWS注册时常见错误处理
  • 山丹县综能智慧新能源:“智能二维码”,推动班组管理信息化
  • vue.js 展示树状结构数据,动态生成 HTML 内容
  • 【Linux系统编程】快速查找errno错误码信息
  • 【React系列】如何构建React应用程序
  • express如何解决request entity too large问题
  • IP路由与转发
  • js递归,无限分级树形折叠菜单
  • js正则,这点儿就够用了
  • Python中eval与exec的使用及区别
  • React Native移动开发实战-3-实现页面间的数据传递
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • v-if和v-for连用出现的问题
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 聚簇索引和非聚簇索引
  • 码农张的Bug人生 - 初来乍到
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 问题之ssh中Host key verification failed的解决
  • 项目实战-Api的解决方案
  • 小程序开发之路(一)
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • ​Spring Boot 分片上传文件
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (pytorch进阶之路)扩散概率模型
  • (void) (_x == _y)的作用
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (分布式缓存)Redis分片集群
  • (附源码)计算机毕业设计大学生兼职系统
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)memcache、redis缓存
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)我也是一只IT小小鸟
  • (转载)从 Java 代码到 Java 堆
  • ../depcomp: line 571: exec: g++: not found
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .gitignore文件—git忽略文件
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Core 通过 Ef Core 操作 Mysql
  • .net Signalr 使用笔记
  • .net 提取注释生成API文档 帮助文档