在模型之上,是数据的艺术。在模型之下,是数据的地基。
一、大模型的智能从哪里来?
大语言模型(LLM)的智能并非魔法,它来源于一个经典三角等式:
┌─────────────────────────────────────────────────────┐
│ │
│ LLM 智能 = 数据 + 算力 + 算法 │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 数据 │ │ 算力 │ │ 算法 │ │
│ │ (Data) │ + │(Compute)│ + │(Algo) │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ 学习的素材 计算的能力 学习的规则 │
│ │
└─────────────────────────────────────────────────────┘
1.1 算力(Compute)
算力是指设备处理数据、完成运算任务的计算能力,主要体现在 GPU 显存和 CUDA 并行计算架构上。但仅有算力,模型只是一台空转的机器——它不知道要学什么。
1.2 算法(Algorithm)
以 Transformer 架构为核心,大模型通过概率逻辑完成文本理解、生成与推理的一整套计算规则。算法的本质是"以随机应对不确定"——模型输出的每个 token 都是一次概率采样。但算法再精妙,也只是一套规则,它需要"教材"才能发挥作用。
1.3 数据(Data)——最关键的一环
如果把大模型比作一个学生:
| 角色 | 类比 | 说明 |
|---|---|---|
| 数据 | 书本、教材 | 学习的素材,知识的载体 |
| 算力 | 学习的时间与精力 | 千百亿遍的反复训练 |
| 算法 | 学习的方法 | 如何从数据中提取规律 |
核心洞察:大模型不是"背数据",而是从结构清晰、分工明确的数据中学习规律、理解语义、验证推理。
二、数据集的三种角色
在机器学习中,数据被划分为三个独立的部分,各自承担不同的使命:
┌──────────────────────────────────────────────────────────┐
│ 原始数据集 (100%) │
├───────────────────────┬──────────────────┬───────────────┤
│ 训练集 (80%) │ 验证集 (10%) │ 测试集 (10%) │
│ Train Set │ Validation Set │ Test Set │
├───────────────────────┼──────────────────┼───────────────┤
│ 📖 │ ✏️ │ 🎓 │
│ 教材/课本 │ 课后作业 │ 期中期末/高考 │
├───────────────────────┼──────────────────┼───────────────┤
│ 让模型发现数据规律 │ 频繁验证训练效果 │ 测试最终泛化能力 │
│ │ 辅助调节超参数 │ │
└───────────────────────┴──────────────────┴───────────────┘
2.1 训练集(Train Dataset)
- 占比:约 80%
- 角色:学生用的教材,用于吸收知识
- 目的:让模型在海量数据中发现规律、建立特征关联,形成神经网络中的权重分布
- 关键词:学习、拟合、特征提取
2.2 验证集(Validation Dataset)
- 占比:约 10%
- 角色:学生课后做的作业,帮助查漏补缺
- 目的:频繁地验证模型训练的好坏,辅助我们调节超参数(学习率、批次大小、网络层数等)
- 关键词:调参、监控、防止过拟合
2.3 测试集(Test Dataset)
- 占比:约 10%
- 角色:学生的期中期末考试,检验真实水平
- 目的:验证训练好的模型在从未见过的数据上的泛化能力
- 关键词:泛化、最终评估、公正性
泛化能力:模型不是死记硬背训练数据,而是能对全新的、陌生的输入,做出正确、贴合逻辑的回答与判断——这才是 AI 智能的真正体现。
三、数据划分的实战
3.1 从魔搭社区(ModelScope)加载数据集
魔搭社区(ModelScope)是国内主流的 AI 模型与数据集平台。以下代码演示如何加载点评数据集并完成划分:
from modelscope.msdatasets import MsDataset
# 加载魔搭社区的大众点评数据集
full_ms_ds = MsDataset.load(
"DAMO_NLP/yf_dianping", # 数据集ID
subset_name="default", # 该数据集只有一个 default 子集
split="train" # 数据集仅包含训练集(100% 数据)
)
3.2 按 8:1:1 比例划分数据集
# 转为 Hugging Face 兼容格式
full_hf_ds = full_ms_ds.to_hf_dataset()
# 第一次划分:分出 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)}") # 36,436 条 (约 81%)
print(f"验证集 val:{len(val_hf)}") # 4,049 条 (约 9%)
print(f"测试集 test:{len(test_hf)}") # 4,499 条 (约 10%)
最终划分结果:
┌──────────────────────────────────────────────────────┐
│ │
│ train: 36,436 条 ████████████████████ 81% │
│ val: 4,049 条 ████ 9% │
│ test: 4,499 条 ████ 10% │
│ │
└──────────────────────────────────────────────────────┘
单条样本示例:
{
"sentence": "自从乐乐出生,N久没唱歌了偶;过年同学聚会,环境不怎么样了...",
"label": 0,
"dataset": "dianping"
}
四、交叉验证:让模型不再"偏科"
静态的 8:1:1 划分虽然简单直观,但如果某份数据恰好集中了特定类型的样本,模型就容易"偏科"——在某种数据上学得很好,换一种就表现糟糕。
4.1 K 折交叉验证(K-Fold Cross Validation)
┌────────────────────────────────────────────────────┐
│ K 折交叉验证示意图 (K=5) │
│ │
│ Fold 1: [测试] [训练] [训练] [训练] [训练] │
│ Fold 2: [训练] [测试] [训练] [训练] [训练] │
│ Fold 3: [训练] [训练] [测试] [训练] [训练] │
│ Fold 4: [训练] [训练] [训练] [测试] [训练] │
│ Fold 5: [训练] [训练] [训练] [训练] [测试] │
│ │
│ 最终得分 = (Score₁ + Score₂ + Score₃ │
│ + Score₄ + Score₅) / 5 │
└────────────────────────────────────────────────────┘
核心思想:
- 将数据集均分为 K 份(通常 K=10)
- 每次用 K-1 份做训练,剩下的 1 份做测试
- 循环 K 次后,所有数据都被训练过,也都被测试过
- 最终取 K 次评估结果的平均值
优势:每一份数据都有机会成为测试集,模型评估不再依赖某一次"运气好"或"运气差"的划分。
五、LLM 时代的数据管理通路
传统的数据管理是线性的:
采集 ──► 清洗 ──► 标注 ──► 管理
但在大模型时代,这已经演变为一个动态循环的数据管理系统:
┌──────────────────────────┐
│ │
▼ │
┌──────┐ ┌──────┐ ┌──────┐ ┌────────┐
│ 采集 │──►│ 清洗 │──►│ 标注 │──►│ 管理 │
└──────┘ └──────┘ └──────┘ └───┬────┘
▲ │
│ ┌──────────┐ │
└─────────│ 评估 │◄─────────┘
└──────────┘
(反馈循环)
5.1 五大关键策略
| 策略 | 说明 |
|---|---|
| 循环利用 | 通过评估找到质量差、影响模型性能的数据,进行重新采样和清洗 |
| 动态验证集 | 验证集不是一成不变的,而是在训练过程中动态选择,持续校准 |
| 知识覆盖率 | 确保数据覆盖多语言(中文/英文)、多学科(文科/理科)、多模态(文字/图片) |
| 数据去重 | 去除重复样本,避免模型对某些数据"过拟合" |
| 数据污染检测 | 防止测试集数据泄漏到训练集中,确保评估的公正性 |
5.2 知识覆盖率的维度
知识覆盖率
│
┌───────┬───────┼───────┬───────┐
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
英语 中文 文科 理科 多模态
┌──┴──┐
│ │
▼ ▼
文字 图片
六、总结
┌────────────────────┐
│ │
│ 数据的艺术与地基 │
│ │
└────────┬───────────┘
│
┌─────────────────────┼─────────────────────┐
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 数据划分 │ │ 交叉验证 │ │ 数据工程 │
│ │ │ │ │ │
│ train 80% │ │ K 折轮换 │ │ 采集→清洗→标注 │
│ val 10% │ │ 消除偏科 │ │ →管理→评估 │
│ test 10% │ │ 全面评估 │ │ 动态循环 │
└──────────────┘ └──────────────┘ └──────────────┘
│
▼
┌────────────────────────┐
│ LLM 的真正智能 │
│ 泛化能力 · 推理能力 │
│ 理解力 · 创造力 │
└────────────────────────┘
让大模型聪明的,从来不只是算法的精巧——更在于喂给它的每一份数据,都是经过深思熟虑的选择。