动手深度学习:欠拟合和过拟合

Hello,大家好。今天我们不讲代码,不写代码,今天我们来讲讲概念。

那概念就从学霸、学痞、学痴、学渣的分析开始。

上诉四种类型的人我们总结一下他们的特点:

学霸

聪明又刻苦

学痞

聪明但是就是不想写作业

学痴

脑袋不好使但是不停的在学习

学渣

笨笨的还不想学

我们用一张图来表示大概是酱的:

我们知道机器学习也是要学习的啊,整个机器学习的过程就是在训练集上不断的调整模型参数,然后我们拿着整个模型屁颠屁颠去测试集进行测试,根据测试结果评价这个模型的好坏。

于是我们引出两个概念:训练误差泛化误差

训练误差:模型在训练集上表现出的误差

泛化误差:在任意一个测试集上表现的误差期望值

那么误差怎么计算呢?这就用上了我们之前讲过的损失函数,比如线性模型用的是平方差,多类逻辑回归用的是Softmax 交叉熵

好,我们再来说一下统计学中的一个假设:

训练数据集和测试数据集里的每一个数据样本都是从同一个概率分布中相互独立地生成出的(独立同分布假设)。

这个假设说明了什么呢?说明如果我们给定一个模型和参数,训练集和测试集的误差期望是一样一样的。(注意:是我们已经确定了模型的参数哦)

而我们知道,我们机器学习的模型不是事先给定的,是不断通过调整使得训练误差逐步减少的。

那换句话来说,如果模型参数是通过训练学习出来的,那么训练误差的期望值将不会高于泛化误差。

再总结一点就是由训练数据学到的模型参数会使模型在训练数据上的表现不差于在测试数据上的表现

Conclusion:

训练误差的降低不一定意味着泛化误差的降低。机器学习既需要降低训练误差,又需要降低泛化误差。

那么这两种误差随之而来的现象是什么呢?

欠拟合: 机器学习模型无法得到较低训练误差

过拟合: 机器学习模型的训练误差远小于其在测试数据集上的误差

有很多问题会导致这两种情况出现,其中最重要的两个因素就是:

模型

训练数据集的大小

这很好理解,就像我们考试复习,模型就类似于我们的脑子,训练数据集就类似于我们复习做过的模拟题。

模型选择

上面说了,模型就好像我们的大脑,一个模型具有它的拟合能力。一般来说,高阶多项式函数的拟合能力比低阶多项式的拟合能力要强,更容易得到更低的训练误差。在给定数据集上,低阶多项式容易欠拟合,而高阶多项式容易过拟合,整个关系如下图。

训练集数量

上面提到学生复习的习题数量也会影响到他的成绩,同样机器学习中训练集的大小也会影响最终效果。一般来说,如果训练数据集过小,特别是比模型参数数量更小时,过拟合更容易发生。

即使这样,泛化误差不会随训练数据集里样本数量增加而增大哦。

小结

至此,深度学习中欠拟合与过拟合的概念已经讲完了,我稍微总结一下。

为了避免在学习中出现欠拟合与过拟合的现象,我们要做什么呢?

合理的选择模型

合理的选择训练集大小

还有一点注意的是,训练误差的降低不一定意味着泛化误差的降低哦。

好了有问题的小伙伴可以在订阅号里留言。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180518G1ZQNG00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券