大语言模型的数据预处理

news2024/10/5 14:14:59

文章目录

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

    当收集了丰富的文本数据之后,为了确保数据的质量和效用,还需要对数据进行预处理,从而消除低质量、冗余、无关甚可能有害的数据。一般来说,需要构建并使用系统化的数据处理框架(如开源库 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.coloradmin.cn/o/1672584.html

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

相关文章

第十五节:贪心算法(下)

一 、 贪心算法的解题套路实战一(最多的会议宣讲场次) 1.1 描述 一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。 给你每一个项目开始的时间和结束的时间 你来安排宣讲的日程,要求会议室进行的宣讲的场次最多。…

校园志愿者管理系统带万字文档

文章目录 校园志愿者管理系统一、项目演示二、项目介绍三、10000字论文参考四、部分功能页面五、部分代码展示六、底部获取项目源码和万字论文参考(9.9¥带走) 校园志愿者管理系统 一、项目演示 校园志愿者管理系统 二、项目介绍 基于Spring…

快速对比 找出2个名单不同之处

import pandas as pd# 读取两个Excel文件 df1 pd.read_excel(1.xlsx) df2 pd.read_excel(2.xlsx)# 检查两个DataFrame的列是否相同 if list(df1.columns) ! list(df2.columns):print("两个Excel文件的列不一致。")print("文件1的列:", df1.co…

免费思维13招之九:时间型思维

免费思维13招之九:时间型思维 免费思维的另一大战略思维——时间型思维。 什么是时间型思维呢?就是在某一个规定的时间内对消费者进行免费,比如一个月中的某一天,或一周中的某一天或一天中的某一个时间段对消费者进行免费。 就在去年,有一个电影院老板弟子,他的电影院营…

基于SSM的“基于协同过滤的在线通用旅游平台网站”的设计与实现(源码+数据库+文档)

基于SSM的“基于协同过滤的在线通用旅游平台网站”的设计与实现(源码数据库文档) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统主界面 景点信息界面 后台界面 部分源码…

设计循环队列-C语言实现

题目描述 设计循环队列 设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前用过的…

算法-卡尔曼滤波之为什么要使用卡尔曼滤波器

假设使用雷达来预测飞行器的位置; 预先的假设条件条件: 1.激光雷达的激光束每5s发射一次; 2.通过接受的激光束,雷达估计目标当前时刻的位置和速度; 3.同时雷达要预测下一时刻的位置和速度 根据速度,加速度和位移的…

Spring简介IOCDI

文章目录 Spring简介Spring课程介绍为什么要学学什么怎么学 初识SpringSpring家族Spring发展史 Spring体系结构Spring核心概念目前代码存在的问题核心概念 IOC和DI入门案例IOC入门案例入门案例分析实现步骤实现代码 DI入门案例DI入门案例分析实现步骤实现代码图解演示 Bean的基…

【超详细】跑通YOLOv8之深度学习环境配置3-YOLOv8安装

环境配置3下载安装内容如下: 1、配置清华等镜像源 2、创建环境 3、下载安装Pytorch 4、下载安装YOLOv8运行环境 版本:Python3.8(要求>3.8),torch1.12.0cu113(要求>1.8) 1、配置清华等镜…

用Arm CCA解锁数据的力量

安全之安全(security)博客目录导读 目录 CCA将如何改变Arm架构呢? 在实践中部署CCA 释放数据和人工智能的全部力量和潜力 早期计算中最大的挑战之一是管理计算资源,以最大化计算效率同时提供给不同程序或用户分配资源的分离。这导致了我们今天大多数使用的时间…

Windows环境下代码文档生成工具Doxygen使用详细教程

背景 最近研究aom源码,发现编译需要依赖Doxygen工具,故此篇博客详细记录下Doxygen的安装和使用。 Doxygen Doxygen 是一个强大的源代码文档生成工具,它支持多种编程语言,能够直接从源代码中的注释提取文档,并生成多…

基于SpringBoot设计模式之创建型设计模式·抽象工厂模式

文章目录 介绍开始架构图(以穿搭举例)样例一(html关于列表和表格的应用)定义抽象工厂(html)定义抽象工厂需要制作抽象产物(托盘)定义具体工厂(列表、表格)定义…

Mamba:4 魔幻矩阵A

若在阅读过程中有些知识点存在盲区,可以回到如何优雅的谈论大模型重新阅读。另外斯坦福2024人工智能报告解读为通识性读物。若对于如果构建生成级别的AI架构则可以关注AI架构设计。技术宅麻烦死磕LLM背后的基础模型。 ​Mamba自从出道就一直被拿来和Transformer对比…

HIVE卡口流量需求分析

HIVE卡口流量需求分析 目录 HIVE卡口流量需求分析 1.创建表格 插入数据 2.需求 3.总结: 1.创建表格 插入数据 CREATE TABLE learn3.veh_pass( id STRING COMMENT "卡口编号", pass_time STRING COMMENT "进过时间", pass_num int COMMENT …

懒人网址导航源码v3.9

测试环境 宝塔Nginx -Tengine2.2.3的PHP5.6 MySQL5.6.44 为防止调试错误,建议使用测试环境运行的php与mysql版本 首先用phpMyAdmin导入数据库文件db/db.sql 如果导入不行,请直接复制数据库内容运行sql语句也可以 再修改config.php来进行数据库配置…

AI智能体|我把Kimi接入了个人微信

大家好,我是无界生长。 最近加入AI学习交流群的小伙伴越来越多,我打算在微信群接入一个聊天机器人,让它协助管理微信群,同时也帮忙给群友解答一些问题。普通的群聊机器人肯定是不能满足需求的,得上AI大模型&#xff0c…

EPS软件标注点坐标值

1、如下,点击右侧(尺寸标注)按钮: 2、弹出一个对话框,如下: 3、在上图对话框中设置好箭头样式和小数位数,然后点击图上一点,右击结束再鼠标指定位置,如下: 如…

同城预约上门服务家政小程序

基于Thinkphp和原生微信小程序开发的一款同城预约、上门服务、到店核销家政系统,用户端、服务端、门店端各端相互依赖又相互独立,支持选择项目、选择服务人员、选择门店多种下单方式,支持上门服务和到店核销两种服务方式,支持自营…

树莓派|连接CSI接口摄像头+opencv

CSI(Camera Serial Interface)接口摄像头是一种常见的嵌入式系统或移动设备中使用的摄像头接口。它通常用于与处理器或图像传感器进行直接连接,实现高速的图像数据传输。 CSI接口摄像头具有以下特点: 高速传输:CSI接口…

仓库管理流程详解(附作业流程图)

仓库管理流程在企业的日常运营中至关重要。它不仅是物资流转的核心环节,更关乎着企业的运营效率、成本控制和客户服务水平。一个高效、规范的仓库管理流程能够确保货物从入库到出库的各个环节有序进行,减少资源浪费和时间成本,同时帮助企业实…