前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >容量、过拟合和欠拟合

容量、过拟合和欠拟合

作者头像
用户1908973
发布2018-07-25 10:13:39
1.4K0
发布2018-07-25 10:13:39
举报
文章被收录于专栏:CreateAMindCreateAMind

机器学习的主要挑战是我们的算法必须能够在先前未观测的新输入上表现良好, 而不只是在训练集上效果好。在先前未观测到的输入上表现良好的能力被称为泛 化 (generalization)。

通常情况下,当我们训练机器学习模型时,我们可以访问训练集,在训练集上 计算一些度量误差,被称为训练误差 (training error),并且我们会降低训练误差。目 前为止,我们讨论的是一个简单的优化问题。机器学习和优化不同的地方在于,我 们也希望泛化误差 (generalization error),也被称为测试误差 (test error),很低。泛 化误差被定义为新输入的误差期望。这里,期望取值自我们期望系统在现实中从输 入分布中采样得到的不同可能值。

通常,我们度量模型在训练集中分出来的测试集 (test set)样本上的性能,来评 估机器学习模型的泛化误差。在我们的线性回归实例中,我们通过最小化训练误差来训练模型,

但是我们真正关注的是测试误差,

当我们只能观测到训练集时,我们如何才能影响测试集的性能呢?统计学习理 论 (statistical learning theory) 提供了一些答案。如果训练集和测试集的数据是任意 收集的,那么我们能够做的确实很有限。如果我们可以对训练集和测试集数据的收 集方式有些假设,那么我们能够对算法做些改进。

训练集和测试集数据通过数据集上被称为数据生成过程 (data generating pro- cess) 的概率分布生成。通常,我们会做一系列假设,被统称为独立同分布假设 (i.i.d. assumption)。该假设是说,每个数据集中的样本都是彼此相互独立的 (independent), 并且训练集和测试集是同分布的 (identically distributed),其上数据采样自相同的分 布。这个假设使我们能够在单个样本上用概率分布描述数据生成过程。然后相同的 分布可以用来生成每一个训练样本和每一个测试样本。我们将这个共享的潜在分布 称为数据生成分布 (data generating distribution),记作 pdata。这个概率框架和独立 同分布假设允许我们数学地研究训练误差和测试误差之间的关系。

我们能观察到训练误差和测试误差之间的直接联系是,随机模型训练误差的期 望和该模型测试误差的期望是一样的。假设我们有概率分布 p(x, y),从中重复采样生成训练集和测试集。对于某个固定的 w,训练集误差的期望恰好和测试集误差的 期望一样,这是因为这两个期望的计算都是用相同的数据集生成过程。这两种情况 的唯一区别是数据集的名字不同。

当然,当我们使用机器学习算法时,我们不会提前固定参数,然后从数据集中采 样。我们会在训练集上采样,然后挑选参数去降低训练集误差,然后再在测试集上 采样。在这个过程中,测试误差期望会大于或等于训练误差期望。以下是决定机器 学习算法效果是否好的因素:

1. 降低训练误差 2. 缩小训练误差和测试误差的差距

这两个因素对应机器学习的两个主要挑战:欠拟合 (underfitting) 和过拟 合 (overfitting)。欠拟合发生于模型不能在训练集上获得足够低的误差。过拟合发生 于训练误差和和测试误差之间的差距太大。

通过调整模型的容量 (capacity),我们可以控制模型是否偏向于过拟合或者欠拟 合。通俗地,模型的容量是指其拟合各种函数的能力。容量低的模型可能很难拟合 训练集。容量高的模型可能会过拟合,因为记住了不适用于测试集的训练集性质。

一种控制训练算法容量的方法是选择假设空间 (hypothesis space),即能够选为 解决方案的学习算法函数集。例如,线性回归函数将关于其输入的所有线性函数作 为假设空间。广义线性回归的假设空间包括多项式函数,而非仅有线性函数。这样 增加了模型的容量。

一次多项式提供了我们已经熟悉的线性回归模型,其预测如下: yˆ = b + wx. (5.15)

通过引入 x2 作为线性回归模型的另一个特征,我们能够学习关于 x 的二次函数模 型:

yˆ = b + w1x + w2x2. (5.16)

尽管该模型是输入的二次函数,但输出仍是参数的线性函数。因此我们仍然可以用正 规方程得到模型的闭解。我们可以继续添加 x 的更高幂作为额外特征,例如下面的9 次多项式:

当机器学习算法的容量适合于所执行任务的复杂度和所提供数据的数量时,算 法效果会最佳。容量不足的模型不能解决复杂任务。容量高的模型能够解决复杂的 任务,但是当其容量高于任务时,有可能会过拟合。

图5.2展示了这个原理在使用中的情况。我们比较了线性,二次和 9 次预测器拟 合二次真实函数的效果。线性函数无法刻画真实函数的曲率,所以欠拟合。9 次函数 能够表示正确的函数,但是因为训练参数比训练样本还多,所以它也能够表示无限 多个刚好穿越训练样本点的很多其他函数。我们不太可能从这很多不同的解中选出 一个泛化良好的。在这个问题中,二次模型非常符合任务的真实结构,因此它可以 很好地泛化到新数据上。

图 5.2: 我们用三个模型拟合了这个训练集的样本。训练数据是通过随机抽取 x 然后用二次函数确 定性地生成 y 来合成的。(左)用一个线性函数拟合数据会导致欠拟合---它无法捕捉数据中 的曲率信息。(中)用二次函数拟合数据在未观察到的点上泛化得很好。这并不会导致明显的欠拟 合或者过拟合。(右)一个 9 阶的多项式拟合数据会导致过拟合。在这里我们使用Moore-Penrose伪逆来解这个欠定的正规方程。得出的解能够精确的穿过所有的训练点,但不幸的是我们无法提 取有效的结构信息。在两个数据点之间它有一个真实的函数所不包含的深谷。在数据的左侧,它 也会急剧增长,在这一区域真实的函数却是下降的。

目前为止,我们探讨了通过改变输入特征的数目,和加入这些特征对应的参数, 改变模型的容量。事实上,还有很多方法可以改变模型的容量。容量不仅取决于模 型的选择。模型规定了调整参数降低训练对象时,学习算法可以从哪些函数族中选 择函数。这被称为模型的表示容量 (representational capacity)。在很多情况下,从这 些函数中挑选出最优函数是非常困难的优化问题。实际中,学习算法不会真的找到 最优函数,而仅是找到一个可以降低训练误差很多的函数。额外的限制因素,比如优化算法的不完美,意味着学习算法的有效容量 (effective capacity) 可能小于模型 族的表示容量。

提高机器学习模型泛化的现代思想可以追溯到早在托勒密时期的哲学家的思想。 许多早期的学者提出一个简约原则,现在被广泛称为奥卡姆剃刀 (Occam’s razor)(c. 1287-1387)。该原则指出,在同样能够解释已知观测现象的假设中,我们应该挑 选 ‘‘最简单’’ 的那一个。这个想法是在 20 世纪,由统计学习理论创始人提出来并精 确化的 (Vapnik and Chervonenkis, 1971; Vapnik, 1982; Blumer et al., 1989; Vapnik,1995)。

统计学习理论提供了量化模型容量的不同方法。在这些中,最有名的是Vapnik- Chervonenkis 维度 (Vapnik-Chervonenkis dimension, VC)。VC维度量二元分类器 的容量。VC维定义为该分类器能够分类的训练样本的最大数目。假设存在 m 个不 同 x 点的训练集,分类器可以任意地标记该 m 个不同的 x 点,VC维被定义为 m 的 最大可能值。

量化模型的容量使得统计学习理论可以进行量化预测。统计学习理论中最重要 的结论阐述了训练误差和泛化误差之间差异的上界随着模型容量增长而增长,但 随着训练样本增多而下降 (Vapnik and Chervonenkis, 1971; Vapnik, 1982; Blumeret al., 1989; Vapnik, 1995)。这些边界为机器学习算法可以有效解决问题提供了理论 验证,但是它们很少应用于实际中的深度学习算法。一部分原因是边界太松,另一 部分原因是很难确定深度学习算法的容量。确定深度学习模型容量的问题特别困难 是由于有效容量受限于优化算法的能力。对于深度学习中的一般非凸优化问题,我 们只有很少的理论分析。

我们必须记住虽然更简单的函数更可能泛化(训练误差和测试误差的差距小), 但我们仍然需要选择一个充分复杂的假设以达到低的训练误差。通常,当模型容量 上升时,训练误差会下降,直到其渐近最小可能误差(假设误差度量有最小值)。通 常,泛化误差是一个关于模型容量的 U 形曲线函数。如图5.3所示。

图 5.3: 容量和误差之间的典型关系。训练误差和测试误差表现得非常不同。在图的左端,训练误 差和泛化误差都非常高。这是欠拟合期 (underfitting regime)。当我们增加容量时,训练误差减小, 但是训练误差和泛化误差之间的间距却不断扩大。最终,这个间距的大小超过了训练误差的下降, 我们进入到了过拟合期 (overfitting regime),其中容量过大,超过了最佳容量 (optimal capacity)。

考虑任意高容量的极端情况,我们介绍非参数 (non-parametric) 模型的概念。 至此,我们只探讨过参数模型,例如线性回归。参数模型学习到的函数在观测新数 据前,参数是有限且固定的向量。非参数模型没有这些限制。

有时,非参数模型仅是一些不能实际实现的理论抽象(比如搜索所有可能概率 分布的算法)。然而,我们也可以设计一些实用的非参数模型,使它们的复杂度和训 练集大小有关。这种算法的一个实例是最近邻回归 (nearest neighbor regression)。不像线性回归有固定长度的向量作为权重,最近邻回归模型存储了训练集中所有的 X和 y。当需要为测试点 x 分类时,模型会查询训练集中离该点最近的点,并返回相 关的回归目标。换言之,yˆ = yi 其中 i = arg min ∥Xi,: − x∥2。该算法也可以扩展成L2 范数以外的距离度量,例如学习距离度量 (Goldberger et al., 2005)。如果该算法 通过平均 Xi,: 中所有最近的向量对应的 yi 来打破平局,那么该算法会在任意回归数 据集上达到最小可能的训练误差(如果存在两个相同的输入对应不同的输出,那么 训练误差可能会大于零)。

最后,我们也可以将参数学习算法嵌入另一个依所需增加参数数目的算法来创 建非参数学习算法。例如,我们可以想象一个算法,外层循环调整多项式的次数,内 存循环通过线性回归学习模型。

理想模型假设我们能够预先知道生成数据的真实概率分布。然而这样的模型仍 然会在很多问题上发生一些错误,因为分布中仍然会有一些噪扰。在监督学习中,从x 到 y 的映射可能内在是随机的,或者 y 可能是包括 x 在内还有其他变量的确定性 函数。从预先知道的真实分布 p(x,y) 预测而出现的误差被称为贝叶斯误差 (Bayes error)。

训练误差和泛化误差会随训练集的大小发生变化。泛化误差的期望不会随着训 练样本数目的增加而增加。对于非参数模型而言,更多的数据会得到更好的泛化能力,直到达到最佳可能的泛化误差。任何模型容量小于最优容量的固定参数模型会 渐近到大于贝叶斯误差的误差值。如图5.4所示。值得注意的是,具有最优容量的模 型仍然有可能在训练误差和泛化误差之间存在很大的差距。在这种情况下,我们可 以通过收集更多的训练样本来缩小差距。

图 5.4: 训练集大小对训练误差,测试误差以及最佳容量的影响。通过给一个 5 阶多项式添加适当 大小的噪声,我们构造了一个合成的回归问题,生成单个测试集,然后生成一些不同尺寸的训练 集。为了描述%95 置信区间的误差条,对于每一个尺寸,我们生成了 40 个不同的训练集。(上) 两个不同的模型上训练集和测试集的MSE,一个二次模型,另一个模型的阶数通过最小化测试误 差来选择。两个模型都是用闭式解来拟合。对于二次模型来说,当训练集增加时训练误差也随之 增大。这是由于越大的数据集越难以拟合。同时,测试误差随之减小,因为关于训练数据的不正确 的假设越来越少。二次模型的容量并不足以解决这个问题,所以它的测试误差趋近于一个较高的 值。最佳容量点处的测试误差趋近于贝叶斯误差。训练误差可以低于贝叶斯误差,因为训练算法有 能力记住训练集中特定的样本。当训练集趋向于无穷大时,任何固定容量的模型(在这里指的是 二次模型)的训练误差都至少增至贝叶斯误差。(下)当训练集大小增大时,最佳容量(在这里是 用最优多项式回归器的阶数衡量的)也会随之增大。最佳容量在达到足够捕捉模型复杂度之后就 不再增长了。

5.2.1 没有免费午餐定理

学习理论表明机器学习算法能够从有限个训练集样本中很好地泛化。这似乎违 背一些基本的逻辑原则。归纳推理,或是从一组有限的样本中推断一般的规则,在 逻辑上不是很有效。逻辑地推断一个规则去描述集合中的元素,我们必须具有集合 中每个元素的信息。

在一定程度上,机器学习仅通过概率法则就可以避免这个问题,而无需使用纯 逻辑推理整个确定性法则。机器学习保证找到一个关注的大多数样本可能正确的规 则。

不幸的是,即使这样也不能解决整个问题。机器学习的没有免费午餐定理 (no free lunch theorem) 表明,在所有可能的数据生成分布上平均,每一个分类算法在未 事先观测的点上都有相同的错误率。换言之,在某种意义上,没有一个机器学习算 法总是比其他的要好。我们能够设想的最先进的算法和简单地将每一个点归为同一 类的简单算法有着相同的平均性能(在所有可能的任务上)。

幸运的是,这些结论仅在我们考虑所有可能的数据生成分布时才成立。在现实 世界的应用中,如果我们对遇到的概率分布进行假设的话,那么我们可以设计在这 些分布上效果良好的学习算法。

这意味着机器学习研究的目标不是找一个通用学习算法或是绝对最好的学习算 法。反之,我们的目标是理解什么样的分布和人工智能获取经验的 ‘‘真实世界’’ 相 关,什么样的学习算法在我们关注的数据生成分布上效果最好。

5.2.2 正则化

没有免费午餐定理暗示我们必须在特定任务上设计性能良好的机器学习算法。 我们建立一组学习算法的偏好来达到这个要求。当这些偏好和我们希望算法解决的 学习问题相吻合时,性能会更好。

至此,我们具体讨论修改学习算法的方法只有,通过增加或减少学习算法可选 假设空间的函数来增加或减少模型的容量。我们列举的一个具体实例是线性回归增 加或减少多项式的次数。目前为止讨论的观点都是过度简化的。

算法的效果不仅受影响于假设空间的函数数量,也取决于这些函数的具体形式。 我们已经讨论的学习算法,线性回归,具有包含其输入的线性函数集的假设空间。对 于输入和输出确实接近线性相关的问题,这些线性函数是很有用的。对于完全非线 性的问题它们不太有效。例如,我们用线性回归,从 x 预测 sin(x),效果不会好。我 们控制算法的性能,可以通过控制允许采样的函数种类的方式,也可以通过控制这 些函数的数量的方式。

在假设空间中,相比于某一个学习算法,我们可能更偏好另一个学习算法。这 意味着两个函数都是符合条件的,但是我们更偏好其中一个。只有非偏好函数比偏 好函数在训练数据集上效果明显好很多时,我们才会考虑非偏好函数。

例如,我们可以加入权重衰减 (weight decay) 来修改线性回归的训练标准。带 权重衰减的线性回归最小化,训练集上的均方误差和正则项的和 J(w),偏好于平方L2 范数较小的权重。具体如下:

J(w) = MSEtrain + λw⊤w, (5.18)

其中 λ 是提前挑选的值,控制我们偏好小范数权重的程度。当 λ = 0,我们没有任 何偏好。越大的 λ 偏好范数越小的权重。最小化 J(w) 可以看作是拟合训练数据和 偏好小权重范数之间的权衡。这会使得解决方案的斜率较小,或是将权重放在较少 的特征上。我们可以训练具有不同 λ 值的高次多项式,来举例说明如何通过权重衰 减控制模型欠拟合或过拟合的趋势。如图5.5所示。

图 5.5: 我们使用高阶多项式回归模型来拟合图5.2中训练样本。真实函数是二次的,但是在这里我 们只使用 9 阶多项式。我们通过改变权重衰减的量来避免高阶模型的过拟合问题。(左)当 λ 非 常大时,我们可以强迫模型学习到了一个没有斜率的函数。由于它只能表示一个常数函数,所以 会导致欠拟合。(中)取一个适当的 λ 时,学习算法能够用一个正常的形状来恢复曲率。即使模 型能够用更复杂的形状来来表示函数,权重衰减鼓励用一个带有更小参数的更简单的模型来描述 它。(右)当权重衰减趋近于 0(即,使用Moore-Penrose 伪逆来解这个带有最小正则化的欠定问 题)时,这个 9 阶多项式会导致严重的过拟合,这和我们在图5.2中看到的一样。

更一般地,正则化一个学习函数 f(x;θ) 的模型,我们可以给代价函数添加被称 为正则化项 (regularizer) 的惩罚。在权重衰减的例子中,正则化项是 Ω(w) = w⊤w。 在第七章,我们将看到很多其他可能的正则化项。

表示对函数的偏好是比增减假设空间的成员函数更一般的去控制模型容量的方 法。我们可以将去掉假设空间中的某个函数看作是对不赞成这个函数的无限偏好。

在我们权重衰减的示例中,通过在最小化的目标中额外增加一项,我们明确地 表示了偏好权重较小的线性函数。有很多其他方法隐式地或显式地表示对不同解决 方法的偏好。总而言之,这些不同的方法都被称为正则化 (regularization)。正则化是 指我们对学习算法所做的降低泛化误差而非训练误差的修改。正则化是机器学习领域的中心问题之一,能够和其重要性媲美的只有优化。

没有免费午餐定理已经清楚阐述了没有最优的学习算法,特别地,没有最优的正 则化形式。反之,我们必须挑选一个非常适合于我们要解决任务的正则形式。深度学 习中普遍的,特别是本书的,理念是大量任务(例如所有人类能做的智能任务)也 许都可以使用非常通用的正则化项来有效解决。

内容摘自:https://github.com/exacity/deeplearningbook-chinese/releases/ 5.2

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CreateAMind 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档