首页
看点啥
插画图片
首页 看点啥 大模型的聪明从哪来 聊聊 AI 数据集的那些事儿

大模型的聪明从哪来 聊聊 AI 数据集的那些事儿

2026-07-01 0

大模型的"聪明"从哪来?聊聊 AI 数据集的那些事儿

前言

每次和朋友聊起 AI,总会有人问:"GPT 这么聪明,是不是因为它算力特别强?"

大模型的"聪明"从哪来?聊聊 AI 数据集的那些事儿

我通常会反问一句:"你觉得一个学生考高分,是因为他脑子聪明,还是因为他刷的题多、学的好?"

答案是:都重要,但数据才是那个被严重低估的因素。

今天我们就来聊聊,大模型的数据集到底是什么,为什么要分成训练集、验证集、测试集,以及在实际工程中我们怎么处理数据。

一、LLM 的智能三要素

大模型的"智能"来自三个东西:

要素是什么类比
算力GPU/TPU 的计算能力学生的脑力
算法Transformer 架构学习方法
数据海量的文本语料教材和习题

很多人觉得算力最重要——毕竟一张 H100 显卡要几十万。但实际情况是:

就像一个学生,脑子再聪明(算力强)、学习方法再好(算法优),如果不给他好的教材和足够的练习题(数据),他也成不了学霸。

二、数据集为什么要分成三份?

这是很多新手会问的问题:我有一堆数据,直接全扔给模型训练不就完了?

不行。

想象一下,如果一个学生只看书不做题,他怎么知道自己学会了没有?如果他把考试题提前拿来当练习题做,那考出来的分数能代表真实水平吗?

这就是数据集划分的核心逻辑:

1. 训练集(Train Set)—— 教材

占比:约 80%

模型在这部分数据上"学习"。就像学生上课用的教材,模型通过训练集来理解数据中的规律和模式。

2. 验证集(Validation Set)—— 课后作业

占比:约 10%

在训练过程中,我们会频繁地用验证集来检验模型的训练效果。如果模型在训练集上表现很好,但在验证集上表现很差,说明它"过拟合"了——就像一个学生只会做原题,换个花样就不会了。

验证集的作用是帮我们调参,及时发现问题。

3. 测试集(Test Set)—— 期末考试

占比:约 10%

模型训练完成后,用测试集来做最终评估。这部分数据模型在训练过程中从未见过,用来检验它的"泛化能力"——面对全新的、陌生的输入,能不能给出正确的回答。

关键原则:测试集只能用一次。 如果你反复用测试集来调优,那它就变成了另一种形式的"练习题",失去了评估的意义。

三、实战:用魔搭社区加载数据集并划分

说了这么多理论,来点实际的。我们用阿里魔搭社区(ModelScope)的数据集工具来做一次真实的数据集加载和划分。

3.1 加载数据集

from modelscope.msdatasets import MsDataset# 加载大众点评情感分析数据集full_ms_ds = MsDataset.load("DAMO_NLP/yf_dianping",subset_name="default",split="train"# 原始数据集只有 train 分割,包含 100% 数据)# 看看数据长什么样full_ms_ds[0]

输出:

{"sentence": "味道还不错,粥的量还是挺多的,一家人要了好几种粥,最喜欢的应该就是紫薯燕麦粥了...","label": 1,"dataset": "dianping"}

这是一条大众点评的评论数据,label: 1 表示正面评价。模型的任务就是学会判断一条评论是好评还是差评。

3.2 划分训练集、验证集、测试集

魔搭社区的数据集格式需要先转换成 Hugging Face Dataset 格式,然后进行划分:

from modelscope.msdatasets import MsDataset# 加载原始数据集full_ms_ds = MsDataset.load("DAMO_NLP/yf_dianping",subset_name="default",split="train")# 转换成 Hugging Face Dataset 格式full_hf_ds = full_ms_ds.to_hf_dataset()# 第一次划分:90% 训练+验证,10% 测试split1 = full_hf_ds.train_test_split(test_size=0.1, seed=42)train_temp_hf = split1["train"]test_hf = split1["test"]# 第二次划分:从剩余 90% 中再分出 10% 作为验证集split2 = train_temp_hf.train_test_split(test_size=0.1, seed=42)train_hf = split2["train"]val_hf = split2["test"]print(f"训练集 train: {len(train_hf)}") # 36436print(f"验证集 val: {len(val_hf)}") # 4049print(f"测试集 test: {len(test_hf)}") # 4499print("n单条样本:", train_hf[0])

输出:

训练集 train: 36436验证集 val: 4049测试集 test: 4499单条样本: {'sentence': '自从乐乐出生,N久没唱歌了偶...', 'label': 0, 'dataset': 'dianping'}

几个关键点:

四、交叉验证:防止模型"偏科"

静态的 8:1:1 划分有个问题:如果你的数据分布不均匀,刚好某一部分数据质量比较差,而它又恰好被分到了测试集,那你的评估结果就不准确了。

解决方案:K 折交叉验证(K-Fold Cross Validation)

原理很简单:

  1. 把数据集分成 K 份(通常 K=10)
  2. 每次留 1 份做测试,其余 K-1 份做训练
  3. 循环 K 次,每份都当过测试集
  4. 最终结果取 K 次的平均值

第1轮: [测试] [训练] [训练] [训练] [训练] ...第2轮: [训练] [测试] [训练] [训练] [训练] ...第3轮: [训练] [训练] [测试] [训练] [训练] ......第K轮: [训练] [训练] [训练] [训练] [训练] ... [测试]

这样做的好处是:每条数据都被训练过,也都被测试过,评估结果更加稳定可靠。

五、大模型时代的数据管理

在传统机器学习中,数据划分是"一锤子买卖"。但在大模型时代,数据管理是一个动态的、持续的过程。

数据管理通路

采集(爬取、收集)↓清洗(去噪、结构化)↓标注(人工/自动标注)↓管理(版本控制、质量监控)

LLM 时代的几个关键策略

1. 数据循环利用

模型会评估哪些数据质量差、影响性能,然后对这部分数据进行重新采样和清洗。不是训练一遍就完事,而是反复迭代。

2. 动态验证集选择

验证集不是固定不变的,而是在训练过程中根据模型的状态动态调整。比如某个领域的数据表现不好,就增加该领域的验证样本。

3. 知识覆盖率分析

确保数据集覆盖了足够多的知识领域:

4. 数据去重与污染检测

六、写在最后

回到开头的问题:大模型的"聪明"从哪来?

在模型之上,是数据的艺术。在模型之下,是数据的地基。

再强大的算力、再精妙的算法,如果喂给模型的是垃圾数据,出来的也只能是垃圾。这就是为什么在大模型公司,数据工程师是最核心的岗位之一。

如果你正在学习 AI,我建议你:

  1. 先理解数据:拿到一个数据集,先看它长什么样,分布如何,质量如何
  2. 学会正确划分:8:1:1 是基础,交叉验证是进阶
  3. 关注数据质量:垃圾进,垃圾出(Garbage In, Garbage Out)
喜欢(0)

上一篇

我让一个Agent Team长时间自治运行后:发现问题不在怎么组队

我让一个Agent Team长时间自治运行后:发现问题不在怎么组队

下一篇

患者一出院就失联:这套AI系统让患者管理不再断线

患者一出院就失联:这套AI系统让患者管理不再断线
猜你喜欢