站点图标 AI技术聚合

李沐动手学深度学习-过拟合和欠拟合

李沐动手学深度学习-过拟合和欠拟合

模型容量

拟合各种函数的能力

低容量的模型难以拟合训练数据

高容量的模型可以记住所有的训练数据

模型容量的影响

估计模型容量

难以在不同的种类算法之间比较: 例如树模型和神经网络

给定一个模型的种类,将有两个主要因素:参数的个数,参数值的选择范围

VC维

统计学习理论的一个核心思想

对于一个分类模型,VC等于一个最大的数据集的大小,不管如何给定标号,都存在一个模型来对它进行完美分类。

VC维的用处:
提供为什么一个模型好的理论依据,它可以衡量训练误差和泛化误差之间的间隔;但深度学习中很少使用,衡量不是很准确,计算深度学习模型的VC维很困难。

数据的复杂度

多个重要因素:样本个数,每个样本的元素个数,时间、空间结构,多样性

总结

模型容量需要匹配数据复杂度,否则可能导致欠拟合和过拟合

统计机器学习提供数学工具来衡量模型复杂度

实际中一般靠观察训练误差和验证误差。

为了理解模型复杂度和训练数据集⼤小对⽋拟合和过拟合的影响,下⾯我们以多项式函数拟合为
例来实验。⾸先导⼊实验需要的包或模块。

 我们将⽣成⼀个⼈⼯数据集。在训练数据集和测试数据集中,给定样本特征x,我们使⽤如下的
三阶多项式函数来⽣成该样本的标签:
y = 1.2x − 3.4x^2 + 5.6x^3 + 5 + ϵ,
其中噪声项ϵ服从均值为0、标准差为0.1的正态分布。训练数据集和测试数据集的样本数都设为100。

看一下前2个样本。 

实现一个函数来评估模型在给定数据集上的损失。 

 定义训练函数。

使用三阶多项式函数,它与数据生成函数的阶数相同。

 

 看看线性函数拟合,减少该模型的训练损失相对困难。 在最后一个迭代周期完成后,训练损失仍然很高。 当用来拟合非线性模式(如这里的三阶多项式函数)时,线性模型容易欠拟合。

 让我们尝试使用一个阶数过高的多项式来训练模型。 在这种情况下,没有足够的数据用于学到高阶系数应该具有接近于零的值。 因此,这个过于复杂的模型会轻易受到训练数据中噪声的影响。 虽然训练损失可以有效地降低,但测试损失仍然很高。 结果表明,复杂模型对数据造成了过拟合。

 

文章出处登录后可见!

已经登录?立即刷新
退出移动版