一、过拟合欠拟合及其解决方案
知识点记录
模型选择、过拟合和欠拟合:
训练误差和泛化误差:
训练误差 :模型在训练数据集上表现出的误差,
泛化误差 : 模型在任意一个测试数据样本上表现出的误差的期望,常常用测试数据集上的误差来近似。
二者的计算都可使用损失函数(平方损失、交叉熵)
机器学习模型应关注降低泛化误差
模型选择:
验证数据集:
训练数据集、测试数据集以外的一部分数据。简称验证集。
因不可从训练误差估计泛化误差,无法依赖训练数据调参(选择模型)。
测试数据集不可以用来调整模型参数,如果使用测试数据集调整模型参数,可能在测试数据集上发生一定程度的过拟合,此时将不能用测试误差来近似泛化误差。
K折交叉验证:
将原始训练数据集分割为K个不重合子数据集,之后做K次模型训练和验证。每次用一个子数据集验证模型,同时使用其他子数据集训练模型。最后将这K次训练误差以及验证误差各求平均数。
过拟合和欠拟合:
欠拟合:模型不能得到较低的训练误差。
过拟合:模型的训练误差<<其在测试数据集上的误差
发生欠拟合的时候在训练集上训练误差不能达到一个比较低的水平,所以过拟合和欠拟合不可能同时发生。
影响因素:
有多种因素,而且实践中要尽力同时掌控欠拟合和过拟合。这有两个重要因素:模型复杂度、训练数据集大小。
模型复杂度:在模型过于简单时,泛化误差和训练误差都很高——欠拟合。在模型过于复杂时,训练误差有了明显降低,但泛化误差会越来越高——过拟合。所以我们需要一个最佳值。如图像。
训练数据集大小:
训练数据集大小是影响着欠拟合和过拟合的一个重要因素。一般情况下,训练数据集中样本过少,会发生过拟合。但泛化误差不会随着训练数据集样本数的增加而增大。故在计算资源许可范围内,尽量将训练数据集调大一些。在模型复杂度较高(如:层数较多的深度学习模型)效果很好。
权重衰减:
方法:正则化通过为模型的损失函数加入惩罚项,从而令得出的模型参数值较小。
权重衰减等价于L2范数正则化,经常用于应对过拟合现象。
L2范数正则化:
在模型原损失函数基础上添加L2范数惩罚项,从而的发哦训练所需最小化的函数。
L2范数惩罚项:模型权重参数每个元素的平方和与一个正的常数的乘积。
范数正则化又叫权重衰减。权重衰减通过惩罚绝对值较大的模型参数为需要学习的模型增加了限制,这可能对过拟合有效。
丢弃法:
方法:在隐藏层每个单元设置丢弃的概率,如:p。那么有 p 的单元的概率就会被清零,有1-p的概率的单元会被拉伸。
丢弃法不改变输入的期望值。
在测试模型时,为了拿到更加确定性的结果,一般不使用丢弃法。丢弃法通过随机丢弃层间元素,使模型不依赖于某一个元素来应对过拟合的。