利用大语言模型对基准数据集在预处理和微调过程的数据污染检测

news2025/1/13 10:33:03

概述

虽然大规模语言模型发展迅速,但对其进行评估却变得越来越困难。人们在短时间内建立了许多基准来评估大规模语言模型的性能,但这些分数并不一定反映真实世界的性能。此外,还有人指出,这些基准数据集可能受到预处理和微调过程的污染。

例如,对 Llama-2 的污染分析(Touvron 等人,2023 年)发现,在大规模多任务语言理解(MMLU)测试样本中,有超过 10% 的样本受到污染。另外,GPT-4 技术报告(OpenAI,2023 年)发现,HumanEval 有 25% 的训练数据受到污染。开放源代码数据集也存在类似问题,StarCoder Data(Li 等人,2023 年)中显示有数百个测试案例受到污染。

污染问题虽然重要,但仍然难以准确检测。常见的方法包括 n-gram overlap 和嵌入式相似性搜索。n-gram overlap基于字符串匹配,已广泛应用于 GPT-4(OpenAI,2023 年)、PaLM(Anil 等人,2023 年)、Llama(Touvron 等人,2023 年),但准确性有限。2023)中广泛使用,但准确性有限。另一方面,嵌入式相似性搜索使用嵌入式预训练模型来寻找相似的污染样本,但在召回率和准确率之间取得平衡被认为比较困难。大规模语言模型产生的合成数据的使用也越来越多,这使得检测其污染变得更加困难;Phi-1 报告(Gunasekar 等人,2023 年)称,一些与 HumanEval 测试样本相似的合成数据存在 n-gram重叠,表明它们无法被检测到�

本文提出了 “改写样本”(Rephrased Sample)的概念,用于研究去污方法。这些样本与原始样本具有相同的含义,但很难通过现有的污染测试检测出来。它们是通过使用大规模语言模型将测试样本转述或翻译成其他语言而生成的。研究表明,当使用这类重写样本进行训练时,模型更有可能过度训练,并在测试基准上取得非常高的性能。

在 MMLU、GSM-8k 和 HumanEval 等基准测试中,经过微调的 13B Llama 模型的性能可与 GPT-4 相媲美,而且在 n-gram 重叠中观察到了一些现象,这些现象不会被检测为污染。

本文还详细分析了现有去污方法失败的原因,并提出了一种新的基于大规模语言模型的去污方法。该方法首先使用嵌入式相似性搜索来获取与给定测试样本最相似的前 k 个样本,然后使用强大的大规模语言模型(如 GPT-4)来检查这些样本是否与测试用例非常接近。结果表明,该方法明显优于现有方法。此外,提出的方法还成功地应用于广泛使用的预训练和微调数据集,揭示了以前未知的测试与公共基准的重叠。

在RedPajama-Data-1T 和 StarCoder-Data预训练集中,8%-18% 的 HumanEval 基准被识别为重复。研究还发现,由 GPT-3.5 生成的合成数据集 CodeAlpaca(Chaudhary,2023 年)包含了 12.8% 的 HumanEval 重写样本。这表明在使用大型语言模型生成的合成数据进行训练时存在污染风险。

本文呼吁改进用于评估大规模语言模型的公共基准中的去污方法。需要引入更可靠的去污方法,因为目前的评估标准可能无法反映模型的真实性能。

此外,还建议进行一次性竞赛式测试,如 Codeforces 或 Kaggle,以便对大规模语言模型进行准确评估。这有望更准确地衡量模型的实际能力,并降低污染风险。

改写样本概念

在大规模语言模型的评估中,研究训练集中测试集的变化如何影响最终基准的性能非常重要。这种测试用例变化被称为 “重写样本”。实验考虑了不同的基准领域,如数学、知识和编码。下面的示例显示的是 GSM-8k 重写样本,其中的 10 个语法重叠无法检测,但含义保持不变。

由于基准测试中的污染会以不同的方式表现出来,因此改写技术也有若干差异。基于文本的基准测试通过改变词语顺序或用同义词替换来改写测试用例,但不改变其含义。基于代码的基准重写则是通过改变编码风格、命名约定和实现方法,在保持意义的同时进行重写。

如下图所示,改写过程采用了一种简单的算法。该方法使用大型语言模型(如 GPT-4)生成测试提示的重写版本,确保不会被 n-gram 重叠等检测方法检测到。使用非零初始温度设置,鼓励多样化输出。这一过程适用于测试集中的每个提示,通过改写建立测试集。RephraseLLM "指的是高性能大规模语言模型(如 GPT-4 和 Claude),而 "isContaminated "指的是 n-gram overlap 和嵌入式相似性搜索等污染检测方法。

除了重排词序,还有其他多种重写技术。真实数据集中存在许多重写技术,包括翻译技术。使用这些技术可以隐藏重写样本,并显著提高模型得分。

在大多数语言模型中,不同语言的同义提示会产生不同的嵌入。将测试提示翻译成其他语言可以避免 n-gram 重叠检测和嵌入相似性搜索。只有经过多种语言专门训练的嵌入模型才能检测翻译样本。

对于基于文本的数据,翻译技术可以显著提高得分,同时避免 n-gram 重叠和嵌入式相似性搜索。这种方法利用了模型的多语言翻译能力,有效地将知识评估转化为翻译任务。翻译技术在代码基准测试中也很有用。通过将解决相同问题的程序从 Python 翻译成 C 或 Java,可以验证其有效性。为了进一步研究翻译技术对代码基准测试的影响,我们提出了多语言数据扩展。

代码基准测试可以通过多语言数据扩展增强翻译技术。纳入多种语言可以增强模型的通用性,帮助人们理解翻译后的代码和原始代码具有相同的功能。因此,了解重写样本的概念和相关技术有助于发展更准确、更有效的大规模语言模型评估方法。

用于污染检测的大规模语言建模方法

本文介绍了一种新的污染检测方法–LLM Decontaminator,它能根据基准从数据集中准确去除转述样本。新算法 "LLM Decontaminator "的提出克服了 n-gram overlap 和嵌入式相似性搜索等现有检测方法的局限性。

该算法由两步组成:第一步使用嵌入式相似性搜索为每个测试用例确定前 k 个最相似的训练项;第二步使用高性能的大规模语言模型(如 GPT-4)来确定每个测试用例中最相似的 k 个训练项。对是否相同。

这种方法可以让用户以适度的计算成本确定数据集中包含了多少个转述样本。模板 "是一个结构化提示,它将测试用例和训练用例结合在一起,指示 "LLMDetector "进行比较并返回 "真 "或 “假”。真 "表示训练案例很可能是测试案例的解析样本。LLMDetector "是一个高性能的大规模语言模型,如 GPT-4,而 "TopKSimilarity "则使用嵌入式相似性搜索来识别训练数据中前 k 个最相似的样本。

下图显示了不同污染检测方法的维恩图。维恩图显示了训练数据的子集和污染检测范围。实心圆代表训练数据及其子集。虚线圆圈表示检测方法所显示的数据集中可能受到污染的区域。

LLM 去污器利用嵌入式相似性搜索快速过滤污染。在检测转述样本时,n-gram 重叠检测可能会导致较高的假阴性率,而嵌入式相似性搜索则可以在较高的阈值下检测出许多假阳性。特别是在检测转述样本时,LLM 去污器显示出更高的准确率。

实验 - 重建样本对基准的影响

本文显示,在 MMLU、HumanEval 和 GSM-8k 这三个广泛使用的基准上,使用重建样本训练的模型获得了非常高的分数,与 GPT-4 的性能不相上下。这表明重建样本是受污染的数据,应从训练数据中剔除。它还评估了不同的污染检测方法,并将Decontaminator应用于广泛使用的训练集,以发现新的污染。

第一个基准,即 MMLU(Hendrycks 等人,2020 年),是一个包括非常广泛的学科的基准,涵盖了从抽象代数到专业心理学等 57 个领域。为了重构该 MMLU,需要考虑多种情况;鉴于 MMLU 的复杂性及其多选格式,有必要详细说明重构的细节。

在多选题中使用 n-gram 重叠检测时,当不同的问题具有相似的选择排列时,也容易产生误报。下图显示了 n-gram 重叠检测产生误报的一个示例。尽管选择模式完全相同,但这实际上是不同的问题。为了减少这种误报问题,MLU 实验引入了 "仅问题 "对照组。仅问题 "是指只重建问题文本,而 "完整提示 "是指同时重建问题文本和备选答案。

大数字还经常造成字符重复。为避免这种情况,大数字的格式会有所改变,例如逗号和空格交替使用。不同学科的术语也会造成重复问题。为避免这种情况,缩写和全称会交替使用,大写字母也会调整,特别是在涉及名称和化学式的选项中。

Llama-2-7b 和 Llama-2-13b 在重建测试集上进行了 16 次历时训练。如下表所示,在重建样本上训练的 Llama-2 7B 和 13B 在 MMLU 上取得了非常高的分数,从 45.3 到 88.5 不等。这表明,重建样本可能会严重扭曲基准数据,应将其视为污染数据。原始模型用五次拍摄进行测试,而用重建数据训练的模型则用零次拍摄进行测试。

第二个基准是 HumanEval(Chen 等人,2021 年),它是 OpenAI 提供的一个基准,用于评估大型语言模型的编码能力。在该基准中,向模型提供不完整的代码片段,并要求其完成这些片段�

HumanEval 测试集用 Python 解析,然后翻译成五种编程语言–C、JavaScript、Rust、Go 和 Java。这些代码分别用于学习 CodeLlama 7B 和 13B。然后,我们构建并训练了包含这五种编程语言的多编程语言数据集。下表显示了 CodeLlama 在解析 Python、解析 C 和多编程语言数据集上的表现。

CodeLlama 7B 和 13B 在解析样本的基础上进行了训练,在 HumanEval 中获得了很高的分数。相比之下,GPT-4 在 HumanEval 中仅获得 67.0 分。

第三个基准是 “GSM-8K”(Cobbe 等人,2021 年),它是用于评估大规模语言模型数学能力的代表性基准。

下表显示,根据转述样本训练的 Llama-2 7b 和 13b 在 GSM-8K 上获得了更高的分数。原始模型测试了 5 次,而根据转述数据训练的模型测试了 0 次。

实验 - 污染检测方法评估

第一个基准是 MMLU,它是基于三个 MMLU 科目的净化基准:抽象代数、社会学和美国历史。为了比较检测方法对转述样本的准确性,使用原始测试集和转述测试集构建了 200 对提示对。这些提示对包括 100 个随机提示对和 100 个转述提示对。这些对的 F1 分数表示污染检测能力,分数越高,表示检测越准确。

随机检测(Random)被用作基线,如果得分明显高于随机检测,则表示检测方法有效�

如下表所示,除 LLM Decontaminator 外,所有检测方法都存在误报。使用 n-gram overlap 时,无法检测到转述和翻译样本;使用 multiqa BERT 时,嵌入相似性搜索对翻译样本完全无效;使用多语种 BERT 时,美国历史主题的得分较低,表明 LLM Decontaminator 的可靠性和准确性较低。得分,表明 LLM 去污器的可靠性和准确性。

第二个基准是HumanEval。它表明现有的检测方法无法检测到 HumanEval 的转述样本,并证实LLM Decontaminator能够成功检测到这些样本。HumanEval 根据上述 MMLU 方法构建了 200个提示对,并使用n-gram overlap、嵌入式相似性搜索和LLM Decontaminator来评估 F1 分数。下表显示,嵌入式相似性搜索对同一程序语言内的检测有效,但翻译后的效果较差。在所研究的方法中,只有 LLM Decontaminator 能可靠地检测出转述样本。

此外,为了证明 LLM 去污器的有效性,我们还将其应用于一个广泛使用的现实世界数据集,并识别出了一些转述样本。下表显示了每个训练数据集不同基准的污染率。

CodeAlpaca(Chaudhary,2023年)是利用OpenAI的Davinci-003通过自指导技术(Wang等人,2023年b)生成的合成数据集。CodeAlpaca-20K 用于训练许多著名的模型,包括 Tulu(Wang 等人,2023a)。GPT-4 用于检测,参数为 k=1,发现 HumanEval 测试集中有 21 个转述样本,占 12.8%。下图显示了 CodeAlpaca 中被转述的 HumanEval 样本。

RedPajama-Data-1T(Computer,2023 年)是一个广泛用于训练开源模型的数据集;MPT(Team,2023 年)和 OpenLlama(Geng & Liu,2023 年)都在这一数据集上进行了预训练。数据集。本文从 GitHub 子集中抽取了 16G 数据样本,并使用 LLM 去污器进行检测,共识别出 14 个转述的 HumanEval 样本。下图显示了 RedPajama 中的 HumanEval 解析样本。

MATH(Hendrycks 等人,2021 年)是一个广受认可的数学学习数据集,涵盖代数、几何和数论等一系列数学学科,为 MathInstruct1(Yue 等人,2023 年)等一系列以数学为中心的数据集做出了贡献。LLM 去污器揭示了 79 个转述样本,占 MATH 测试集的 1.58%。下面的示例显示了 MATH 训练数据中的 MATH 测试解析样本。

FLAN (Longpre 等人,2023 年)是一个综合性的知识学习数据集,包括各种数据源;它利用了占 FLAN 1.63% 的 CoT 子集,使用 GPT-4 进行检测,并将去污参数设置为 k=1。结果显示,有 76 个测试案例(占MLU 测试集的 0.543%)被转述。

总结

本文探讨了大规模语言模型中的基准污染问题以及对现有净化方法的评估。结果表明,现有的检测方法无法检测出具有简单变化的测试用例。如果不消除测试数据中的这种变化,13B 模型就容易过度拟合测试基准,从而导致非常高的性能。

为此,我们提出了一种新的检测方法,即 LLM 去污器。该方法被应用于一个真实数据集,并揭示了之前未知的测试重叠。本文强烈建议研究界在使用公共基准时采取更有力的去污措施。

转述的测试样本应视为污染,因为将其纳入训练数据可能会影响基准。然而,如何准确定义污染仍是一个难题。例如,在 GSM-8k 中,训练数据和测试数据可能只相差一个数字。在这种情况下训练的模型可以记忆解决方案,但很难泛化到未见过的模式。因此,基准数据可能无法准确反映模型解决数学问题的能力。

随着越来越多的模型在大规模语言模型生成的数据上进行训练,出现意外污染的可能性也随之增加。例如,在 GPT 生成的 CodeAlpaca 数据集中就发现了一些污染。作者指出,在合成数据上训练模型时,应注意潜在的污染。作者建议对模型开发人员采取更有力的净化措施。

此外,尽管所提出的净化方法是一种有用的工具,但如何在无法获得训练数据的情况下检测污染仍是一个未决问题。我们建议创建新的一次性问题来评估大型语言模型,而不是依赖静态基准。例如,在编码领域,可以使用每周一次的编码竞赛,如 CodeForces。它指出,基准应随着模型的开发而迅速更新。

论文地址:https://arxiv.org/pdf/2311.04850
源码地址:https://github.com/lm-sys/llm-decontaminator

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

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

相关文章

【SKFramework框架】一、框架介绍

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群:398291828小红书小破站 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【Unity3D框架】SKFramework框架完全教程《全…

Linux中定时操作

一、一次性定时 这里以23&#xff1a;00为例 输入相关时间----at 23&#xff1a;00 所保存在哪个文件里------ ls /root > at.txt <EOT> &#xff08;ctrld退出到root&#xff09; 查看计划任务 ------ at -l 最后删除任务----at -d 2 二、周期性定时&#xf…

自回归和Rectified Flow完美融合统一多模态理解和生成!DeepSeek北大等开源JanusFlow

论文链接&#xff1a;https://arxiv.org/pdf/2411.07975 github链接&#xff1a;https://github.com/deepseek-ai/Janus 亮点直击 统一多模态框架&#xff1a; 提出 JanusFlow&#xff0c;一个同时处理图像理解和文本到图像生成任务的统一模型&#xff0c;解决了任务分离带来的…

Docker1:认识docker、在Linux中安装docker

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

数据结构在二叉树Oj中利用子问题思路来解决问题

二叉树Oj题 获取二叉树的节点数获取二叉树的终端节点个数获取k层节点的个数获取二叉树的高度检测为value的元素是否存在判断两颗树是否相同判断是否是另一棵的子树反转二叉树判断一颗二叉树是否是平衡二叉树时间复杂度O(n*n)复杂度O(N) 二叉树的遍历判断是否是对称的二叉树二叉…

【C++】踏上C++学习之旅(九):深入“类和对象“世界,掌握编程的黄金法则(四)(包含四大默认成员函数的练习以及const对象)

文章目录 前言1. 实现Date类的构造函数2. 实现Date类的拷贝构造函数3. 实现Date类的赋值运算符重载4. 实现各Date对象之间的比较接口5. 实现Date对象的加减接口6. const成员7. 取地址及const取地址操作符重载 前言 在我们前面学习到了"类和对象"的四大默认成员函数(…

远程控制软件使用教程

随着数字化办公浪潮的席卷&#xff0c;远程控制软件已经悄无声息地融入我们的日常生活&#xff0c;成为提升工作效率的神奇工具。它让我们无论身处何地&#xff0c;都能轻松驾驭办公室电脑&#xff0c;让旅途中的工作也变得轻松自如。那么&#xff0c;远程控制软件究竟是什么&a…

oracle查看锁阻塞-谁阻塞了谁

一 模拟锁阻塞 #阻塞1 一个会话正在往一个大表写入大量数据的时候&#xff0c;另一个会话加字段&#xff1a; #会话1 #会话2 会话2被阻塞了。 #阻塞2 模拟一个会话update一条记录&#xff0c;没提交。 另一个会话也update这一条记录&#xff1a; 会话2被阻塞了。 二 简单查…

我用豆包MarsCode IDE 做了一个 CSS 权重小组件

作者&#xff1a;夕水 查看效果 作为一个前端开发者&#xff0c;应该基本都会用VSCode来做开发&#xff0c;所以也应该见过如下这张图的效果: 以上悬浮面板分为2个部分展示内容。 <element class"hljs-attr">: 代表元素只有一个类名叫hljs-attr的类选择器&am…

第三届航空航天与控制工程国际学术会议 (ICoACE 2024)

重要信息 会议官网&#xff1a;www.icoace.com 线下召开&#xff1a;2024年11月29日-12月1日 会议地点&#xff1a;陕西西安理工大学金花校区 &#xff08;西安市金花南路5号&#xff09; 大会简介 2024年第三届航空航天与控制工程国际学术会议&#xff08;ICoACE 2024&a…

如何下载链接为blob类型的视频,video 标签 src:blob 链接转下载MP4

文章目录 前言这种链接是如何生成的&#xff1f;原理分析 第一步&#xff0c;找到源地址1.在想下载的视频网页&#xff0c;按f12打开开发人员工具。找到video标签&#xff0c;锁定src属性2.确认src源为blob&#xff1a;样式&#xff0c;转到网络&#xff08;network&#xff09…

Redis | Redis常用命令及示例总结(API)

前言 参考文档&#xff1a;http://doc.redisfans.com/index.html 本篇主要总结Redis的常用命令&#xff0c;笔者在记录命令时的格式如下&#xff1a; 命令关键字&#xff1a;命令示例&#xff1b;命令说明&#xff1b; 命令参数解释及一些说明&#xff1b; 其中命令关键字使用…

【VTK】MFC中使用VTK9.3

MFC中如果使用VTK 碎碎念一、vtk环境配置二、具体实现1、新建类2. 自定义控件3、跑个栗子 总结 碎碎念 如果不是老程序用的MFC&#xff0c;我才不想用MFC去使用VTK呢。 一、vtk环境配置 关于环境配置你可以看这篇文章&#xff0c;在这里不过多赘述。需要注意要选择支持MFC&a…

《译文》2024年11月数维杯国际大学生数学建模挑战赛题目

# 赛题正式发布 2024年第十届数维杯国际大学生数学建模挑战赛顺利开赛&#xff0c;竞赛开始时间为北京时间2024年11月15日09:00至北京时间2024年11月19日09:00&#xff0c;共计4天&#xff0c;竞赛题目正式发布&#xff0c;快来一起围观&#xff0c;你认为今年的哪个题目更具有…

SentenceTransformers×Milvus:如何进行向量相似性搜索

你可曾经历过在 Meetup 上听到一段绝妙的内容&#xff0c;但发现回忆不起具体的细节&#xff1f;作为一名积极组织和参与 Meetup 的开发者关系工程师&#xff0c;我常常会有这种感受。 为了解决这个问题&#xff0c;我开始探索使用相似性搜索技术来筛选大量的非结构化数据。非结…

如何在 Ubuntu 20.04 上的 PyCharm 中使用 Conda 安装并配置 IPython 交互环境

如何在 Ubuntu 20.04 上的 PyCharm 中使用 Conda 安装并配置 IPython 交互环境 要在 Ubuntu 20.04 上的 PyCharm 中配置 IPython 交互环境&#xff0c;并使用 Conda 作为包管理器进行安装&#xff0c;你需要遵循一系列明确的步骤。这些步骤将确保你可以在 PyCharm 中使用 Cond…

VMware虚拟机(Ubuntu或centOS)共享宿主机网络资源

VMware虚拟机(Ubuntu或centOS)共享宿主机网络资源 由于需要在 Linux 环境下进行一些测试工作&#xff0c;于是决定使用 VMware 虚拟化软件来安装 Ubuntu 24.04 .1操作系统。考虑到测试过程中需要访问 Github &#xff0c;要使用Docker拉去镜像等外部网络资源&#xff0c;因此产…

近期两篇NeRF/3DGS-based SLAM方案赏析:TS-SLAM and MBA-SLAM

原文链接&#xff1a;近期两篇NeRF/3DGS-based SLAM方案赏析&#xff1a;TS-SLAM and MBA-SLAM paper1&#xff1a;TS-SLAM: 基于轨迹平滑约束优化的神经辐射场SLAM方法 导读 本文提出了TS-SLAM&#xff0c;一种改进的基于神经辐射场&#xff08;NeRF&#xff09;的SLAM方法…

C# 实现BLE Client 程序与ardunioESP32 通信

编写一个C# Windows 桌面应用程序&#xff0c;与ardunio ESP32 Client 通信。 预备工作 建立一个项目Nuget安装 Microsoft.Windows.SDK.Contracts右击引用菜单中点击&#xff1a;从 packages.config 迁移到 PackageReference using System; using System.Collections.Generi…

【c++丨STL】stack和queue的使用及模拟实现

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;C、STL 目录 前言 一、什么是容器适配器 二、stack的使用及模拟实现 1. stack的使用 empty size top push和pop swap 2. stack的模拟实现 三、queue的…