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%

视频数据不能简单随机按帧划分,因为相邻帧非常相似。更合理的是按照视频、日期、场景或设备划分,防止相邻帧同时进入训练集和测试集。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐