二、过拟合、欠拟合

  1. 当使用机器学习算法时,决定机器学习算法效果的两个因素:降低训练误差、缩小训练误差和测试误差的差距。

    这两个因素对应着机器学习中的两个主要挑战:欠拟合和过拟合。

  2. 过拟合overfitting:选择的模型包含的参数过多,以至于该模型对于已知数据预测得很好,但是对于未知数据预测的很差,使得训练误差和测试误差之间的差距太大。

    • 过拟合的原因是:将训练样本本身的一些特点当作了所有潜在样本都具有的一般性质,这会造成泛化能力下降。
    • 过拟合无法避免,只能缓解。因为机器学习的问题通常是NP难甚至更难的,而有效的学习算法必然是在多项式时间内运行完成。如果可以避免过拟合,这就意味着构造性的证明了P=NP
  3. 欠拟合underfitting:选择的模型包含的参数太少,以至于该模型对已知数据都预测的很差,使得训练误差较大。

    欠拟合的原因一般是学习能力低下造成的。

  4. 通过调整模型的容量capacity可以缓解欠拟合和过拟合。

2.1 模型容量

  1. 模型的容量是指其拟合各种函数的能力。

    • 容量低的模型容易发生欠拟合,模型拟合能力太弱。
    • 容量高的模型容易发生过拟合,模型拟合能力太强。
  2. 通过选择不同的假设空间可以改变模型的容量。

    模型的假设空间指的是:代表模型的函数集合。这也称作模型的表示容量representational capacity

    由于额外的限制因素(比如优化算法的不完善),模型的有效容量effective capacity一般会小于模型的表示容量。

  3. 通常在模型的假设空间中出最佳的函数是非常困难的优化问题,实际应用中只是挑选一个使得训练误差足够低的函数即可。

  4. 统计学习理论提供了量化模型容量的方法,其中最出名的是VC维理论:训练误差与泛化误差之间差异的上界随着模型容量增长而增长,随着训练样本增多而下降

  5. 虽然VC 维理论对于机器学习算法有很好的指导作用,但是它在深度学习很难应用。原因有二:

    • 边界太宽泛。
    • 难以确定深度学习的容量。由于深度学习模型的有效容量受限于优化算法,因此确定深度学习模型的容量特别困难。
  6. 通常泛化误差是关于模型容量的 U形函数。随着模型容量增大:

    • 训练误差会下降直到逼近其最小值。
    • 泛化误差先减小后增大。
    • 泛化误差与训练误差的差值会增大。

    capacity

2.2 缓解过拟合

  1. 缓解过拟合的策略:

    • 正则化。
    • 数据集增强:通过人工规则产生虚假数据来创造更多的训练数据。
    • 噪声注入:包括输入噪声注入、输出噪声注入、权重噪声注入。将噪声分别注入到输入/输出/权重参数中。
    • 早停:当验证集上的误差没有进一步改善时,算法提前终止。

    具体内容参考深度学习《正则化》章节。

  2. 正则化 :基于结构化风险最小化(SRM)策略的实现,其中 二、过拟合、欠拟合 - 图2 为正则化项。

    在不同的问题中,正则化项可以有不同的形式:

    • 回归问题中,损失函数是平方损失,正则化项是参数向量的 二、过拟合、欠拟合 - 图3 范数。
    • 贝叶斯估计中,正则化项对应于模型的先验概率 二、过拟合、欠拟合 - 图4

2.3 缓解欠拟合

  1. 缓解欠拟合的策略:选择一个模型容量更高的模型。