过拟合

  • 过拟合的定义
  • 解决方法
  • 1. Early stopping
  • 2. 增加数据集
  • 3. 使用L1、L2...正则化
  • 4.dropout正则化


过拟合的定义

深度学习过拟合 手段无效 解决过拟合的技术_机器学习


机器过于纠结loss函数的数值, 它想把误差值减到更小, 来完成它对这一批数据的学习使命. 所以, 它学到的可能会变成这样 . 它几乎经过了每一个数据点, 这样, 误差值会更小 . 但是,将该模型用于其他数据集的时候,会发现其表现效果很差,泛化性不佳。

解决方法

为了防止过拟合,我们需要用到一些方法,如:early stopping、数据集扩增(Data augmentation)、正则化(Regularization)、Dropout等。

1. Early stopping

对模型进行训练的过程即是对模型的参数进行学习更新的过程,这个参数学习的过程往往会用到一些迭代方法,如梯度下降(Gradient descent)学习算法。Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。
Early stopping方法的具体做法是,在每一个Epoch结束时(一个Epoch集为对所有的训练数据的一轮遍历)计算validation data的accuracy,当accuracy不再提高时,就停止训练。
但是并不是说validation accuracy一降下来便认为不再提高了,因为可能经过这个Epoch后,accuracy降低了,但是随后的Epoch又让accuracy又上去了,所以不能根据一两次的连续降低就判断不再提高。一般的做法是,在训练的过程中,记录到目前为止最好的validation accuracy,当连续10次Epoch(或者更多次)没达到最佳accuracy时,则可以认为accuracy不再提高了。此时便可以停止迭代了(Early Stopping)。这种策略也称为“No-improvement-in-n”,n即Epoch的次数,可以根据实际情况取,如10、20、30……

2. 增加数据集

大部分过拟合产生的原因是因为数据量太少了. 如果我们有成千上万的数据, 则训练出来的模型不会偏重于某种局部特征

3. 使用L1、L2…正则化

深度学习过拟合 手段无效 解决过拟合的技术_深度学习_02


cost = (预测值-真实值的平方)^2

如果 W 变得太大, 我们就让 cost 也跟着变大, 变成一种惩罚机制. 所以我们把 W 自己考虑进来. 这里 abs 是绝对值. 这一种形式的 正规化, 叫做 l1 正规化. L2 正规化和 l1 类似, 只是绝对值换成了平方. 其他的l3, l4 也都是换成了立方和4次方等等. 形式类似. 用这些方法,我们就能保证让学出来的线条不会过于扭曲.

4.dropout正则化

在训练的时候, 我们随机忽略掉一些神经元和神经联结 , 是这个神经网络变得”不完整”. 用一个不完整的神经网络训练一次.
到第二次再随机忽略另一些, 变成另一个不完整的神经网络. 有了这些随机 drop 掉的规则, 我们可以想象其实每次训练的时候, 我们都让每一次预测结果都不会依赖于其中某部分特定的神经元. 像l1, l2正规化一样, 过度依赖的 W , 也就是训练参数的数值会很大, l1, l2会惩罚这些大的参数. Dropout 的做法是从根本上让神经网络没机会过度依赖.