机器学习总结之——如何防止过拟合

版权声明:本博客仅供学习使用 https://blog.csdn.net/weixin_42715356/article/details/82705684

机器学习总结之——如何防止过拟合

 通常过拟合由以下三种原因产生:
  (1)假设过于复杂(即,假设空间庞大);
  (2)数据集规模太小(即,用于训练数据过少);
  (3)数据集中存在很多噪音(即,错误数据过多)。
 过拟合的解决方法通常有:
  (1)Early stopping( 早停);
  (2)data-augmentation(数据集扩增);
  (3)Regularization(正则化);
  (4)Dropout(随机丢弃结构)。

1、Early stopping(早停)

1.1 定义

  对模型的训练过程就是对模型参数的进行学习与更新的过程。参数学习的过程中往往会用到一些迭代算法,比如梯度下降法。Early stopping的目的就是在迭代次数还未到设定最大迭代次数时停止迭代防止过拟合的产生。

1.2 实现方式

  Early stopping的具体方法是在每一轮的迭代过程进行交叉验证,如果验证集的精度相较上一次没有得到提升,那么就停止迭代。这种方法的思想非常直接,因为当精度都不再提高了,那么训练就没有意义了。但是也存在这样一种情况,当前代的交叉验证精度下降了,但是下一代又提升了,所以不能根据一两次的精度下降就判定不会再提高。一般的做法是,在迭代过程中,记录到目前为止最好的验证精度,如果连续十代没有提升精度,那么就认为精度不会再提高,此时便可以停止迭代。

1.3 具体应用

  缓解BP神经网络的过拟合可以采取早停策略:将数据分为训练集和验证集,训练集用于计算梯度、更新连接权与阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。(引用周志华的西瓜书中P105页最后一段的例子)

2、data-augmentation(数据集扩增)

  数据挖掘领域流传着这样一句话,更多的数据往往胜过一个更好的模型,因为我们的模型是通过大量的数据训练得来的,然后通过这个模型对将来的数据进行拟合。因此我们可以假设这些数据是独立同分布的,通常获取数据有以下方法:
  (1)从数据源头采集更多数据
  (2)复制原有的数据并加上随机噪声
  (3)重采样
  (4)根据当前估计数据分布参数,使用该分布产生更多数据

3、Regularization(正则化)

  正则化是针对过拟合而提出的,正则化提出之前在求解模型最优的方式一般是优化最小的经验风险,正则化是在该经验风险上加入模型复杂度这一项(正则化项是模型参数向量的范数),并使用一个rate比率(称为正则化项C)来权衡模型复杂度与以往经验风险的权重,如下式:

这里写图片描述

  如果模型复杂度越高,结构化的经验风险会越大,现在的目标就变为了结构经验风险的最优化,可以防止模型训练过度复杂,有效的降低过拟合的风险。奥卡姆剃刀原理,能够很好的解释已知数据并且十分简单才是最好的模型。
  正则项通常有L1正则项和L2正则项。

3.1 L1正则

L1正则

3.2 L2正则项

L2正则

4、Dropout(随机丢弃结构)

  正则是通过在代价函数后面加上正则项来防止模型过拟合。在神经网络中,有一种方法是通过修改自身结构来实现的,叫做Dropout。这是对网络训练的一种技巧。 如下图所示:

这里写图片描述

  对于上图的神经网络,在训练过程中随机删除一些隐藏层的神经元,同时保证输入层和输出层的神经元不变。这便得到了如下的结构:
这里写图片描述

  这样一次迭代的过程中应用反向传播更新权重时,不用更新已经被删除的神经元的权重,在下一轮迭代过程中可以随机删除另外一些神经元。这样可以保证一直进行有瑕疵的训练,直至训练结束。

猜你喜欢

转载自blog.csdn.net/weixin_42715356/article/details/82705684