2、基础知识:机器学习模型精度概念、过拟合与欠拟合、数据集划分及评估指标
在Edge Impulse平台上进行边缘端模型开发时,模型精度是衡量模型性能的核心标尺。然而,精度并非一个孤立的数字,它背后涉及数据分布、模型容量、训练策略与评估方法之间的复杂博弈。本章将系统梳理机器学习模型精度的本质含义、过拟合与欠拟合的成因与识别方法、数据集划分的原则,以及准确率、F1分数等评估指标的适用场景与局限性。理解这些基础知识,是后续排查精度下降问题的前提——只有知道“理想状态”是什么样,才能准确判断“异常状态”出在哪里。
2.1 模型精度的本质与度量
核心原理:模型精度(Accuracy)在分类任务中通常指预测正确的样本数占总样本数的比例。但在边缘计算场景下,精度并非一个静态值,它受到数据分布漂移、传感器噪声、环境变化等多重因素影响。Edge Impulse平台上的精度报告通常包含训练精度、验证精度和测试精度三个层次,它们分别反映模型在已知数据、调参数据和全新数据上的表现。真正有意义的精度是模型在未见数据上的泛化能力,而非对训练数据的记忆能力。
精度的层次性理解:在Edge Impulse工作流中,模型训练完成后会生成一个混淆矩阵和精度报告。训练精度高但验证精度低,往往意味着模型过拟合;两者都低则可能欠拟合或数据本身存在问题。部署到MCU后,由于浮点转定点量化、内存限制等因素,实际推理精度通常会有1%-3%的下降,这是正常现象。若下降超过5%,则需要检查量化配置或模型结构是否过于敏感。
| 精度类型 | 定义 | Edge Impulse中的获取方式 | 用途 |
|---|---|---|---|
| 训练精度 | 模型在训练集上的分类正确率 | 训练完成后自动生成 | 判断模型是否充分学习 |
| 验证精度 | 模型在验证集上的分类正确率 | 训练过程中实时计算 | 用于早停和超参数调优 |
| 测试精度 | 模型在完全未见过的测试集上的正确率 | 使用Testing Sample评估 | 评估真实泛化能力 |
| 部署精度 | 模型在目标硬件上实际推理的正确率 | 部署后通过串口/日志回传 | 验证端到端效果 |
2.2 过拟合与欠拟合:识别与应对
核心原理:过拟合(Overfitting)指模型在训练数据上表现优异,但在新数据上表现糟糕,本质是模型记住了训练样本的噪声和细节,而非学习到普适规律。欠拟合(Underfitting)则相反,模型容量不足,连训练数据都无法充分拟合。在Edge Impulse的模型训练曲线中,过拟合表现为训练损失持续下降而验证损失在某个epoch后开始上升;欠拟合则表现为两条曲线都居高不下且趋于平缓。
判断方法:最直接的方法是观察Edge Impulse训练页面中的损失曲线和精度曲线。若训练精度接近100%而验证精度低于90%,且差距超过5个百分点,基本可判定过拟合。若训练和验证精度都低于80%,且增加训练轮次后无明显提升,则可能欠拟合。此外,混淆矩阵中若某一类别被系统性误判为另一类别,也提示数据分布或特征提取存在问题。
背景:某工业设备预测性维护项目,使用Edge Impulse训练振动数据分类模型,目标是在Cortex-M4 MCU上实现轴承故障识别。
初始现象:训练精度达到99.2%,验证精度为87.5%,测试精度仅为82.1%。部署到设备后,实际运行精度降至78%左右。
分析过程:首先检查数据采集环节,发现训练数据来自实验室环境,振动台架固定稳定;而现场设备存在启停冲击、负载波动等干扰。其次,查看Edge Impulse的频谱图,发现模型过度依赖特定频率峰值,而这些峰值在现场环境中被背景噪声掩盖。
操作步骤:① 增加现场采集数据,按7:2:1划分训练/验证/测试;② 在Edge Impulse中启用数据增强(添加随机噪声、时间偏移);③ 将Dense层从64维降至32维,增加Dropout 0.3;④ 重新训练后,训练精度降至94%,验证精度提升至91%,测试精度达到89.5%。
结果对比:部署后实际精度提升至87%,虽然仍低于实验室测试值,但已满足生产要求。
复盘经验:过拟合的根源往往不在模型参数,而在数据分布与真实场景的偏差。先解决数据代表性,再调整模型复杂度,顺序不能颠倒。
常见误区:许多开发者一看到验证精度下降就立即增加正则化或Dropout,却忽略了数据本身的问题。在Edge Impulse中,如果训练数据本身存在标注错误或类别不平衡,任何正则化手段都无法根治。另一个误区是过度依赖早停(Early Stopping),在验证损失开始上升时立即停止训练,但有时这只是局部波动,应设置更大的耐心值(Patience)观察多个epoch。
2.3 数据集划分:训练/验证/测试的科学比例
核心原理:数据集划分是模型评估可信度的基石。训练集用于学习参数,验证集用于调超参数和早停,测试集用于最终评估。三者的数据分布必须独立同分布(i.i.d.),否则评估结果会产生偏差。在Edge Impulse中,默认按80/10/10划分,但实际比例应根据数据总量和类别分布动态调整。
操作流程:Edge Impulse的Dashboard页面提供数据划分工具,支持按类别比例分层采样。对于小数据集(少于1000个样本),建议采用70/15/15划分,并考虑使用K折交叉验证来获得更稳定的评估。对于不平衡数据集,应确保每个类别在三个子集中的比例与原始分布一致,避免某一类在测试集中缺失。
| 数据总量 | 训练集比例 | 验证集比例 | 测试集比例 | 注意事项 |
|---|---|---|---|---|
| < 500 | 70% | 15% | 15% | 建议使用交叉验证 |
| 500 - 5000 | 80% | 10% | 10% | 分层采样保证类别比例 |
| > 5000 | 85% | 7.5% | 7.5% | 可适当增加测试集绝对数量 |
2.4 评估指标:准确率、精确率、召回率与F1分数
核心原理:准确率(Accuracy)在类别均衡时是直观有效的指标,但在类别不平衡场景下会掩盖模型对少数类的失效。精确率(Precision)衡量预测为正类的样本中真正为正类的比例,召回率(Recall)衡量实际正类样本中被正确预测的比例。F1分数是两者的调和平均,在类别不平衡时比准确率更能反映模型真实性能。在Edge Impulse的混淆矩阵中,可以逐类查看这些指标。
选择策略:对于故障检测类应用(如设备异常报警),漏报(假阴性)的代价远高于误报(假阳性),此时应优先关注召回率。对于垃圾邮件过滤等场景,误报(将正常邮件判为垃圾)的代价更高,应优先关注精确率。F1分数适合需要平衡两者的通用场景。在Edge Impulse的“Model Testing”页面,系统会输出每个类别的Precision、Recall和F1-score,以及Overall Accuracy。
常见误区:在Edge Impulse中,很多用户只关注Overall Accuracy,忽略逐类指标。当某一类样本极少时,即使该类全部预测错误,整体准确率可能仍在90%以上。此外,F1分数有宏平均(Macro)和微平均(Micro)之分,Edge Impulse默认使用宏平均,即每个类别的F1分数取算术平均,这在小类别上更敏感。若你的应用对特定类别有硬性要求,应在“Model Testing”结果中单独查看该类的指标。