1 定义
过拟合: 一个假设在训练数据上能够获得比其他假设更好的拟合, 但是在测试数据集上却不能很好地拟合数据,此时认为这个假设出现了过拟合的现象。(模型过于复杂)(高方差)
欠拟合: 一个假设在训练数据上不能获得更好的拟合,并且在测试数据集上也不能很好地拟合数据,此时认为这个假设出现了欠拟合的现象。(模型过于简单)(高偏差)
2 判断方法
2.1 通过Loss判断
训练集loss⬇,验证集loss⬇:网络正常,仍在学习。
训练集loss⬇,验证集loss→,可能出现过拟合,数据分布不均匀。
训练集loss⬇,验证集loss⬆,可能出现过拟合。
训练集loss→,验证集loss⬇,数据集有问题。
训练集loss→,验证集loss→,学习过程中遇到瓶颈,可以减小学习率/批量数目和更换梯度优化算法,也有可能网络设计问题。
训练集loss⬆,验证集loss⬆,可能网络结构有问题,超参数设置不正确。
2.2 通过Accuracy判断
验证集的作用是在训练的过程对比训练数据与测试数据的准确率,便于判断模型的训练效果是过拟合还是欠拟合 。
过拟合:训练数据的准确率较高而测试数据的准确率较低
欠拟合:训练数据的准确率和测试数据的准确率均较低
2.3 进行交叉验证
将数据集划分为多个子集,轮流将其中一个子集作为验证集,其余子集作为训练集进行多次训练和验证,观察模型在不同验证集上的表现。
如果模型在某些验证集上表现很好,但在其他验证集上表现较差,则可能存在过拟合。
3 原因&解决方法
3.1 数据量太小
增大训练集:在CV中常对图像进行旋转、缩放、剪切、添加噪声等操作。
3.2模型复杂度太大
减小模型复杂度:正则化(L1,L2);权值共享;dropout;BN;权值衰减
3.3 训练集和验证集特征分布不一致
3.4 数据中噪声干扰过大
3.5 过度训练(overtraining)
训练层面:early stopping(神经网络的训练过程中我们会初始化一组较小的权值参数,随着模型的训练,这些权值也变得越来越大了。为了减小过拟合的影响,就有可能需要早停止了。)
集成学习算法:也就是一个均值的思想,通过集成的思想来减弱过拟合的影响。