模型泛化

参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战

模型的泛化能力

机器学习的目标是发现模式(pattern)。

所以这需要确定模型是真正发现了泛化的模式还是简单的记住了数据。

先讲个小故事,我们大三那年参加比赛,用机器学习写了个语言识别,虽然准确率很低,只有50%。当时比赛一个评委不信那是机器学习写的,一口咬定我们是写的数据库比对……

泛化和记住数据有什么区别呢?

就好像给AB两个学生一堆数学资料让他学习。期末考试的时候,如果出原题,两个人都能答100分,这个你没办法区别他们学的好坏。但是如果重新出题,A不及格B90分,那你就可以确定:A只是死记硬背记住原题,而B是真正地理解了解题思路。

A就是记住数据,B就是泛化。

训练误差和泛化误差

训练误差(training error)是指:我们的模型在训练数据集上计算得到的误差。

泛化误差(generalization error)是指:当我们将模型应用在同样从原始样本的分布中抽取的无限多的数据样本时,我们模型误差的期望。

泛化误差我们无法准确计算,因为面对未知的期末考试题,你永远不可能知道自己能得几分。

模型复杂性

训练样本可以理解为给你多少学习资料。而模型规模可以理解为你的背题能力。记住是背题能力不是理解能力。现在可以认为 背题能力 + 理解能力 = 1 背题能力+理解能力=1 。当你的精力都去背题了,你就无暇顾及去理解了。

当我们的训练样本和模型规模相匹配的时候,我们或许能可以让训练误差和泛化误差相接近。

但是当模型过于复杂而样本很少的时候,我们预计训练误差会下降,但泛化误差会增大。(过拟合)

就相当于你都去背题了,面对原题答得很好。但是理解能力不行,不出原题你就分很低。

影响模型泛化的因素

  1. 可调整参数的数量。当可调整参数的数量很大时,模型往往更容易过拟合。
  2. 参数采用的值。当权重的取值范围较大时,模型可能更容易过拟合。
  3. 训练样本的数量。即使你的模型很简单,也很容易过拟合只包含一两个样本的数据集。而过拟合一个有数百万个样本的数据集则需要一个极其灵活的模型。

缩小训练误差和泛化误差的差异

为了缩小训练和测试性能之间的差距。其实现实来讲,欠拟合和过拟合我们更应该考虑怎么防止过拟合。所以这个标题就可以改为怎么防止过拟合。

  • 针对可调整参数的数量:

    可调参数数量越多就是模型越复杂。维持模型的简单性就是模型以较小维度的形式出现。选择模型的时候要选择适宜维度的模型。

  • 训练样本的数量。这个和第一个一样,针对训练样本规模选择合适的模型。

  • 参数采用的值:

    另一个简单性就是限制参数的取值范围,那就涉及到正则化。

    动手学深度学习4.5 正则化 权重衰退推导(这就是为什么模型泛化今天才写,方便引链接。)

  • 补充:还有另一个角度,是保持平滑性,即函数不应该对其输入的微小变化敏感。即动手学深度学习4.6 dropout


《动手学深度学习》系列更多可以看这里:《动手学深度学习》 - LolitaAnn的专栏 - 掘金 (juejin.cn)

笔记还在更新中…………

猜你喜欢

转载自juejin.im/post/7031067237138038791