深度学习中的过拟合问题解决方法。keras 解决

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nijiayan123/article/details/84377212

在进行深度学习训练时,过拟合问题是一个比较常见的问题。在面对过拟合问题是基本上有一些解决办法.如果出现过拟合可以从以下几个方面来尝试解决

  1. 增加数据量
  2. 使用正则化
  3. 使用dropout
  4. 缩小网络规模

1 增加数据量

一般出现过拟合的问题总的来说,可以说是数据量不够导致。由于数据量过少,而网络的参数也过多从而容易导致过拟合的出现。因此在出现过拟合之后,要想想是否是整个数据的数据量不够。如果真的出现这种情况。可以尝试增加数据量,如果在原始的数据只有这么多无法改变的情况下,可以尝试使用数据增强的方法来解决。在keras 中可以使用ImageDataGenerator 来增加数据。具体的操作这里就不细说了。

2 使用正则化来解决

在探究不同的范数的正则化之前,需要说明一下,在神经网络中,参数包括每一层仿射变换的权重和偏置,我们通常只对权重做惩罚操作而不对偏置做正则化惩罚。精确拟合偏置所需的数据通常比拟合权重少的很多。每一个权重会指定两个变量如何相互作用,我们需要在各种条件下观察两个变量才能良好的拟合权重。而每个偏置仅控制一个单变量。这意味着,我们不对其进行正则化也不会导致太大的方差。另外,正则化偏置参数可能会导致明显的欠拟合。因此我们使用向量w 表示所有应受惩罚影响的权重。

L 2 L^{2}参数正则化
L 2 L^{2} 参数正则化通常称为权重衰减的 L 2 L^{2} 参数范数惩罚。这个正则化策略通过向目标函数添加一个正则项 Ω ( θ ) = 1 2 ω 2 2 \Omega (\theta)=\frac {1} {2}||\omega||^{2}_{2} 使得权重更加接近原点。在keras 中可以使用卷积中的activity_regularizer 进行操作。
L 1 L^{1} 参数正则化
同样的 L 1 L^{1} 正则化的定义为 Ω ( θ ) = ω 1 \Omega (\theta)=||\omega||_{1}
在这里插入图片描述
上图左边是 L2 正则化,右边是 L1 正则化。从另一个方面来看,满足正则化条件,实际上是求解蓝色区域与黄色区域的交点,即同时满足限定条件和 Ein 最小化。对于 L2 来说,限定区域是圆,这样,得到的解 w1 或 w2 为 0 的概率很小,很大概率是非零的。

3 dropout 的使用

对于过拟合同样也可以使用dropout 进行解决。在这里有一个不同的点是dropout 的位置。到底添加在什么地方。对于不同的卷积网络结构有不同的位置。通常放在最后效果会稍微好一点。具体什么位置大家可以根据自己的网络结构自行参考。

4 缩小网络规模

在上面的方法你都尝试了但是整个网络还存在过拟合。那么最后就要开始思考是不是你设计的网络结构有问题的。你可以尝试缩小整个网络的规模。比如一开使用了128个特征图的可以缩小成64 。原来的10层网络结构可以缩小成8层试试。总之整个深度学习都是一个尝试的过程。

猜你喜欢

转载自blog.csdn.net/nijiayan123/article/details/84377212
今日推荐