预训练数据预处理#

数据预处理概览#

大语言模型的卓越能力在很大程度上归功于其在海量、多样化的文本数据上的预训练。然而,原始数据的质量参差不齐,直接使用未经处理的数据进行训练,不仅会严重影响模型的最终性能,还可能引入偏见、安全风险和法律问题。因此,系统化、工程化的预训练数据处理是构建高性能、高安全、高可靠性大模型的基石。本文将对数据处理流程进行全面梳理,涵盖从数据提取,去重,打分,质量验证的全过程

数据提取#

数据提取的目标是从多样化的来源中获取海量、广泛且信息丰富的原始数据。随着大数据时代的到来,数据提取技术已成为人工智能、商业智能和科学研究的基础环节。有效的数据提取不仅能提高后续数据分析的质量,还能为模型训练提供更加全面和多样化的数据支持。

网页数据提取#

网页数据提取(Web Scraping)是指从网页中自动抓取和解析所需信息的过程。常见的网页数据提取方法包括:

  1. 基于规则的提取:

    • 使用 XPath 或 CSS 选择器定位特定 HTML 元素,比如用于提取 body,title 等关键信息。

  2. 动态网页处理:

    • 采用 Headless 浏览器(如 Puppeteer、Selenium)处理 JavaScript 渲染内容

  3. API 反向工程:

    • 分析网站后台 API 接口,直接调用 API 获取结构化数据

  4. 智能提取技术:

    • 基于机器学习的网页结构理解,自动识别和提取关键信息字段

网页数据抓取也要注意以下事项

合法性与伦理:在进行网页数据提取时,必须遵守法律法规,并尊重网站的隐私政策。许多网站的 robots.txt 文件中会列出哪些页面可以被抓取,哪些页面不能被抓取。

频率限制:过于频繁的抓取可能会给目标网站带来压力,甚至可能被封禁。因此,建议使用适当的抓取间隔,避免对网站造成负担。

多模态数据提取#

  1. 文本数据提取:

    • 自然语言处理(NLP)技术:用于从文本中提取有价值的信息,如情感分析、实体识别、主题建模等。

    • 关键词提取:通过算法从文档中提取出关键词,进行信息概括。

  2. 图像数据提取:

    • 计算机视觉技术:如对象检测、图像分类和图像描述,用于从图像中提取可识别的元素。

    • 深度学习模型:卷积神经网络(CNN)等模型用于识别图像中的特征。

  3. 音频数据提取:

    • 语音识别:将音频转化为文字,以便后续分析和处理。

    • 音频特征提取:通过提取音频中的频谱特征,进行音频分类或情感分析。

  4. 视频数据提取:

    • 视频帧分析:将视频分解为单独的帧,然后使用图像处理技术进行分析。

    • 视频内容识别:结合视频中的图像和音频,提取事件、动作或物体信息。

  5. 多模态融合:

    • 跨模态学习:通过模型学习不同模态之间的关联,如通过文本描述生成图像,或通过图像生成文字说明。

    • 多模态嵌入:将不同模态的数据转换为统一的向量表示,便于进一步分析和推理。

数据质量评估#

数据质量评估旨在剔除掉不安全,低价值的数据,并选出高知识,高价值的数据。

安全过滤#

基于 URL 的过滤:在数据采集初期,可以通过 URL 黑名单机制,过滤掉赌博,成人,诈骗等网站。比如最近开源的小红书大模型 dots.llm1 就采用了这种方法。

PII 隐私保护:隐私保护是在数据处理中避免泄露个人身份信息(PII),比如身份证号,邮箱,电话号码等。使用正则表达式和命名实体识别(NER)模型,可以自动检测并移除包含敏感个人信息的文本数据,确保符合隐私保护的要求。

版权过滤:在处理数据时,需要确保不侵犯他人的版权和知识产权。尊重 DMCA(Digital Millennium Copyright Act)和处理代码时移除许可证头信息是常见的做法,尤其是在使用网络上的公开数据进行训练时。

基于模型的过滤:通过训练模型来用于自动识别数据中的仇恨言论、暴力、色情等不良信息,一般可以使用如 BERT、RoBERTa 等模型。

质量打分#

利用大模型来评估数据质量是现在的常见方式之一。比如使用 GPT4.1 或者 DeepSeek-V3 来对已有数据来进行质量打分,通过设置阈值来进行数据筛选,下面是在利用大模型进行打分时一些需要注意的点:

  1. 数据完整性: 完整的数据通常被赋予较高的分数。例如,缺失关键字段或存在大量空值的记录会降低其质量评分。

  2. 数据一致性: 如果数据的一致性较好(如数据没有冲突或矛盾),则质量分数较高。反之,如果数据中存在明显的冲突或不一致,质量分数会较低。

  3. 数据准确性: 评估数据是否准确反映真实世界的情况。低准确度的数据(例如错误的标签或噪声数据)会影响数据质量。

  4. 数据来源可靠性: 数据来源的可靠性是评估数据质量的一个重要因素。来自可信来源的数据质量通常较高。

  5. 数据的合法性: 如果数据遵守法律和道德标准,如隐私保护、版权合规等,将获得较高的质量评分。

数据去重#

在大规模预训练模型的训练中,数据去重(Deduplication)是一个至关重要的环节。通过去重,可以有效避免模型在训练过程中多次学习相同的信息,从而提高训练效率,减少不必要的计算和内存开销,同时避免模型出现过拟合或学到冗余知识。接下来将详细介绍预训练数据去重的原理、技术以及相关的深入技术原理。

数据去重的目标#

数据去重的主要目标是:

  • 去除重复样本:避免在同一训练集内重复的样本导致重复训练,浪费计算资源。

  • 提高数据质量:去除无效、冗余或低质量的数据,保留有代表性的信息,提高数据集的多样性。

  • 减少过拟合风险:如果训练数据中存在大量的重复样本,模型可能会过度拟合这些样本,从而影响模型的泛化能力。

数据去重的挑战#

去重在大规模预训练数据集中的应用面临一系列挑战:

  • 规模庞大:大规模数据集通常包含数亿甚至数十亿条数据,人工去重不可行,因此需要高效的算法进行去重。

  • 相似性判定:数据可能不是完全相同,而是经过变换、不同的格式或语言表达,如何判断这些数据是重复的变得更为复杂。

  • 高效计算:去重过程中需要高效的计算资源和存储,尤其是在分布式训练或大规模数据处理的情况下。

数据去重的基本原理#

数据去重的核心问题是相似性计算,即如何有效地度量数据样本之间的相似度,并据此判断是否为重复数据。常见的去重方法有基于文本相似性哈希算法聚类分析等。

基于文本相似性#

一种常见的去重方法是通过计算文本之间的相似度来识别重复数据。可以使用以下几种技术:

  • Jaccard 相似度:计算两个文本的交集与并集之比。常用于基于词袋模型的相似度计算。

  • 余弦相似度:基于文本的词向量表示,计算两个向量之间的夹角,常用于高维稀疏向量空间的相似度度量。

  • 编辑距离(Levenshtein Distance):计算从一个字符串转化为另一个字符串所需的最小编辑操作数(插入、删除、替换)。该方法适用于检测两个文本是否是轻微修改的变体。

基于哈希算法#

另一种常用的去重方法是使用哈希算法对文本进行散列,常见的有以下几种:

  • SimHash:通过将文本转换为固定长度的哈希值,计算文本之间的哈希值差异。如果两个文本的哈希值非常相近,则认为它们是重复的。SimHash 广泛应用于大规模数据的去重。

    其原理基于将文本中每个词或特征映射为一个哈希值,并通过聚合(如加权平均或按位异或)生成最终的哈希值。通过计算哈希值之间的汉明距离,判断文本是否重复。

  • MinHash:常用于集合相似度计算,尤其是局部敏感哈希(LSH)中的一种实现。MinHash 可以高效地估计两个集合的 Jaccard 相似度,适用于去重任务中的快速估算。

基于聚类分析#

聚类分析是将数据样本根据相似度分成多个组的方法。通过聚类,我们可以识别出重复样本,并将它们归为一类,从而避免重复训练。

  • K-means 聚类:对于大规模文本数据,可以通过 K-means 聚类将相似的样本聚集到一起。如果一个簇中的样本之间相似度较高,则可以认为它们是重复的。通过设定合理的簇数和相似度阈值,可以高效地进行去重。

  • DBSCAN:密度聚类方法,能够识别任意形状的簇,并且不需要预先指定簇的个数。DBSCAN 可以自动将密度较低的噪声数据去除,从而有助于去除无意义的重复数据。

基于自然语言处理(NLP)#

现代自然语言处理技术能够有效地捕捉文本间的语义相似度,因此可以通过深度学习模型计算文本之间的相似性,尤其是在文本不完全相同的情况下。常用方法包括:

  • 词向量:如 Word2Vec、GloVe、FastText 等,通过将每个单词映射为向量,在向量空间中计算词汇间的相似度。

  • 句子向量:通过预训练模型(如 BERT、RoBERTa、Sentence-BERT)获取句子的向量表示,进而计算句子级别的相似度。BERT 等模型能够理解文本的上下文信息,因此对于复杂语句和同义替换的检测效果更好。

  • 语义匹配模型:例如通过训练一个文本匹配模型(如 Siamese Network),直接进行句子对之间的相似度评估,判断两个文本是否是重复的。

数据去重技术的优化与扩展#

  • 增量去重:对于动态数据集,可以通过增量去重来持续优化数据去重过程。当新数据加入时,通过更新哈希值或重新计算相似度,及时发现并去除重复数据。

  • 分布式去重:大规模数据集的去重往往需要分布式计算框架(如 Hadoop、Spark)来处理。使用 MapReduce 或分布式数据流处理框架,可以将数据划分为多个部分并并行计算,从而提高去重效率。

  • 增量训练去重:当数据量较大时,使用全量去重可能非常耗时。可以通过增量训练来进行去重,只在新数据或变化的数据上进行去重计算,而不必对所有数据进行重新计算。

数据质量评估#

上面的流程能够剔除掉对模型有危害的数据,并通过打分使得能够筛选一些高质量数据。但上面的流程都是一些经验性的,比较通用的流程,真正要检测数据质量必须要真正的训练模型,通过模型的表现来判断数据质量的好坏,可以通过如下实验验证。

实验设计:在相同的训练条件下,使用相同量的数据,通过查看 Loss 或者是 PPL 来判断数据质量的好坏,一般而言,Loss 越低,PPL 越小,数据质量越高。也可以看稳定收敛到相同位置时,训练的数据量多少,训练的数据量越小,数据质量越大,有实验说明高质量数据可以加快收敛。