判断模型学习能力——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欠拟合、过拟合——解决方法