Task 04 过拟合,欠拟合及其解决方案

训练误差与泛化误差

训练误差:训练数据集上表现出的误差

泛化误差:模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。

机器学习模型应关注降低泛化误差。

模型的选择

测试集只能在所有超参数和模型参数选定后使用一次。即选了模型之后,才能用测试集来测试,不能用测试集来选模型。

数据集 = 【训练集 + 验证集】+ 测试集

K折交叉验证:把原始训练数据集分割成K个不重合的子数据集,然后我们做K次模型训练和验证。每一次,我们使用一个子数据集验证模型,并使用其他K-1个子数据集来训练模型。在这K次训练和验证中,每次用来验证模型的子数据集都不同。最后,我们对这K次训练误差和验证误差分别求平均。

过拟合与欠拟合

欠拟合(underfitting)模型无法得到较低的训练误差

过拟合(overfitting)模型的训练误差远小于它在测试数据集上的误差

我们重点讨论两个因素:模型复杂度训练数据集大小

模型复杂度

K阶多项式函数:与线性回归相同,多项式函数拟合也使用平方损失函数; 一阶多项式函数拟合又叫线性函数拟合

训练数据集大小

  1. 训练集样本数过少,易发生过拟合;

  2. 此外,泛化误差不会随训练数据集里样本数量增加而增大

  3. 在计算资源允许的范围之内,我们通常希望训练数据集大一些,特别是在模型复杂度较高时,例如层数较多的深度学习模型。

权重衰减(应对过拟合)

权重衰减等价于 L2 范数正则化(regularization)。正则化通过为模型损失函数添加惩罚项使学出的模型参数值较小,是应对过拟合的常用手段。

L2 范数正则化(regularization)

L2范数正则化在模型原损失函数基础上添加L2范数惩罚项,从而得到训练所需要最小化的函数。L2范数惩罚项指的是模型权重参数每个元素的平方和与一个正的常数的乘积。以线性回归中的线性回归损失函数为例

其中w1,w2是权重参数,b是偏差参数,样本i的输入为x1(i),x2(i),标签为y(i),样本数为n。将权重参数用向量w=[w1,w2]表示,带有L2范数惩罚项的新损失函数为

其中超参数λ>0。当权重参数均为0时,惩罚项最小。当λ较大时,惩罚项在损失函数中的比重较大,这通常会使学到的权重参数的元素较接近0。当λ设为0时,惩罚项完全不起作用。上式中L2范数平方|w|2展开后得到w12+w22。 有了L2范数惩罚项后,在小批量随机梯度下降中,我们将线性回归一节中权重w1和w2的迭代方式更改为

L2范数正则化令权重w1和w2先自乘小于1的数,再减去不含惩罚项的梯度。 因此,L2范数正则化又叫权重衰减。权重衰减通过惩罚绝对值较大的模型参数为需要学习的模型增加了限制,这可能对过拟合有效。

丢弃法

多层感知机中神经网络图描述了一个单隐藏层的多层感知机。其中输入个数为4,隐藏单元个数为5,且隐藏单元hi(i=1,…,5)的计算表达式为

这里ϕ是激活函数,x1,…,x4是输入,隐藏单元i的权重参数为w1i,…,w4i,偏差参数为bi。当对该隐藏层使用丢弃法时,该层的隐藏单元将有一定概率被丢弃掉。设丢弃概率为p,那么有p的概率hi会被清零,有1−p的概率hi会除以1−p做拉伸。丢弃概率是丢弃法的超参数。具体来说,设随机变量ξi为0和1的概率分别为p和1−p。使用丢弃法时我们计算新的隐藏单元hi′

由于E(ξi)=1−p,因此

即丢弃法不改变其输入的期望值。让我们对之前多层感知机的神经网络中的隐藏层使用丢弃法,一种可能的结果如图所示,其中h2和h5被清零。这时输出值的计算不再依赖h2和h5,在反向传播时,与这两个隐藏单元相关的权重的梯度均为0。由于在训练中隐藏层神经元的丢弃是随机的,即h1,…,h5都有可能被清零,输出层的计算无法过度依赖h1,…,h5中的任一个,从而在训练模型时起到正则化的作用,并可以用来应对过拟合。在测试模型时,我们为了拿到更加确定性的结果,一般不使用丢弃法

猜你喜欢

转载自www.cnblogs.com/cathyc/p/12326793.html