本文系统介绍了大模型训练的五种学习方法:有监督学习、无监督学习、自监督学习、半监督学习和强化学习。详细讨论了数据集类型、质量与多样性对模型性能的影响、数据预处理技术,以及Scaling Laws三要素平衡扩展。同时提供了开源数据集资源,为读者提供了大模型训练的全面指南。
模型训练学习方法
有监督学习
有监督学习:AI 模型使用被标注了的数据样本进行学习,通过样本的真实值和预测值来求得 Loss 值。有监督学习因为需要对数据样本进行标注,所以只适用于数据量较小的场景。
MP 模型的逻辑门就是最简单的有监督学习训练。![]()
![]()
无监督学习
无监督学习:AI 模型使用没有任务标注的数据样本进行学习,通过聚类分析、主成分分析等算法来进行分类和降维。无监督学习的 Loss 值并非使用真实值和预测值来计算,而是基于数据的内在结构规律来定义的,其描述的是模型对数据内在结构的拟合程度。
例如:K-means 动态聚类算法可以将 n 个样本点自动分成 K 类,它的目标是让同一个簇内的样本尽可能紧凑,不同簇尽可能分离。所以 K-means 的 Loss(SSE) 值就是所有样本到其所属簇中心的距离平方和(Sum of Squared Errors)。例如:组内离差平方和、欧氏距离平方和等。
由于无监督学习的核心目标是让模型学习到数据的分布、聚类紧凑性或特征相关性,所以不需要对数据样本进行标注,也因此适用于数据量很大的场景。但无监督学习过程中的自动聚类是难以控制的,相较于有监督学习的人工标注,后者具有明确的优化目标,即:人为控制模型收敛的方向。
自监督学习
自监督学习:同样不会对数据样本进行标注,所以自监督学习是无监督学习的一个子集。而核心区别在于自监督学习会自动构造 “伪标签(Pseudo-Labelling)”,即:从数据本身的内在结构和规律自动构造 “标签”,以此计算 Loss 并驱动模型收敛。典型的自监督学习就是 GPT 系列的 CLM(Causal Language Model,因果语言模型)预训练任务。
GPT CLM 任务的训练目标是 “给定上文,预测下一个词的概率”,整个过程无需人工标注,具体步骤如下:
- 输入处理:从海量无标注的文本(比如书籍、网页)中截取一段连续文本,然后分词并构造输入序列。
原文:I love natural language processing 输入序列拆解为:I → love → natural → language- 自动生成伪标签:将输入序列中的下一个词作为 “标签”。这里的伪标签完全由文本本身的顺序生成,是 “自监督” 的核心体现。
- 输出预测值:模型通过上文输入,Forward Pass,然后根据词汇表输出下一个词的概率分布。例如:词汇表有 10 万个词,那么就会输出一个 10 万维的概率向量,表示每个词作为下一个词的可能性(预测)。
- 计算 Loss 并反向传播:通过输出预测值和伪标签来计算 Loss,采用交叉熵损失算法,可以衡量预测的 Token 概率分布与真实 Token 的差异,优化模型参数以最小化损失。
然后可以进行 Backward Pass 了,收敛过程和有监督学习一致。
综上可见,自监督学习兼具了无监督的低成本和有监督的明确优化目标。
- 海量数据提供充足的学习信号:虽然单条文本的伪标签很简单,但超大规模的无标注语料中,包含了语言的所有规律(比如 “太阳” 后面常跟 “升起”,“吃饭” 前面常跟 “我”)。模型通过海量样本的学习,能捕捉到这些通用的语言模式,最终收敛到稳定的参数状态。
- 预训练 + 微调的范式:GPT-1 的预训练是自监督的,目的是学习通用语言表示;而 GPT-3 的微调则是有监督的,使其具备了 “举一反三” 的能力,能够针对具体任务(如分类、问答)时,只需要少量标注数据做微调,就能把通用能力迁移到下游任务。这也是自监督预训练的价值所在。
半监督学习
半监督学习(semi-supervised learning):是有监督学习、无监督学习和自监督学习的折中方案,使用大量的无标注数据和少量的有标注数据进行训练(标注数据占比通常极低,如 1%~10%)。同时再使用少量的有标注数据来为无标注数据进行 “伪标注”。
半监督学习,可以有效利用未标注数据的分布规律,提升少量标注数据的学习效果,平衡标注成本和模型性能。其具体的训练流程如下图所示:
- 在有限的已标注数据上训练模型,此时模型会根据已标注数据学习到优化目标。
- 再使用模型在未标记的数据上创建 “伪标签”,并将高置信度的伪标签作为目标添加到现有的标记数据集中,从而创建额外的训练数据。
- 最后使用已标注数据和 “伪标签” 数据进行训练,会得到 2 个 Loss。1)监督 Loss:已标注数据的预测值与人工标签的差距;2)无监督 Loss:未标注数据的预测结果与数据分布规律的差距(如一致性正则化模型)。
- 最终 Loss 的计算方式为 2 个 Loss 的加权求和。
强化学习
强化学习(Reinforcement Learning)是有别于上述学习方法的另一种机器学习方法,主要讨论的问题是智能体怎么在复杂的、不确定的环境中最大化它能获得的奖励。
如下图所示,强化学习主要由 2 部分构成:智能体和环境。在强化学习过程中,智能体会不断行动并从环境获取反馈,根据反馈来调整自己行动的策略。
强化学习具有以下 2 个主要区别:
- 数据样本:强化学习使用 “与环境交互的奖励信号” 作为动态的数据样本,而不是静态的数据集(标注、未标注、伪标注)。
- 学习范式:有监督、无监督、自监督、半监督学习的学习范式是 Loss 最小化(拟合数据 / 标签 / 结构),而强化学习的学习范式是 “长期累积的奖励最大化”(找到最优决策策略)。
数据集类型
按照数据的作用划分:
- 通用文本数据:用于基础预训练阶段,训练模型的基本文字理解能力。
- 领域文本数据:用于增量预训练阶段,训练模型的专业领域知识理解能力,比如金融领域、医疗领域等等。
- 私域文本数据:用于微调阶段,训练模型的企业内部私域知识理解能力。
按照数据的特性划分:
- 无标注数据:用于自监督预训练阶段,采用海量、多样化的无标注文本数据,规模通常达到万亿 tokens 级别(如 GPT-3 训练数据约 45TB 文本),涵盖书籍、网页、论文、新闻等,确保模型接触到广泛的语言现象和知识。通过这些数据,模型能自动捕捉语法、语义、逻辑关系和世界常识。
- 有标注数据:用于有监督微调阶段,采用人工标注的高质量数据进行特定任务下的优化,数据量从万~百万级不等。
无标注数据集
常见的无标注数据来源包括:
- 网页:例如 CommonCrawl 包含大规模的网络爬虫数据;
- 对话文本:包含书面形式的对话、聊天记录、论坛帖子、社交媒体评论等。
- 书籍&新闻:例如 BookCorpus 包含了大量公开可用的书籍文本。
- 科学文本:包括教材、论文、百科及其他相关资源。例如 Wikipedia 包含多语言的百科全书文本。
- 代码:例如 Github 提供了大量的开源代码。
- 多语言数据:对于增强大语言模型的多语言理解和生成多语言能力具有至关重要的作用。
下图展示了不同大模型采用的数据类型配比。
自监督预训练数据集示例:
- Text:在预训练时,只有 text 列中的 内容 (即 document)会用于模型训练。
- Code:
有标注数据集
SFT 数据集示例:
强化学习数据集示例:
数据质量对模型性能的影响
下图展示了样本数据质量对模型性能的影响。
- 模型性能:通过 Loss 的体现,损失越低,代表模型对文本的预测能力越强、性能越好。
- 测试 3 个任务场景:Wikitext103 单词预测、Curation Corpus 摘要、Lambada 书籍级别的单词预测
- OpenWebText / C4:天然高质量数据集(本身是经过筛选、去重的优质文本),作为基准对象。
- MassiveWeb Unfiltered:低质量原始数据(未过滤、未去重的海量网页文本,含噪声、重复内容),Loss 表现最差。
- Quality Filter / Exact Deduplication / Fuzzy Deduplication:针对 MassiveWeb Unfiltered 执行一系列的数据质量提升操作(过滤低质内容、精确去重、模糊去重)后,Loss 表现逐步变好。
下图表示使用高质量数据训练的模型在自然语言生成和自然语言理解任务上表现更好。高质量预训练语料库对语言模型的生成能力至关重要。
数据多样性对模型性能的影响
根据研究,LLM 所掌握的知识绝大部分都是在预训练过程中学会的,因此,为了使训练出的 LLM 能够覆盖尽可能广的知识面,预训练语料需要组织多种来源的数据,并以一定比例进行混合。来自不同领域、不同语言、不同场景的训练数据具有不同的语言特征,包含了不同的语义知识。保证数据多样性可以让大语言模型获得更广泛的知识。比如中文数据通常需要较高比例的英文数据以弥补质量差异。通常来说,中 : 英 : code = 4 : 4 : 2。
所以训练时,要考虑数据集采样配比的问题,将不同类型的数据(如新闻、百科、代码等)按合理比例混合。通过分类器将数据分门别类,并根据类别设定不同的清洗和去重标准,确保各类数据在训练集中合理分布。
下图显示了 Llama 型训练混合了大量不同来源的数据,以及各个数据集的采样概率,以此来保证数据样本的多样性。包括网页、代码、论文、图书等。针对不同的文本质量,Llama 模型训练针对不同质量和重要性的数据集设定了不同的采样概率,表中给出了不同数据集在完成 1.4 万亿个词元训练时的采样轮数。
另外,数据顺序也会影响模型的学习效果,类似于 “课程学习”。合理安排数据的训练顺序,可以提升模型的知识吸收和应用能力。LLama 的研究建议通过语义相似度拼接相关文档,增强上下文连贯性,但实际操作中需根据具体需求进行调整。
数据预处理
数据过滤
数据过滤是确保训练数据质量的关键。常见的数据过滤方法有 2 类。
- 基于分类器的方法:训练一个专用于数据质量打分和过滤的模型。常用的是利用 transformer-encoder 的 BERT 系列模型对数据进行打分,因为其表征能力优于 transformer-decoder 模型。并且使用一组精选文本(维基百科、书籍和一些选定的网站)进行训练,作为打分器的质量标准正样本。打分器能够筛选出含有不良内容或低质量数据的样本作为负样本。但对代码、Markdown 等格式的数据评分较低,需要单独处理。
- 基于启发规则的方法:通过精心设计的规则有针对性地识别和剔除低质量数据。例如:
- 语言过滤:为了训练特定目标语言的模型可以过滤掉其他语言的文本;
- 指标过滤:如根据数据长度等指标进行过滤;利用困惑度(Perplexity)等文本生成评估指标来检测和删除表达不自然的句子。
- 统计特征过滤:使用统计特征来衡量文本质量。例如单词比率,对于网页数据,过滤任何具有超过 100 个重复单词或句子的文档,以及过滤符号和词元比大于 0.1 的文档;对于论坛数据,过滤掉任何点赞数少于 3 的用户评论。
- 关键词过滤:通过关键词集合进行过滤。对于维基百科数据,过滤掉任何拥有少于 25 个 UTF-8 单词的页面;对于网页数据,过滤掉 HTML 标签,以及过滤掉任何不含有 the, be, to, of, and, that, have, with 词汇的文档。
数据去重
避免重复内容影响训练效果。重复数据会降低大语言模型的多样性,并可能导致训练过程不稳定。例如:包含重复单词或短语的句子很可能造成语言建模中引入重复的模式。这对语言模型来说会产生非常严重的影响,使模型在预测时容易陷入重复循环。
使用大数据框架如 Hadoop 或 Spark,通过 MinHash 或 SimHash 等技术实现高效去重。去重的粒度应根据训练需求灵活调整,以确保数据多样性和质量。
- 句子级别去重:提取并过滤文档间超过一定长度的相同字符串。
- 文档级别去重:靠文档之间的表面特征相似度,检测删除相似文档。
- 数据集级别去重:很多大语言模型预训练数据集都会包含 GitHub、Wikipedia。
下面以 SimHash 批量去重为例:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import numpy as np # 1. 分词:将 “不能复现的软件不算开源软件” 分为 “不能”、“复现”、“的”、“软件”、“不算”、“开源软件”。 words = ['不能','复现','的','软件','不算','开源软件'] def encode_word(hash_int): # 3. 二进制化:将获得的 hash 值转成二进制,用 0 补齐到 md5 标准的 128bit,然后 1 保持不变,0 变成 -1,就得到了 simhash 算法中单词的向量表示 bin_hash_value = bin(hash_int)[2:].zfill(128) # 确保二进制串长度严格为 128 位(截断超长部分,避免哈希值超出 128 位) bin_hash_value = bin_hash_value[-128:] # 将每个bit转为1或-1的嵌入向量 embedding = np.array([1 if bit == '1' else -1 for bit in bin_hash_value]) return embedding # 2. HASH:计算每个词的 hash 值。 word_embeddings = [encode_word(hash(word)) for word in words] # 对所有嵌入向量逐位求和 sum_embeddings = sum(word_embeddings) print(sum_embeddings)执行输出:
[-6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 2 -4 6 -2 2 -4 2 -2 2 2 0 -6 -2 0 0 4 0 -4 2 4 2 -2 2 2 -6 -2 -4 0 -2 0 -2 -4 0 -4 2 -2 -2 0 2 2 -2 4 0 2 0 2 -2 -2 0 -2 2 -2 -2 4 2 -6 0 4 -2 0 2 0 2]把大于 0 的变成 1,小于的变成 0:
print(np.clip(sum(word_embeddings), 0, 1)) ''' [0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 1 1 0 0] '''现在,只需要比较两个文档向量的汉明距离(有多少个比特不一样),就能比较两个文档的相似性了。
词元切分(Tokenization)
词元切分是一个文本表示向量化的过程,是 NLP 的基础,通常包括:分词和子词切分。
- 分词:分词是为了构建词汇表,词汇表决定了分词器如何将文本转化为 Token 序列。所以大模型的 Word Embedding(词嵌入)阶段依赖词汇表,模型只能处理词汇表中存在的词,但词汇表不可能囊括所有的词,因此在就会存在 “未登录词” 的情况。大模型无法为未登录词生成对应的词向量,只能给予这些未登录词一个默认的通用表示 [UNK](unknown)作为其词向量。
- 子词切分:子词切分是为了解决 UNK 的问题,子词切分可以构建词元表。其中既存在完整的单词,也存在形如英文单词词根词缀一般的子词(Subword)。比如: Nothing is impossible 会被子词分成 No th ing is im possi ble。
我们可以选择使用分词器来完成以上工作,常见的有 BPE(Byte-Pair Encoding)、SentencePiece 或 WordPiece。以 BPE 为例,它首先会把所有单词拆分为单个字符,然后通过合并常见的字符对形成更长的子词(subword)。通过迭代地合并频率最高的字符对,逐步构建词汇表,词汇表大小通常是 128 的整数倍。
为了高效加载和预处理,实际的预训练语料在训练之前都会先经过 Tokenizer 分词,并转换为 Binary(二进制)或 HDF5 格式文件,还会进行分块(sharding)支持并行读取。因为实际数据量很大,想要一次性读取到内存中不现实,每个块通常按照 1B、2B、4B 的大小分割。
数据集质量评估
- 相关性:数据必须与目标任务紧密相关。例如,法律 AI 的数据应包含像 “合同有效的要求是什么?” 这样精准的法律问题和答案。
- 准确性:答案必须正确且权威。想象一份食谱错把糖当盐,结果不堪设想!同样,医疗 AI 的训练数据需要由专业医生审核。例如:“糖尿病是什么原因引起的?” 的答案必须基于科学事实,而非谣言。
- 多样性:数据应涵盖多种场景和表达方式。对于客服 AI,数据应包含类似 “如何退货?” 的多种问法,例如 “能退货吗?” 或 “退货流程是什么?”,以提升模型的灵活性。
- 一致性:数据的语气和格式需保持统一。如果目标是专业语气,答案应避免俚语。例如 “请提供您的账户详情” 比 “嘿,给我你的信息” 更合适。
- 干净:数据需剔除噪音,例如拼写错误、无关内容或重复数据。用户生成的内容(如论坛帖子)需特别过滤广告或无关信息。
- 适量:数据量过少会让模型 “营养不良”,过多的低质量数据则会拖累表现。几千条高质量的 QA 对往往比海量低质量数据更有效。
Scaling Laws 三要素平衡扩展
OpenAI 在 2020 年的论文中提出了 Scaling Laws(扩展定律),证明了 LLM 的性能(以交叉熵损失衡量)遵循一定的数学幂律关系(Power-law)。即:大预言模型的 Loss(损失函数)值与模型参数量(N)、训练数据量(D)、计算资源量(C)这 3 者之间存在着稳定且可预测的数学关系。
- L:损失函数,收到 N、D、C 的影响。
- α、β、γ:常数系数,α≈0.076、β≈0.095、γ≈0.05,实际值因任务不同略有调整。
如上图所示:
- 模型参数量(N):模型的总参数规模越大,Loss 越低。例如:将参数量从 1 亿增至 10 亿,损失下降幅度超过线性增长预期。
- 计算资源量(C):训练所用的浮点运算量(FLOPs)与 Loss 呈反向幂律关系,即:更多的计算资源可显著提升模型效果。
- 训练数据量(D):如下图所示,LLaMA 表明:随着 D 的增加,模型在分属两类任务的 6 个数据集上的性能都在稳步提高。通过增加 D 和延长训练时间,较小的模型也能表现出良好的性能。仅对模型进行 10M∼100M个词元的训练,就可以获得可靠的语法和语义特征。然而,需要更多的训练数据才能获得足够的常识知识和其他技能,并在典型的下游自然语言理解任务中取得较好的结果。
但值得注意的是,Scaling Law 展示了 NCD 这 3 者之间存在着微妙的平衡关系。若仅扩大其中一项而其他两项受限,将导致收益显著降低。DeepMind 研究表明如果希望模型训练达到计算最优(Compute-optimal),则模型大小和训练词元数量应该等比例缩放,即模型大小加倍则训练词元数量也应该加倍。例如,若 N 增加 8 倍,那么 D 需至少增加 5 倍才能避免过拟合。
另外,在 C 和 N 固定时,增加 D 可以缓解过度拟合,但存在边际递减效应。如下图所示,当 C 固定时,Loss 变化存在一个最优的 D,而不是单存的越多越好。所以,大模型训练需要关注 3 要素的平衡扩展。若仅扩大其中一项而其他两项受限,将导致收益显著降低。
下面是一些主流模型的 N、D 配比:GPT 认为是 1.7 倍,也就是说 175B 的 GPT-3,需要使用 300B token 进行预训练。
开源数据集
Hugging Face和魔塔社区是著名的 2 个开源模型和开源数据集的网站,此外还有 OpenDataLab、智源数据平台等等,我们可以在这些网站上下载许多知名的开源数据集。
Pile:用于大语言模型训练的多样性大规模文本数据库,由 22 个不同的高质量子集构成,包括现有的和新构建的,主要来自学术或专业领域。ROOTS(Responsible Open-science Open-collaboration Text Sources):包含 46 种自然语言和 13 种编程语言,总计 59 种语言,整个数据集的大小约 1.6TB。
RefinedWeb:数据源为 CommonCrawl,初始数据总量超过 1PB。经过文档准备、过滤和冗余去除后仅保留了大约 11.67% 的数据。
SlimPajama:原始的 RedPajama 包含 1.21 万亿个词元,经过清洗和去重后的 SlimPajama 数据集包含 6270 亿个词元。
- NFC 正则化(NFC Normalization):过滤非 Unicode 字符。
- 过滤短文档(Filter Short Documents):过滤了长度少于 200 个字符的文档,长度非常短的内容对模型训练没有作用。
- 全局去重(Deduplication):包括数据库内和数据库间的去重,有多个阶段,比如构建 MinHashLSH 索引、在索引中进行查询以定位重复项、构建图表示以确定重复连通域,最后过滤每个成分中的重复项。
- 文档交错与文档重排(Interleave & Shuffle):大语言模型训练大多是在多源数据集上进行的,需要使用指定的权重混合这些数据源。
- 训练集和保留集拆分(Split Dataset into Train and Holdout):这一步主要是完成第二次随机重排并创建保留集。
- 训练集与保留集中相似数据去重(Deduplicate Train against Holdout):最后一步是确保训练集和保留集之间没有重叠。
最后
选择AI大模型就是选择未来!最近两年,大家都可以看到AI的发展有多快,时代在瞬息万变,我们又为何不给自己多一个选择,多一个出路,多一个可能呢?
与其在传统行业里停滞不前,不如尝试一下新兴行业,而AI大模型恰恰是这两年的大风口,人才需求急为紧迫!
人工智能时代最缺的是什么?就是能动手解决问题还会动脑创新的技术牛人!智泊AI为了让学员毕业后快速成为抢手的AI人才,直接把课程升级到了V6.0版本。
这个课程就像搭积木一样,既有机器学习、深度学习这些基本功教学,又教大家玩转大模型开发、处理图片语音等多种数据的新潮技能,把AI技术从基础到前沿全部都包圆了!
课堂上不光教理论,还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事!
课程还教大家怎么和AI搭档一起工作,就像程序员带着智能助手写代码、优化方案,效率直接翻倍!
这么练出来的学员确实吃香,83%的应届生都进了大厂搞研发,平均工资比同行高出四成多。
智泊AI还特别注重培养"人无我有"的能力,比如需求分析、创新设计这些AI暂时替代不了的核心竞争力,让学员在AI时代站稳脚跟。
课程优势一:人才库优秀学员参与真实商业项目实训
课程优势二:与大厂深入合作,共建大模型课程
课程优势三:海外高校学历提升
课程优势四:热门岗位全覆盖,匹配企业岗位需求
如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!
·应届毕业生:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
·零基础转型:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
·业务赋能 突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。
智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念,通过动态追踪大模型开发、数据标注伦理等前沿技术趋势,构建起"前沿课程+智能实训+精准就业"的高效培养体系。
重磅消息
人工智能V6.0升级两大班型:AI大模型全栈班、AI大模型算法班,为学生提供更多选择。
由于文章篇幅有限,在这里我就不一一向大家展示了,学习AI大模型是一项系统工程,需要时间和持续的努力。但随着技术的发展和在线资源的丰富,零基础的小白也有很好的机会逐步学习和掌握。
【最新最全版】AI大模型全套学习籽料(可无偿送):LLM面试题+AI大模型学习路线+大模型PDF书籍+640套AI大模型报告等等,从入门到进阶再到精通,超全面存下吧!
获取方式:有需要的小伙伴,可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
来智泊AI,高起点就业
培养企业刚需人才
扫码咨询 抢免费试学
⬇⬇⬇
AI大模型学习之路,道阻且长,但只要你坚持下去,就一定会有收获。