模型训练六个环节
模型训练看起来像一条流水线,真正跑起来时,前后每一步都在互相影响。数据没处理好,后面再好的网络也只能在噪声里瞎猜;损失函数选错了,优化方向会直接跑偏。下面按实际训练顺序拆开说。
1. 数据预处理:先把数据整理到能喂给模型的样子
原始数据通常不规整,缺失值、脏标签、尺度不一致这些问题很常见。预处理做的事,就是把它们收拾成统一、干净、可输入模型的张量。
| 任务 | 方法示例 |
|---|---|
| 清洗 | 去除噪声、处理缺失值、纠正错误标签 |
| 归一化/标准化 | Min-Max Scaling, Z-score |
| 编码 | One-Hot 编码、Label Encoding、Embedding |
| 分词与向量化 | Tokenization, TF-IDF, Word2Vec(NLP) |
| 图像处理 | Resize, Crop, Normalize, Augmentation |
常用工具有 Pandas、NumPy、OpenCV,做 NLP 时还会碰到 Transformers(Hugging Face)。
'垃圾进,垃圾出'(Garbage In, Garbage Out)不是空话。预处理做得粗糙,模型上限通常也就被压住了。
2. 数据选择:把训练、验证、测试分开
处理完的数据不能直接全扔进训练。得先切成不同用途的子集,不然评估结果很容易虚高。
| 任务 | 说明 |
|---|---|
| 划分数据集 | 训练集(70%)、验证集(15%)、测试集(15%) |
| 采样策略 | 随机采样、分层采样(Stratified Sampling)、过采样/欠采样(处理类别不平衡) |
| 批处理(Batching) | DataLoader 构建 mini-batch,支持高效训练 |
| 数据增强(Augmentation) | 图像旋转、文本同义替换,提升泛化能力 |
这里最容易踩坑的是测试集。验证集可以拿来调参、做早停(Early Stopping),测试集最好只在最后看一次,不然很容易把评估也'学'进去了。常用工具包括 Scikit-learn 的 train_test_split、PyTorch DataLoader、TensorFlow Dataset。
3. 神经网络:前向传播得到预测
数据进入模型后,会经过一层层变换,最后输出预测值。可以把它写成 ŷ = f_θ(x),意思就是输入 x 经过参数为 θ 的模型,得到输出 ŷ。
每层里通常都会有线性变换和非线性激活函数,比如 ReLU。实际项目里还会看到这些操作:
- 向量乘法(MatMul)
- 激活函数(Sigmoid, Tanh, ReLU)
- 归一化(BatchNorm, LayerNorm)
- 注意力机制(Transformer)
PyTorch 里一般用 nn.Module,TensorFlow Keras 里对应的是 Model。
前向传播阶段本身不做梯度计算,除非你显式开启相关设置。还有个很现实的问题:输出维度必须和任务对上。分类任务输出类别数不对,后面损失函数基本就没法正常算。
4. 损失函数:把预测和真实答案的差距量化出来
模型输出以后,下一步不是直接改参数,而是先算一个损失值 L,看预测 ŷ 和真实标签 y 差了多少。




