大语言模型的数据预处理

文章目录

    • 质量过滤
    • 敏感内容过滤
    • 数据去重

    当收集了丰富的文本数据之后,为了确保数据的质量和效用,还需要对数据进行预处理,从而消除低质量、冗余、无关甚可能有害的数据。一般来说,需要构建并使用系统化的数据处理框架(如开源库 Data-Juicer),从而保证预训练数据的质量。

质量过滤

    直接收集到的文本数据往往掺杂了很多低质量的数据。例如,从网页抓取的数据中可能包含由机器自动生成的广告网页。为了优化模型学习的性能,需要去除语料库中的低质量数据。目前,研究人员主要使用以下两种数据清洗方法:(1)基于启发式规则的方法,和(2)基于分类器的方法。

图片名称
典型的预训练数据预处理流程图

    基于启发式规则的方法,我们可以通过精心设计的规则来针对地识别和剔除低质量的文本数据。然而,不同类型的文本数据往往需要设计不同的清洗规则。例如,在处理Reddit 数据时,可以通过过滤点赞数过少的帖子来剔除低质量内容;而在处理代码语料时,可以过滤掉非代码相关格式的数据。

    基于语种的过滤,为了训练特定目标语言为主导的大语言模型,通常要过滤掉其他语言的文本数据。需要注意的是,目前英文的高质量开放数据数量最多,已经成为了开源大语言模型的主要数据来源。例如,LLaMA-2 模型主要以英文数据为主,占比为 89.70%。因此,即使是训练非英文主导的大语言模型时(如中英双语大模型),不仅要保留特定目标语言数据,还需要同时保留英文高质量数据。在训练中英文为主要语言的 YuLan 模型时,针对网页数据使用了语言识别器过滤非中英文数据。但是对于多语的维基百科数据,由于其含有丰富的多语资源,并且数量规模相对较小,可以直接将这些数据添加至模型的训练数据中。

    基于简单统计指标的过滤,为了识别高质量的文本数据,可以使用语料中标点符号分布、符号与单词比率、句子长度等特征来衡量文本质量,并过滤低质量数据。除了这些统计特征以外,也可以利用困惑度(Perplexity)等文本生成的评估指标来检测和删除表达不自然的句子。

  1. 针对网页数据,过滤任何具有超过 100 个重复单词或句子的文档
  2. 针对网页数据,过滤符号和词元比大于 0.1 的文档
  3. 针对论坛数据,过滤掉任何点赞数少于 3 的用户评论
  4. 利用已有的语言模型计算文档困惑度,并以此作为文档过滤的依据
  5. 训练 FastText 分类器来检测和删除有毒或仇恨言论的内容

    基于关键词的过滤,在收集到的预训练语料中,可能会存在着大量的重复文本模式,诸如常见的 HTML 标签、超链接以及各种模板等。进一步,这些语料中还可能包含了一些具有攻击性、冒犯性的不良信息。为了应对这些问题,针对不同的语料来源以及应用场景,我们可以制定精准的清洗规则,结合相应的关键词集合,对文本进行扫描过滤,从而有效地识别和删除其中的噪声或无用元素。

  1. 针对维基百科数据,过滤掉任何拥有少于 25 个 UTF-8 单词的页面。
  2. 针对网页数据,过滤掉 HTML 标签
  3. 针对网页数据,过滤掉任何不含有 the, be, to, of, and, that, have, with 词汇的文档
  4. 针对所有数据,过滤掉如电话号码,邮箱地址,以及 IP 地址等隐私信息

    基于分类器的方法,除了利用上述启发式的规则,我们也可以训练用于判别数据质量的文本分类器,进行预训练语料的清洗。具体来说,可以选取部分代表性的数据进行质量标注,以此训练出一个精准的文本质量分类器。在选取样本时,可以将维基百科等高质量数据作为正样本,同时从网页中筛选出含有不良内容或低质量数据的样本作为负样本。利用这个训练好的文本分类器,我们能够精准地识别和过滤低质量数据,从而显著提升整个语料库的质量。文本过滤的粒度可以是文档级别也可以是句子级别。需要注意的是,基于分类器的方法也可能无意中删除一些低资源但高质量的文本,如文言文数据等,数据清洗人员需要意识到这种情况,并且建立合理的数据召回与保留机制。为了减少数据的误筛,可以使用多个分类器进行联合过滤或召回,从而来实现对低质量文本的高可信过滤。此外,也可以针对不同的评估维度训练不同的分类器,并采用类似集成的方式对于语料进行全面的过滤。

    目前常用来实现分类器的方法包括轻量级模型(如 FastText 等)、可微调的预训练语言模型(如 BERT、BART 或者 LLaMA 等)以及闭源大语言模型 API(如GPT-4、Claude 3)。这三个方法各自具有不同的优缺点:轻量级模型效率较高,但是分类的准确率和精度可能受限于模型能力;预训练语言模型可以针对性微调,但是分类性能的通用性和泛化性仍然有一定的限制;闭源大语言模型的能力较强,但是无法灵活针对任务进行适配,而且用于预训练数据清洗需要花费较高的成本。对于后两种方法来说,除了简单地进行数据过滤,还可以针对性进行数据的改写,从而使得一些整体质量还不错、但存在局部数据问题的文本仍然可以被保留下来使用。

    值得一提的,在进行数据清洗时,过滤效率也是我们需要考虑的因素之一。例如,基于启发式的方法,其规则设计得相对简洁,因此能够迅速过滤 10M 乃至100M 级别的庞大文档集。然而,对于基于分类器的方法而言,虽然它们在评估文本质量方面能够展现出更高的精确度,但是这些方法也需要消耗更多的计算资源。为了平衡效率与准确性,可以针对具体数据集合进行清洗策略的灵活组合。例如,可以首先利用启发式规则进行初步筛选,以快速排除不符合要求的文档,随后再采用分类器方法进一步精细过滤,确保最终筛选出的语料具有较好的文本质量。在这一过程中,还可以同时应用多种分类器,可以先使用轻量级分类器进行数据过滤,进而使用更为有效但是资源消耗更高的分类器在粗滤后的数据上再次进行选择。

敏感内容过滤

    除了去除低质量内容,收集到的数据还可能包括有毒内容或隐私信息,需要进一步进行更为细致的过滤和处理。与质量过滤类似,不同类型的数据内容往往需要采用特定的过滤规则。

    过滤有毒内容. 为了精确过滤含有有毒内容的文本,可以采用基于分类器的过滤方法。Jigsaw 评论数据集提供了用于训练毒性分类器的数据。该数据集收集了近 160K 条论坛评论数据,每条评论都经过细致的标注,包括“有毒”、“严重有毒”、“有威胁”、“侮辱性”、“暴力”以及“身份仇恨”等六个类别。利用这一数据集进行训练,可以构建出高效的毒性文本分类器。通过设置合理的阈值,训练完成的分类器将能够有效识别并过滤掉含有有毒内容的信息。在进行分类阈值设置时,需要在精确度和召回率之间寻求平衡,避免过多或者过少去除候选数据。Dolma 的技术报告指出,使用高阈值时去除的数据会过少,语料中未过滤掉的有毒内容会导致模型在下游任务上的性能下降;而低阈值则会过滤更多的有毒内容,但同时也会造成大量数据的浪费。考虑到后续的预处理操作(如质量筛选、去重等)同样能够有效剔除有害内容,Dolma 选择为分类器设定了一个相对较高的阈值(0.4),从而保留更多的候选数据。最终,Dolma 在这一阶段仅过滤了 Common Crawl 中 30% 左右的数据。

    过滤隐私内容. 预训练文本数据大多来自互联网,其中可能包括用户生成 的敏感信息或可识别的个人信息(Personally Identifiable Information, PII),如姓名、地址和电话号码等。这些信息如果不加处理,将增加隐私泄露的潜在风险。例如,在 2023 年 11 月有用户发现,反复要求 ChatGPT 重复某个单词可能会使其无意间泄露训练数据中的个人隐私信息,这个漏洞现在已经修复。因此,在预处理阶段,需要去除这些可识别的个人信息。一种直接且有效的方法是使用启发式方法,如关键字识别,来检测和删除这些私人信息 [99]。Dolma 采用了基于规则的方法来过滤数据集中的隐私内容,主要标注了三类敏感信息:邮箱地址、IP 地址以及电话号码。在文本收集过程中,一旦检测到这些隐私信息,Dolma 会根据其出现的频率采取不同的处理策略。具体来说,如果某个文档中的隐私信息少于五条,Dolma 会使用特定的词元(如“|||EMAIL_ADDRESS|||”、“|||PHONE_NUMBER|||”和“|||IP_ADDRESS|||”)来替换这些信息,以保护用户的隐私。然而,如果文档中的隐私信息达到六条或更多,Dolma 会选择直接删除整个文档。这是因为当文档中频繁出现隐私信息时,很可能还隐藏着其他未标注的敏感内容。

图片名称
ChatGPT 泄漏隐私信息示例

数据去重

    对预训练数据进行去重处理是一个重要步骤。由于大语言模型具有较强的数据拟合与记忆能力,很容易习得训练数据中的重复模式,可能导致对于这些模式的过度学习。研究工作发现,预训练语料中出现的重复低质量数据可能诱导模型在生成时频繁输出类似数据,进而影响模型的性能。此外,这些数据也可能导致训练过程的不稳定(训练损失震荡),可能导致训练过程崩溃。此外,为了避免数据集污染问题,还需要从预训练数据集中删除在测试集中可能出现的重复或者相关文本,从而防止训练集和测试集之间的重叠。总体来说,去重算法的设计可以基于不同的计算粒度以及匹配方法。

    计算粒度,去重可以在句子级别、文档级别和数据集级别等多种粒度上进行。在句子级别上,可以删除包含重复单词和短语的低质量句子,因为它们可能会在语言建模中引入重复的表达模式。在文档级别上,现有方法主要依靠单词或𝑛 元词组的重叠这类表层特征,来衡量文档的重叠比率,进而检测和删除包含相似内容的重复文档。现有的数据集往往采用多阶段、多粒度的方式来实现高效的去重。首先针对数据集和文档级别进行去重,旨在去除那些具有高度相似甚至完全一致内容的文档,例如多个 URL 可能具有相同的网页内容,或者网页数据集和新闻数据集中包含相同的新闻文档。随后,可以进一步在句子级别实现更为精细的去重。例如,可以计算两个句子之间公共子串的长度,当其长度过长时直接删除某一个句子。

    用于去重的匹配方法,在去重过程中,可以使用精确匹配算法(即每个字符完全相同)或近似匹配算法(基于某种相似性度量)。对于精确匹配来说,通常使用后缀数组来匹配最小长度的完全相同子串。对于近似匹配来说,可以采用局部敏感哈希(Locality-Sensitive Hashing, LSH)算法,如最小哈希(MinHash)来实现。考虑到预训练数据集合的规模非常大,实现中可以综合考虑去重效率和去重效果之间的权衡。例如,RefinedWeb 在文档层面采用了开销较小的近似匹配技术来实现去重,而在句子层面则采用了精确匹配算法来确保去重的准确性。

    MinHash 是一种估计两个集合之间相似度的技术,最初被引入到信息检索领域,旨在迅速判断文档间的相似性。其核心思想在于,通过哈希处理集合元素,并选择最小的哈希值作为集合的表示。随后,通过比较两个集合的最小哈希值,便能大致估算出它们的相似度。为进一步提升相似度估计的精确度,可以采用不同的哈希函数为每个集合生成多个 MinHash 值。之后,通过计算两个集合间共有 MinHash 值的比例,便能得到它们相似度的估算值。MinHash 技术之所以在估算集合相似性方面表现卓越,是因为它能够避免对集合中所有元素进行繁琐的逐一比较,相反,只需比较那些更为简洁、易于对比的哈希值。这一特性使得 MinHash 在处理那些难以直接全面比较的超大型集合时,具有较好的计算效率。

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

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

相关文章

Find My腰包|苹果Find My技术与腰包结合,智能防丢,全球定位

腰包具有显瘦和显高的双重功效,它不仅能提高腰线、拉长腿部线条,还能遮住腹部多余的赘肉,从而在视觉上达到变高的效果,使整体看起来更加显瘦。除了时尚功能,腰包在运动中也有其独特的用途。例如,在跑步时&a…

大数据项目中的拉链表(hadoop,hive)

缓慢渐变维 拉链表 拉链表,可实现数据快照,可以将历史和最新数据保存在一起 如何实现: 在原始数据增加两个新字段 起始时间(有效时间:什么时候导入的数据的时间),结束时间(默认的结束时间为99…

day-35 二叉树的右视图

思路 根据层序遍历的思路。将每一层的最右边元素加入返回序列即可 解题方法 注意:链表删除一个数据后会立即重排,所以删除同一层的节点时,每次都删除第一个节点。 Code /*** Definition for a binary tree node.* public class TreeNode {…

企业智能照明控制系统 为企业实现智能化照明管理

工厂车间传统照明的问题及智能照明系统的优势 谢继东15821713522 一、工厂传统照明存在的问题: 1、工业厂房一般建筑结构高,跨距大。灯具安装悬挂高,照明空间大,灯具回路多,而车间是厂区对照明要求较高的区域&#xf…

Linux学习笔记4---点亮LED灯(汇编裸机)

本系统学习利用的是正点原子的阿尔法mini开发板,本系列的学习笔记也是按照正点原子的教程进行学习,但并不是利用虚拟机进行开发,而是使用Windows下的子系统WSL进行学习。 因为 Cortex-A 芯片一上电 SP 指针还没初始化,C 环境还没准…

Open CASCADE 教程 – AIS:自定义呈现

文章目录 开始 (Getting Started)呈现构建器 (Presentation builders)基元数组 (Primitive arrays)基元外观 (Primitive aspects)二次构建器 (Quadric builders)计算选择 (Computing selection)突出显示选择所有者 (Highlighting selection owner)突出显示的方法 (Highlighting…

[QT] 断点调试

目录 一 设置断点 二 调试窗口信息 2.1 默认窗口 2.2 详细窗口属性 三 调试方法和技巧 一 设置断点 在QtCreator中我们有两种方式添加断点。 用鼠标直接点击代码编辑窗口中的某一行按下F9添加/取消断点(操作的是当前鼠标光标所在的代码行) 二 调试窗口信息 2.1 默认窗…

Linux 信号保存

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:Linux知识分享⏪   🚚代码仓库:Linux代码练习🚚   🌹关注我🫵带你学习更多Linux知识   🔝 目录 前言 阻塞信号 1. 信号其他相关常见…

MFC的CPen与CBush画图对象使用步骤

在MFC中,CPen和CBrush是两个常用的绘图对象,分别用于定义画笔和画刷,可以用于绘制图形、填充区域等。下面我会详细介绍如何在MFC中使用CPen和CBrush来绘制和填充图形。 使用 CPen 绘制图形: 创建 CPen 对象: 首先&am…

JAVA基础面试题(第十一篇)上! JVM

Hello好久不见!,最近我们讲更新JVM部分的面试题。 JVM 这块比较难理解,而且也是不擅长的点。所以今天我更新一下JVM希望小伙伴们能在面试中取得好成绩! JVM 1. 什么是JVM内存结构? jvm将虚拟机分为5大区域&#xff0…

单片机智能灯控制系统源程序仿真原理图与论文全套资料

目录 1、设计描述 2、仿真图 3、程序 4、资料内容 资料下载地址:单片机智能灯控制系统源程序仿真原理图与论文全套资料下载 1、设计描述 设计了一款智能控制系统。 AT89C51LCD1602DS1302按键LED组成了这样一个完整的设计。 P2.0-P2.3 4个LED等代表庭院内的4…

前端动态旋转地球背景

效果图 贴下源码 <template><div class"map-bg"><div class"canvas" id"canvs"></div><canvas class"canvasxk" id"canv"></canvas></div> </template><script setup …

Java RMI SERVER命令执行漏洞

Java RMI SERVER命令执行漏洞 一、介绍二、原理三、复现准备四、漏洞复现 一、介绍 RMI全称是Remote Method Invocation&#xff08;远程方法调用&#xff09;&#xff0c;是专为Java环境设计的远程方法调用机制&#xff0c;远程服务器提供API&#xff0c;客户端根据API提供相…

华为eNSP中型企业局域网网络规划设计(上)

敲半天一个闪退全™给我干没了呜呜呜&#xff0c;eNSP&#xff0c;wcnm&#xff01;wcnm&#xff01;wcnm&#xff01; →b站传送门&#xff0c;感谢大佬← →华为eNSP中型企业局域网网络规划设计&#xff08;下&#xff09;← →拓扑图传送门&#xff0c;可以自己配置着玩←…

linux的信号量的使用

1.信号量 在多线程情况下&#xff0c;线程要进入关键代码就得获取信号量&#xff08;钥匙&#xff09;{sem_init(&sem, 0, 0);}&#xff0c;没有信号量的情况下就一直等待sem_wait(&sem)&#xff0c;只到别人把钥匙&#xff08;sem_post(&sem)&#xff09;给你。 …

Hadoop3:HDFS的Shell操作(常用命令汇总)

一、简介 什么是HDFS的Shell操作&#xff1f; 很简单&#xff0c;就是在Linux的终端&#xff0c;通过命令来操作HDFS。 如果&#xff0c;你们学习过git、docker、k8s&#xff0c;应该会发现&#xff0c;这些命令的特点和shell命令非常相似 二、常用命令 1、准备工作相关命令…

Deckset for Mac:让演示文稿制作更轻松

还在为繁琐的演示文稿制作而烦恼吗&#xff1f;Deckset for Mac来帮您解决&#xff01;它支持Markdown语言&#xff0c;让您只需专注于内容的创作&#xff0c;无需在排版和设计上耗费过多精力。丰富的主题和布局选项&#xff0c;让您能够轻松打造出专业级的演示文稿。快来体验D…

Django项目规范化(虚拟环境、目录结构、数据库权限、建表、Media、日志)

Django项目规范化&#xff08;虚拟环境、目录结构、数据库权限、建表、Media、日志&#xff09; 目录 Django项目规范化&#xff08;虚拟环境、目录结构、数据库权限、建表、Media、日志&#xff09;前言虚拟环境pycharm创建虚拟环境 创建Django项目调整目录结构数据库规范创建…

树莓派python开发

树莓派自带thonny 点亮LED灯 import RPi.GPIO as GPIO import time# 设置GPIO模式为BCM GPIO.setmode(GPIO.BCM)# 设置LED引脚 led_pin 18# 设置LED引脚为输出 GPIO.setup(led_pin, GPIO.OUT)# 点亮LED GPIO.output(led_pin, GPIO.HIGH)# 延时2秒 time.sleep(2)# 关闭LED GPI…

经纬恒润亮相AutoSec中国汽车网络安全及数据安全合规峰会

近日&#xff0c;由谈思实验室、谈思汽车、上海市车联网协会联合举办的AutoSec 8周年年会暨中国汽车网络安全及数据安全合规峰会在上海举办。本次大会主要聚焦数据合规、汽车网络与数据安全趋势与挑战、软件供应链安全、车辆网络安全、网络安全管理等话题。经纬恒润作为智能网联…