【原创】判断模型学习能力——learning curve

it2025-04-21  19

判断模型学习能力——learning curve

简介

learning curve可以用来衡量模型在数据集上的学习能力,通过对data volume vs scores的可视化来判断在给定epoch训练后模型处于过拟合、欠拟合和正常三种之中的哪种状态。

实现

sklearn.model_selection.learning_curve(estimator, X, y, *, groups=None, train_sizes=array([0.1, 0.33, 0.55, 0.78, 1. ]), cv=None, scoring=None, exploit_incremental_learning=False, n_jobs=None, pre_dispatch='all', verbose=0, shuffle=False, random_state=None, error_score=nan, return_times=False)

模型状态

从Plotting Learning Curves可视化结果可以看出模型的状态。

欠拟合

对应上图中左上角曲线。虽然训练和验证精度一致且能很快收敛,但达不到理想的精度。欠拟合的原因: 模型学习能力差,学不到所期望的数据分布。解决欠拟合的方法: (1) 增加特征项; (2) 添加多项式特征; (3) 减少正则项。

过拟合

对应上图右上角曲线。训练精度与验证精度差距很大,说明模型泛化能力差。过拟合的原因: 模型学习能力过强,不仅学到了所期望的数据分布,甚至学到了噪声数据的分布。解决过拟合的方法: (1) 清洗数据; (2) 增大训练数据量; (3) 采用正则化方法;

神经网络过拟合解决方案

权值衰减

它在每次迭代过程中以某个小因子降低每个权值,这等效于修改E的定义, 加入一个与网络权值的总量相应的惩罚项,此方法的动机是保持权值较小,避免weight decay, 从而使学习过程向着复杂决策面的反方向偏。

stopping criterion

在二次误差函数的情况下,关于早停止和权值衰减类似结果的原因说明。如下图,椭圆给出了常数误差函数的轮廓线,Wml表示误差函数的最小值。如果权向量的起始点为原点,按照局部负梯度的方向移动,那么它会沿着曲线给出的路径移动。通过对训练过程早停止,我们找到了一个权值向量w。定性地说,它类似于使用检点的权值衰减正则化项,然后最小化正则化误差函数的方法得到的权值。

使用验证集

在训练数据外再为模型提供一个验证集,应该使用在验证集合上产生最小误差的迭代次数,不是总能明显地确定验证集合何时达到最小误差。(通常30%的训练模式;每个时期检查验证集错误;如果验证错误上升,停止训练)

交叉验证

交叉验证方法在可获得额外的数据提供验证集合时工作得很好,但是小训练集合的过度拟合问题更为严重。

dropout方法

dropout方法是ImageNet中提出的一种方法,通俗一点讲就是dropout方法在训练的时候让神经元以一定的概率不工作,示意图如下图所示。

参考资料

sklearn.model_selection.learning_curvePlotting Learning Curves欠拟合、过拟合——解决方法
最新回复(0)