模型训练[训练集、验证集、过拟合、欠拟合]
- 在不断补充训练数据集的过程中,发现纯粹增加数据集并不会使得模型效果单向地变好,如果是多目标检测模型的话,常会出现精度变低的现象
- 本文想总结在模型训练时的一些注意事项,比如训练集与验证机+测试集的数量分割占比,模型如果出现过拟合或者欠拟合时该采取什么措施改善,还有就是多目标检测时样本标签数量的不平衡性?
- 后边再有问题慢慢补充吧
1. 数据集分割
- 一般情况下,我们会在模型训练前将数据集分为训练集,验证集和测试集三部分:
训练集:用于训练模型,找出最佳的w 和b 。
验证集:用以确定模型超参数,选出最优模型。
测试集:仅用于对训练好的最优函数进行性能评估。
- 训练集,顾名思义,用于模型来进行特征提取与分析训练,然后验证集Val与测试集test的区别如下:
- 我们将上述3个概念贯穿于机器学习的全过程,从而加深理解:
1.确定模型的一组超参数
2.用训练集训练该模型,找到使损失函数最小的最优函数。
3.在验证集上对最优函数的性能进行度量。
4.重复1、2、3步,直到搜索完指定的超参数组合。
5.选择在验证集上误差最小的模型,并合并训练集和验证集作为整体训练模型,找到最优函数。
6.在测试集上对最优函数的泛化性能进行度量。
2. 过拟合与欠拟合
- 过拟合:
是指学习时选择的模型所包含的参数过多,以至于出现这一模型对已知数据预测的很好,但对未知数据预测得很差的现象。这种情况下模型可能只是记住了训练集数据,而不是学习到了数据特征。 - 欠拟合:
模型描述能力太弱,以至于不能很好地学习到数据中的规律。产生欠拟合的原因通常是模型过于简单。
我们要知道机器学习的根本问题是解决优化和泛化的问题。
- 优化:
是指调节模型以在训练数据上得到最佳性能。 - 泛化:
是指训练好的模型在前所未见的数据(测试集)上的性能好坏。
2.1 如何应对过拟合?
-
最优方案:
-
次优方案:
调节模型允许存储的信息量或者对模型允许存储的信息加以约束,该类方法也称为正则化。即:
-
- 调节模型大小
-
- 约束模型权重,即权重正则化(在机器学习中一般使用 L2正则化)
-
- 随机失活(Dropout)
-
L2正则化:
L2正则损失对于大数值的权值向量进行严厉惩罚,鼓励更加分散的权重向量,使模型倾向于使用所有输入特征做决策,此时的模型泛化性能好!
-
Dropout 随机失活
随机失活使得每次更新梯度时参与计算的网络参数减少了,降低了模型容量,所以能防止过拟合。
2.2 应对欠拟合?
-
- 增加新特征,可以考虑加入进特征组合、高次特征,来增大假设空间。
-
- 添加多项式特征,这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强。
-
- 减少正则化参数,正则化的目的是用来防止过拟合的,但是模型出现了欠拟合,则需要减少正则化参数。
-
- 使用非线性模型,比如核SVM 、决策树、深度学习等模型 。
-
- 调整模型的容量(capacity),通俗地,模型的容量是指其拟合各种函数的能力。
-
- 容量低的模型可能很难拟合训练集;使用集成学习方法,如Bagging ,将多个弱学习器Bagging。
3. 目标检测中的数据类别不均衡问题
参考:
1.机器学习系列(五)——训练集、测试集、验证集与模型选择
2.深度学习相关概念:过拟合与欠拟合