大语言模型的数据预处理

文章目录

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

    当收集了丰富的文本数据之后,为了确保数据的质量和效用,还需要对数据进行预处理,从而消除低质量、冗余、无关甚可能有害的数据。一般来说,需要构建并使用系统化的数据处理框架(如开源库 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 在处理那些难以直接全面比较的超大型集合时,具有较好的计算效率。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI浪潮再起,2024年中国大模型产业深度解析

国内 AI大模型产业发展深度分析 2024 人工智能技术的迅猛发展,使AI大模型成为科技竞争的核心、产业变革的先锋、经济增长的新动力。我国已将人工智能列为国家战略,出台系列政策扶持其发展,为AI大模型产业创造优越环境,展现巨大潜力…

手撕C语言题典——链表的中间节点

目录 前言 一.思路 1)用指针遍历链表,创建 count 计数,返回 count/2->next 即为中间节点 2)快慢指针 二.代码实现 1)思路一 2)思路二 搭配食用更佳哦~~ 数据结构之单单单——链表-CSDN博客 数据结构之单链表的…

CorelDRAW2024新特性全解析!

CorelDRAW2024是一款备受赞誉的图形设计软件,它以其强大的功能和用户友好性赢得了全球数百万设计师的青睐。该软件提供了丰富的绘图、排版、图像处理、矢量编辑以及网页设计工具,无论是初学者还是专业设计师,都能在这款软件中找到满足自己需求…

openai春季发布会:GPT-4o(更快,更强,更便宜)

人工智能学习网站 https://chat.xutongbao.top

计算机毕业设计 | springboot+vue电影院会员管理系统 影院后台管理(附源码)

1,项目背景 随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的电影院会员管理系统;电影院会员管理系统的管理工作系统化、规范化,也会提高影院形象…

江苏省人大财经委主任委员谢志成一行莅临聚合数据走访调研

4月18日,江苏省人大财经委主任委员谢志成莅临聚合数据展开考察调研。省人大财经委副主任委员(正厅)周毅、省人大常委会办公厅一级巡视员吕小鹏、外事委委员赵正驰、省数据局副局长王万军;苏州市人大常委会副秘书长毛元龙、数据局副…

vue2 报错,警告 解决方法 component name“Index“should always be multi-word

报错原因: 组件名称应该为俩个或俩个以上单词组成的,并且还要是大驼峰命名,例如:MyIndex,MyLogin等 解决方法一: 将组件名称改为俩个或俩个以上单词组成的名称,且为大驼峰命名,例如…

钽酸锂集成光子芯片:引领光电集成新纪元

在信息技术飞速发展的今天,光电集成技术已成为推动全球集成电路产业持续创新的重要力量。随着全球集成电路产业发展步入“后摩尔时代”,芯片性能提升的难度和成本不断攀升,业界急需寻找新的技术突破口。在这一背景下,中国科学院上…

【高级程序设计语言C++】vector的使用及模拟实现

1. vector概述2. vector的数据结构2.1. vector的模拟实现2.2. vector的构造函数2.3. vector 的扩容 3. vector的增删查改3.1. 增3.2. 删3.3. 查3.4. 改 4. 总结 1. vector概述 vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新元素…

鸿蒙系统编译方式

鸿蒙系统编译 编译原理编译方式概述hb编译ohos-buildhb安装编译使用build脚本hpmhpm介绍编译举例说明综合应用举例虚拟机中编译docker中使用hpm编译编译原理 编译构建指导:https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/subsystems/subsys-build-all.md,文档介绍…

Comau柯马机器人维修故障分类

在柯马机器人的使用过程中,常见的是Comau机械手减速器故障。那么,我们一起来探讨一下柯马机械臂维修减速机故障的问题。Comau工业机械手减速器故障分类 1. 异响 机器人在工作过程中发出异常声响,可能是柯马机械臂减速器内部磨损或零件松动引起…

阿赵UE引擎C++编程学习笔记——解决中文乱码问题

大家好,我是阿赵。   在UE编写C的时候,可能有些朋友发现,在C里面如果打印输出或者赋值一些中文的字符串的时候,会出现各种的报错,要么乱码,要么直接编译不过。   这个问题,其实和UE本身没什…

嵌入式中STM32上模拟启动Linux自动初始化

Linux中有很多编程思想可以学习,很多大佬把这些思想、机制运用到单片机的编程上。 下文,在STM32上模拟Linux kernel自动初始化流程。 通常我们写程序都是按照这个套路,一个函数一个函数按照顺序逻辑一个一个的执行下去。 如果逻辑非常复杂,涉及的模块比较多,那么这种顺…

Visual Studio使用——vs解决方案显示所有文件

目录 引出vs解决方案显示所有文件Idea安装和使用0.Java下载 和 IDEA工具1.首次新建项目2.隐藏文件不必要显示文件3.目录层级设置4.Settings设置选择idea的场景提示代码不区分大小写 取消git的代码作者显示 总结 引出 Visual Studio使用——自定义代码片段 & 像使用IDEA一样…

LNG船气体监测系统中甲烷传感器的应用

随着全球能源结构的转型和环保意识的增强,液化天然气(LNG)作为清洁、高效的能源,其运输需求日益增长。LNG船作为专门用于运输液化天然气的特种船舶,其安全性和可靠性直接关系到能源供应的稳定性和环境保护的有效性。在…

windows下安装redis

正常生产我们会在Linux下安装redis,windows下安装redis只做依赖环境的快速搭建、项目的快速验证。 1、下载地址 Releases microsoftarchive/redis GitHub 下载 Redis-x64-3.0.504.zip 2、解压文件夹 解压到本地某个文件夹下,比如 D:\redis-3.0.504 3…

Compose容器编排示例

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 目录如下: 一、从源代码开始构建、部署和管理应用程序 1.1、创建项目目录并准备应用程序的代码及其依赖 1.2、创建Dockerfile 1.3、在…

GD32驱动LCD12864

目录 1、引言 1.1、LCD12864基本概念和作用。 1.2、硬件引脚 2、GD32微控制器简介 3、LCD12864显示屏简介 3.1、模块引脚说明 3.2、模块连接方式 4、驱动原理 4.1、指令集 4.2、显示坐标关系 5、软件开发 6、硬件连接 7、效果演示 8、附录 1、引言 1.1、LCD12…

C语言 | Leetcode C语言题解之第88题合并两个有序数组

题目: 题解: void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {int p1 m - 1, p2 n - 1;int tail m n - 1;int cur;while (p1 > 0 || p2 > 0) {if (p1 -1) {cur nums2[p2--];} else if (p2 -1) {cur nu…

sudo apt-get update失败,怎么解决

本篇文章主要是从我的解决方案出发,因为个体差异性,对大家的帮助可能有限,不过大家也可以作为参考之一。 输入sudo apt-get update,结果一直显示: W: 无法下载 http://mirrors.aliyun.com/ubuntu/dists/jammy-securi…