神经网络中出现过拟合的原因和几种解决方法

过拟合产生的原因?

过拟合的表现:模型在训练集上误差很小,在测试集上误差很大。

过拟合主要由两个方面决定:一是数据集,二是模型。

我认为过拟合问题目前来说只能减少不能避免。

数据集角度:

我们知道无论是机器学习还是深度学习,都是通过在训练集上做训练来最小化训练集上的损失函数来得到想要的模型,也就是说我们希望在训练集上学习到的规律能够泛化到真实数据集上,这里其实潜藏了一个假设就是训练集上的分布和真实数据集的分布是一致的。但是事实上训练集往往只是真实数据集的一小部分,往往是包含噪声的,如果很不辛的训练数据集包含了一个很强的噪声,这个强噪声已经足以影响到训练数据集中的lable分布,那么模型很容易把这个强噪声当成一个强特征,造成过拟合。所以数据集数量和质量甚至决定了模型的上限。

模型角度:

一般复杂的模型越容易过拟合,因为复杂的模型拟合能力强,他能把每个数据拟合进来,这样也容易把噪声数据拟合进来,这样的模型往往具有高方差低偏差的特点。

如何减少过拟合?

减少过拟合需要具体情况具体分析。

一般由以下几种方法:

模型角度

1. 限制模型的复杂度(根据训练集的分布,选择复杂度合适的模型)

2. L2正则限制特征权重,防止某些特征对结果影响太大。

3. L1正则产生稀疏权重,限制模型的复杂度。

4. 参数共享。

5. bagging

6. 提前终止。

7. dropout

8. BN

数据角度:

得到质量更高,数据量的数据。如数据增强。

原文地址:https://www.cnblogs.com/tingtin/p/12516514.html