通俗易懂的理解过拟合和欠拟合问题

在训练神经网络过程中,常常会遇到网络过拟合和欠拟合问题,对于刚刚接触深度学习的同学来说,往往会很迷糊,什么是过拟合?什么是欠拟合?是什么原因导致的?这两种情况该如何解决?这篇文章将从自己的角度出发,带大家了解什么是过拟合和欠拟合问题。

1. 过拟合

1.1 什么是过拟合?

当神经网络在训练集上表现效果良好,但是在测试集上效果很差时,这种情况我们称网络产生了过拟合;通俗的来说,就是网络太聪明了,除了学到给定的标签信息外,还学到了不该学的东西。

1.2 产生过拟合的原因

产生过拟合现象的主要原因有:

  1. 训练数据过少;
  2. 特征维度过多;
  3. 网络过于复杂;
  4. 数据噪声太多。

这也就导致了模型能够完美的拟合训练集,但是遇到新的测试集时拟合效果较差,泛化能力不行。

1.3 过拟合的解决思路和办法

要解决过拟合问题,我们需要从产生过拟合的根本原因进行分析:

  1. 网络太聪明了(模型太复杂
  2. 你给我学的东西太少了,一会就学会了(训练数据太少

基于这两个原因,我们可以给出如下几种解决方案:

(1)增加训练数据:获取更多数据,也可以使用图像增强、增样等;

(2)使用合适的模型:适当减少网络的层数、降低网络参数量;

(3)Dropout:随机抑制网络中一部分神经元,使的每次训练都有一批神经元不参与模型训练;

(4)L1、L2正则化:训练时限制权值的大小,增加惩罚机制,使得网络更稀疏;

(5)数据清洗:去除问题数据、错误标签和噪声数据;

(6)限制网络训练时间:在训练时将训练集和验证集损失分别输出,当训练集损失持续下降,而验证集损失不再下降时,网络就开始出现过拟合现象,此时就可以停止训练了;

(7)在网络中使用BN层(Batch Normalization)也可以一定程度上防止过拟合(原理不介绍,感兴趣的同学可以去了解)。

2. 欠拟合

2.1 什么是欠拟合?

有过拟合就应该有欠拟合,那么什么是欠拟合?实际上就是无论模型在训练集还是测试集上,表现出来的效果都不好,我们称这种现象为欠拟合。

2.2 产生欠拟合的原因

产生欠拟合的主要原因有:

  1. 特征维度过少;
  2. 模型过于简单;
  3. 数据之间差异太大。

这也就导致了模型无法满足训练集,拟合的误差较大,模型表现出来的效果不好。

2.3 欠拟合的解决思路和方法

要解决欠拟合,我们可以结合之前介绍的过拟合的解决思路,从根本原因着手:

  1. 模型太笨了(模型过于简单);
  2. 给定的信息太少,学完之后依旧无法进行判断(特征维度过少);

相对于过拟合来说,欠拟合的解决方法要简单的多:

(1)增加特征维度;

(2)选择合适的模型,适当增加网络层数,调整网络的容量;

(3)减少正则化参数;

(4)使用合适的数据训练。

发布了2 篇原创文章 · 获赞 2 · 访问量 394

猜你喜欢

转载自blog.csdn.net/qq_39056987/article/details/104215409