机器学习--神经网络算法系列--过拟合(overfitting)

只愿这次贴的图片不会丢失。。。《机器学习--神经网络算法系列--过拟合(overfitting)》

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

     通常情况下,当我们训练机器学习模型时,我们可以使用某个训练集,在训练集上计算一些被称为 训练误差training error的度量误差,目标是降低训练误差。机器学习和优化不同的地方在于,我们也希望 泛化误差generalization error)(也被称为 测试误差test error))很低。泛化误差被定义为新输入的误差期望。这里,期望的计算基于不同的可能输入,这些输入采自于系统在现实中遇到的分布。

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

《机器学习--神经网络算法系列--过拟合(overfitting)》
但是我们真正关注的是测试误差

评估机器学习模型的泛化误差。

《机器学习--神经网络算法系列--过拟合(overfitting)》


    训练集和测试集数据通过数据集上被称为 数据生成过程data generating process)的概率分布生成。通常,我们会做一系列被统称为 独立同分布假设

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

1、降低训练误差;2、缩小训练误差和测试误差的差距。

而这两因素对应的两个挑战即为欠拟合(underfitting)过拟合(overfitting)

通过调整模型的容量,我们可以控制模型是否偏向于过拟合或欠拟合。,容量低的模型可能会难以拟合训练集,容量高的模型可能会过拟合,因为记住了不适用于测试集的训练集性质。

对于一系列点的拟合,我们可以采用线性拟合及多项式拟合,图分别采用线性(模型容量小)、二次式项式(模型容量适中)及9次多项式拟合(模型容量高)

其拟合的结果如下:

《机器学习--神经网络算法系列--过拟合(overfitting)》

上图左为一次线性拟合(欠拟合),中为二次多项式拟合(泛化很好,没有明显的欠拟合及过拟合)而右图则为9次多项式的拟合结果(过拟合,对于现有数据拟合的非常好,几乎零训练误差,但对于新的数据点可能会造成非常大的误差)

拟合误差与容量之间的关系

《机器学习--神经网络算法系列--过拟合(overfitting)》

奥卡姆剃刀:该原则指出,在同样能够解释已知观测现象的假设中,我们应该挑选 ‘‘最简单 ’’ 的那一个。这个想法是在 20 世纪,由统计学习理论创始人形式化并精确化的 (Vapnik and Chervonenkis, 1971; Vapnik, 1982; Blumer et al., 1989;Vapnik, 1995)



2、数据规模及噪音

我们可以理解地简单些:有噪音时,更复杂的模型会尽量去覆盖噪音点,即对数据过拟合!这样,即使训练误差很小(接近于零),由于没有描绘真实的数据趋势,测试误差反而会更大。即噪音严重误导了我们的假设。

数据规模一定时,随机噪音越大,或者确定性噪音越大(即目标函数越复杂),越容易发生overfitting。总之,容易导致overfitting 的因素是:数据过少;随机噪音过多;确定性噪音过多;假设过于复杂(excessive power)。

如果我们的假设空间不包含真正的目标函数f(X)(未知的),那么无论如何H 无法描述f(X) 的全部特征。这时就会发生确定性噪音。它与随机噪音是不同的。
我们可以类比的理解它:在计算机中随机数实际上是“伪随机数”,是通过某个复杂的伪随机数算法产生的,因为它对于一般的程序都是杂乱无章的,我们可以把伪随机数当做随机数来使用。确定性噪音的哲学思想与之类似

3,解决过拟合问题
对应导致过拟合发生的几种条件,我们可以想办法来避免过拟合。
(1) 假设过于复杂(excessive dvc) => start from simple model
(2) 随机噪音 => 数据清洗
(3) 数据规模太小 => 收集更多数据,或根据某种规律“伪造”更多数据
正规化(regularization) 也是限制模型复杂度的,在下一讲介绍。

3.1 数据清洗(data ckeaning/Pruning)
将错误的label 纠正或者删除错误的数据。

3.2 Data Hinting: “伪造”更多数据, add “virtual examples”
例如,在数字识别的学习中,将已有的数字通过平移、旋转等,变换出更多的数据。


3.3 交叉验证

在训练的过程中验证在测试集上的正确率,当正确率不再有明显提升时停止训练

3.4,DropOut

Dropout每次扔到一半隐藏层的神经元, 相当于我们在不同的神经网络上训练了,减少了神经元的依赖性, 也就是每个神经元不能依赖于某个或者某几个其他神经元, 迫使神经网聚学习更加和其他神经元联合起来的更加健硕的特性。对于以前MNIST最高的accuracy是98.4%, 利用dropout, 提高到98.7%

3.5,Regularization

Regularization的Cost偏向于让神经网络学习比较小的权重w, 降低高次项的影响,类似降低模型容量. 





奥卡姆剃刀:
该原则指出,在同样能够解释已知观测现象的假设中,我们应该挑选 ‘‘最简单 ’’ 的那一个。这个想法是在 20 世纪,由统计学习理论创始人形式化并精确化的 (Vapnik and Chervonenkis, 1971; Vapnik, 1982; Blumer et al., 1989;Vapnik, 1995)

    原文作者:神经网络算法
    原文地址: https://blog.csdn.net/fengxueniu/article/details/73825784
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞