模型训练六大步骤详解
1. 数据预处理:清洗和整理数据
目标: 将原始、杂乱、非结构化的数据,转化为统一、干净、可输入模型的张量格式。
核心任务:
| 任务 | 方法示例 |
|---|---|
| 清洗 | 去除噪声、处理缺失值、纠正错误标签 |
| 归一化/标准化 | Min-Max Scaling, Z-score |
| 编码 | One-Hot 编码、Label Encoding、Embedding |
| 分词与向量化 | Tokenization, TF-IDF, Word2Vec(NLP) |
| 图像处理 | Resize, Crop, Normalize, Augmentation |
工具: Pandas, NumPy, OpenCV, Transformers (Hugging Face)
关键点:
'垃圾进,垃圾出'(Garbage In, Garbage Out) 预处理质量直接决定模型上限。
2. 数据选择:构建训练/验证/测试集
目标: 将处理后的数据划分为不同用途的子集,确保训练有效、评估可靠。
核心任务:
| 任务 | 说明 |
|---|---|
| 划分数据集 | 训练集(70%)、验证集(15%)、测试集(15%) |
| 采样策略 | 随机采样、分层采样(Stratified Sampling)、过采样/欠采样(处理类别不平衡) |
| 批处理(Batching) | DataLoader 构建 mini-batch,支持高效训练 |
| 数据增强(Augmentation) | 图像旋转、文本同义替换,提升泛化能力 |
工具:
Scikit-learn (train_test_split)、PyTorch DataLoader、TensorFlow Dataset
关键点:
验证集用于调参与早停(Early Stopping);测试集只能用一次,防止信息泄露。
3. 神经网络:前向传播,预测输出
目标: 输入数据 x 经过神经网络 f_θ,输出预测 ŷ = f_θ(x)。
数学形式: 其中每层包含:线性变换 + 非线性激活函数(如 ReLU)。
典型操作:
- 向量乘法(MatMul)
- 激活函数(Sigmoid, Tanh, ReLU)
- 归一化(BatchNorm, LayerNorm)
- 注意力机制(Transformer)
工具:
PyTorch nn.Module、TensorFlow Keras Model
关键点:
前向传播是无梯度计算(除非开启
requires_grad);输出维度必须与任务匹配(如分类任务输出类别数)。
4. 损失函数:计算迭代误差
目标: 量化预测 ŷ 与真实标签 y 的差距,生成一个标量损失值 L。
常见损失函数:

工具:
torch.nn.MSELoss, torch.nn.CrossEntropyLoss
关键点:
损失函数的选择决定模型学习的方向。错误的损失函数会导致模型学偏(如分类用 MSE 效果差)。
5. 反向传播:计算迭代梯度
目标: 利用链式法则(Chain Rule),从损失 L 反向计算每个参数 θ 的梯度 ∂L/∂θ。
数学本质:

实现机制:
- 自动微分(Autograd):PyTorch/TensorFlow 自动构建计算图并求导
- 梯度累积:多次前向后累积梯度,模拟大 batch
工具:
loss.backward()(PyTorch)
关键点:
必须在反向传播前清零梯度(
optimizer.zero_grad())。梯度爆炸/消失问题需通过梯度裁剪(Clipping)或归一化解决。
6. 优化器:更新模型参数
目标: 使用梯度 ∇_θL 更新模型参数 θ,使损失下降。
更新通式:
其中 g_t 是优化器计算的更新方向(可能含动量、自适应学习率等)。
常见优化器:
| 优化器 | 特点 |
|---|---|
| SGD | 简单,但收敛慢 |
| SGD + Momentum | 加速收敛,减少震荡 |
| Adam | 自适应学习率,适合大多数任务 |
| RMSProp | 适合非平稳目标 |
工具:
torch.optim.Adam, torch.optim.SGD
关键点:
学习率 η 是关键超参数。更新后应进入下一轮迭代,形成训练循环。
完整代码示例(PyTorch 风格)
import torch
import torch.nn as nn
import torch.optim as optim
# 假设已定义 model, dataloader, criterion, optimizer
for x, y in dataloader:
# ② 数据选择(mini-batch)
x, y = x.to(device), y.to(device)
# ③ 前向传播:预测输出
y_hat = model(x) # f_θ(x)
# ④ 计算损失
loss = criterion(y_hat, y)
# ⑤ 反向传播:计算梯度
optimizer.zero_grad() # 清零梯度
loss.backward() # 自动求导
# ⑥ 优化器:更新参数
optimizer.step()
此循环持续进行,直到模型收敛。
总结
模型训练的六个步骤构成了现代人工智能的核心流程:
- 感知层(数据预处理、数据选择):构建对世界的'可计算表示'。
- 推理层(神经网络):基于当前知识做预测。
- 评判层(损失函数):评估预测的好坏。
- 学习层(反向传播、优化器):根据反馈调整自身。
这正是机器学习区别于传统编程的核心:传统程序逻辑固定,而学习系统参数可变,行为由数据塑造。

