对于机器学习问题,我们最常遇到的一个问题便是过拟合。在对已知的数据集合进行学习的时候,我们选择适应度最好的模型最为最终的结果。虽然我们选择的模型能够很好的解释训练数据集合,但却不一定能够很好的解释测试数据或者其他数据,也就是说这个模型过于精细的刻画了训练数据,对于测试数据或者其他新的数据泛化能力不强。
因此,我们需要通过正则化的方法来防止过拟合,接下来跟博主一起来了解一下吧。
本篇将重点介绍什么是欠拟合与过拟合,是什么原因造成的,该如何解决?
先来看一组图片,这三张图片是线性回归模型,拟合的函数和训练集的关系
总结得出:
如下图所示:
假设红色的靶心区域是学习算法完美的正确预测值,蓝色点为训练数据集所训练出的模型对样本的预测值,当我们从靶心逐渐往外移动时,预测效果逐渐变差。
从上面的图片中很容易可以看到,左边一列的蓝色点比较集中,右边一列的蓝色点比较分散,它们描述的是方差的两种情况。比较集中的属于方差比较小,比较分散的属于方差比较大的情况。
我们再从蓝色点与红色靶心区域的位置关系来看,靠近红色靶心的属于偏差较小的情况,远离靶心的属于偏差较大的情况。
通俗地讲,过拟合就是应试能力很强,实际应用能力很差,擅长背诵知识,却不懂得灵活利用知识;而欠拟合就是啥啥都不行;
欠拟合问题,根本的原因是特征维度过少,导致拟合的函数无法满足训练集,误差较大。
欠拟合基本上都会发生在训练刚开始的时候,经过不断训练之后欠拟合应该不怎么考虑了。但是如果真的还是存在的话,可以 增加网络复杂度 或者在模型中 增加特征,这些都是很好解决欠拟合的方法。
过拟合问题,根本的原因则是特征维度过多,导致拟合的函数完美的经过训练集,但是对新数据的预测结果则较差。
具体来说造成原因的话,有以下几种:
要想解决过拟合问题,就要显著减少测试误差而不过度增加训练误差,从而提高模型的泛化能力。我们可以使用正则化(Regularization)方法。那什么是正则化呢?正则化是指修改学习算法,使其降低泛化误差而非训练误差。
常用的正则化方法根据具体的使用策略不同可分为:
(1) 直接提供正则化约束的参数正则化方法,如 L1/L2 正则化;
(2) 通过工程上的技巧来实现更低泛化误差的方法,如提前终止 (Early stopping) 和 Dropout;
(3) 不直接提供约束的隐式正则化方法,如数据增强等。
那接下来讲讲什么是正则化;
让我们先回顾一下上述过拟合的例子:
从图中可以看出,解决这个过拟合问题可以通过消除特x^3和x^4的影响, 我们称为对参数的惩罚, 也就是使得参数 θ3,_θ_4接近于0。
最简单的方法是对损失函数进行改造,例如:
这样在求解最小化损失函数的时候使得参数 θ3,_θ_4接近于0。
番外:这块如果不懂的话,可以看看博主之前写的文章:【AI】浅谈梯度下降算法(理论篇),里面有详细的算法推导过程;
正则化其实就是通过对参数 θθθ 的惩罚来影响整个模型,在损失函数上加上正则项达到目的;
正则化 具体将在下一篇 【AI】浅谈使用正则化防止过拟合(下) 中进行介绍;
以上就是 浅谈使用正则化防止过拟合(上) 的全部内容了,介绍了什么是欠拟合与过拟合,是什么原因造成的,该如何解决,通过图文结合,细致地讲述了要点,希望大家有所收获!