1. 机器学习与深度学习
-
机器学习(Machine Learning,ML)是一个较大的概念,深度学习(Deep Learning,DL)属于机器学习的一个分支。
-
传统机器学习通常需要人工设计或筛选特征,再把特征输入模型。例如判断垃圾邮件时,可以人工提取邮件长度、链接数量、关键词数量等特征。
-
深度学习使用多层神经网络自动学习特征,一般需要更多数据、更高算力和更长训练时间。
常见传统机器学习模型:
-
逻辑回归 Logistic Regression
-
支持向量机 SVM
-
决策树 Decision Tree
-
随机森林 Random Forest
-
XGBoost
-
K近邻 KNN
常见深度学习模型:
-
CNN:主要用于图像、视频等任务
-
RNN、LSTM:主要用于序列任务
-
Transformer:广泛用于大语言模型、视觉和多模态任务
传统机器学习并不一定比深度学习差。对于结构化表格数据、数据量较小、特征含义明确的任务,XGBoost、随机森林等模型往往仍然很有效。
2. 数据集质量与数据划分
数据集质量
衡量数据集不能只看样本数量,还要关注:
-
标签是否正确
-
是否存在漏标、错标和重复数据
-
是否存在缺失值
-
数据噪声是否严重
-
各类别数量是否均衡
-
训练数据能否代表真实业务场景
-
训练集、验证集和测试集之间是否存在数据泄漏
-
是否覆盖小目标、遮挡、反光、复杂背景等困难样本
类别不平衡时可以采用:
-
对多数类下采样
-
对少数类过采样
-
提高少数类的损失权重
-
补充少数类真实数据
-
使用数据增强
-
使用 Focal Loss 等更加关注困难样本的损失函数
一般情况下,优先补充真实有效的数据,而不是简单复制少数类样本。
训练集、验证集和测试集
训练集
用于训练模型参数:
输入数据
→ 前向传播得到预测结果
→ 计算损失
→ 反向传播计算梯度
→ 优化器更新参数
训练集会直接参与参数更新。
验证集
通常在每个 epoch 结束后评估一次,但不参与反向传播,也不更新模型参数。
主要用途:
-
观察模型是否过拟合
-
选择最佳训练轮次
-
选择最佳模型权重文件
-
调整学习率、batch size、正则化强度等超参数
-
比较不同模型结构和训练方案
这里的"模型选择"并不是每个 epoch 后自动更换激活函数或网络结构,而是:
-
同一次训练中,选择验证集效果最好的 epoch 对应的模型权重
-
多次实验之间,比较不同模型结构、学习率、优化器等方案
例如:
| Epoch | 训练集准确率 | 验证集准确率 |
|---|---|---|
| 20 | 85% | 82% |
| 50 | 94% | 88% |
| 100 | 99% | 84% |
虽然第100轮训练集效果最好,但验证集效果已经下降,因此可能选择第50轮的模型。
测试集
只在模型、超参数和最佳权重确定后使用,用于评价模型面对未知数据时的泛化能力。
不能根据测试集结果反复调整模型,否则测试集实际上就承担了验证集的作用,最终结果会偏高。
常见划分比例:
- 70% : 15% : 15%
- 80% : 10% : 10%
视频数据不能简单随机按帧划分,因为相邻帧非常相似。更合理的是按照视频、日期、场景或设备划分,防止相邻帧同时进入训练集和测试集。