OpenLLM | 预训练数据构造方法总结
前言
大语言模型火到现在,很多人都会好奇:它到底是怎么拥有“说话”能力的?先从第一步说起——预训练。预训练的目标,就是教会模型“开口”:具备基本的语言表达能力,同时积累丰富的“知识”。更重要的是,预训练阶段的质量直接决定了模型在下游任务中的泛化表现。一个好的预训练不仅能让模型在SFT阶段更快收敛,还能帮助模型“不说假话”——也就是缓解幻觉问题。
LLM预训练的方法本身很简单:用负对数似然损失作为目标函数,让模型基于上文预测下一个token。但真正决定模型性能的,是训练数据的构成和处理方式。下面就从这两个方面展开。
数据来源
LLM预训练的数据来源大体上可以分为两大类:
通用数据
专业数据

1. 通用数据
通用数据在训练数据中占比最高,主要包括网页、书籍、对话数据等,为LLM提供大规模、多样化的训练样本。
- :数量最多的一类。其中包含海量内容,让LLM获得多样化的语言知识并增强泛化能力。不过从网上爬取的网页既有高质量文本(如维基百科),也有大量低质量文本(如垃圾邮件),所以过滤和处理是重中之重。
网页数据
- :提供了广泛的词汇——专业术语、文学表达、各类主题词汇。这是唯一的长文本书面语来源,完整的句子和段落让LLM能学习上下文之间的关联。
书籍数据
2. 专业数据
专业数据占比虽然不高,但能显著提升LLM在特定任务上的表现。
- :对增强模型的多语言理解和生成能力至关重要。通过混合训练多语言数据,LLM能在一定程度上自动构建不同语言之间的语义关联,从而提升机器翻译、多语言摘要和多语言问答等任务的能力。
多语言数据
- :包括论文、百科及其他资源,对提升科学知识理解能力很重要。但这类数据涉及众多专业领域,形式复杂,通常需要对公式、化学式、蛋白质序列等特殊符号进行预处理(比如用LaTeX语法表示公式)。
科学文本
- :程序生成任务所必需。代码不仅包含本身,还有大量注释信息。与自然语言不同,代码是格式化语言,对应着长程依赖和准确的执行逻辑。主要来源包括编程问答社区(如Stack Exchange)和公共软件仓库(如GitHub)。
代码
数据处理
收集好数据之后,下一步就是处理。大量研究表明,数据质量对LLM的影响极大——从实际经验来看,这一点感受非常深刻。数据处理通常包括去除低质量数据、重复数据、有害信息和个人隐私等。下图是常见的数据处理流程。

1. 质量过滤
低质量数据过滤方法主要分两类:基于分类器的方法和基于启发式的方法。
- :目标是训练文本质量判别模型,用于识别并过滤低质量数据。例如GPT-3、PaLM和GLaM都使用了该方法。GLaM采用基于线性特征哈希的线性分类器,效率很高,用一组精选文本训练,给高质量网页较高分数。
基于分类器的方法
- :通过一组精心设计的规则来消除低质量文本,BLOOM和Gopher采用了这种方法。常见规则包括:
基于启发式的方法
- :如果只关注一种或几种语言,可以大幅过滤其他语言文本。
语言过滤
- :利用评测指标过滤低质量文本。
指标过滤
- :计算标点符号分布、符号占比、句子长度等统计特征进行过滤。
统计特征过滤
- :根据特定关键词集,识别并删除噪声或无用的元素。
关键词过滤
2. 冗余去除
重复数据会降低LLM的多样性,并可能导致训练不稳定,所以必须处理。冗余去除在不同粒度上进行,包括句子、文档和数据集级别。
- :重复单词或短语的句子可能导致模型在预测时陷入重复循环。过滤方法包括提取并过滤文档中超过一定长度的相同字符串。
句子级别
- :大多数LLM依靠文档之间的表面特征相似度(如n-gram重叠比例)来检测并删除重复文档。
文档级别
- :由于很多LLM的预训练数据包含GitHub、维基百科等公共数据集,同样需要从数据层面去除冗余。
数据集级别
3. 隐私消除
预训练数据大部分来自互联网,难免包含敏感或个人信息,存在隐私泄露风险——比如模型可能补全姓名、电子邮件、电话号码等。最直接的方法是基于规则,例如使用命名实体识别算法检测并删除或替换姓名、地址、电话号码等。
4. 词元切分
NLP里对单词进行计算,需要先构建词典,把单词转换成embedding。词表大小对模型性能影响很大:太小会导致未登录词比例高,太大则低频词向量难以充分学习。为解决未登录词问题,很多工作采用子词级别的表示。BPE是一种常见算法,词表包含最常见单词和高频子词,常见词直接匹配,罕见词可分解成多个词元。WordPiece也是类似思路的方法。
总结
熟悉LLM的人都知道,现有大模型在结构上其实大同小异,基本上都是Decoder-only或引入MoE结构——修改模型结构对性能提升的性价比并不高。而在训练过程中,数据准备和处理是工程量最大、花费人力最多的部分。随着LLaMA-3等新版本发布,可以明显看到:对于相同参数的模型,更多高质量数据带来的性能提升非常显著。所以在工业和学术研究中,围绕数据做文章无疑是最直接、性价比最高的方案。
预训练让LLM掌握了“知识”,但要让模型听懂人的语言指令、完成特定任务,还需要有监督微调(SFT)和人类反馈强化学习(RLHF)等步骤。后续我们将继续探讨这些内容。
参考文献:
[1] A Survey of Large Language Models.
[2] Language Models are Few-Shot Learners.
[3] PaLM: Scaling Language Modeling with Pathways.
[4] GLaM: Efficient Scaling of Language Models with Mixture-of-Experts.
[5] BLOOM: A 176B-Parameter Open-Access Multilingual Language Model.
[6] Scaling Language Models: Methods, Analysis & Insights from Training Gopher.
[7] Neural Machine Translation of Rare Words with Subword Units.
[8] Japanese and Korean voice search.
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名