机器学习中常见的过拟合解决方法

  在机器学习中,咱们将模型在训练集上的偏差称之为训练偏差,又称之为经验偏差,在新的数据集(好比测试集)上的偏差称之为泛化偏差,泛化偏差也能够说是模型在整体样本上的偏差。对于一个好的模型应该是经验偏差约等于泛化偏差,也就是经验偏差要收敛于泛化偏差,根据霍夫丁不等式可知经验偏差在必定条件下是能够收敛于泛化偏差的。算法

  当机器学习模型对训练集学习的太好的时候(再学习数据集的通性的时候,也学习了数据集上的特性,这些特性是会影响模型在新的数据集上的表达能力的,也就是泛化能力),此时表现为经验偏差很小,但每每此时的泛化偏差会很大,这种状况咱们称之为过拟合,而当模型在数据集上学习的不够好的时候,此时经验偏差较大,这种状况咱们称之为欠拟合。具体表现以下图所示,第一幅图就是欠拟合,第三幅图就是过拟合。网络

  

  再以下面这幅图所示,只要咱们愿意,在训练集上的偏差是能够无限小的,可是此时的泛化偏差会增大。机器学习

  

  对于欠拟合的问题比较好处理,只要增大模型的复杂度就行,并且欠拟合会在训练过程当中就表现出来(经过看训练集的损失来判断),更容易去控制。对于过拟合不会体如今训练集上,所以常见的方式是采用交叉验证来检测过拟合。解决过拟合的两条主线:一是增大数据集,二是下降模型的复杂度(根据VC维理论可知)。通常来讲扩展数据集是比较难的,并且数据集大,模型复杂度高的时候即便能得到好的泛化结果,也会增大计算量。因此常见的方式都是以下降模型的复杂度为主,接下来看看有哪些常见的方法能够自适应地下降模型的复杂度。函数

一、正则化学习

  正则化是机器学习中最多见的过拟合解决方法,在损失函数中加入正则项来惩罚模型的参数,以此来下降模型的复杂度,常见的添加正则项的正则化技术有L1,L2正则化。测试

  L1正则化大数据

  

  L1正则化是基于L1范数的,J是咱们的损失函数,在损失函数优化时,咱们要使得损失函数无限小,要知足这个结果,表达式中的第二项也必须无限小。关于L1正则化项的函数能够在二维平面图中表示出来,令优化

   

 

  

  图中的等值线(就是那些曲线)是J0的等值线,黑色方形是正则项函数L的图形。在图中。当J0等值线和L图形首次相交的地方就是最优解(根据拉格朗日约束问题的最小值可知,L函数能够看做J0函数的约束,没有该约束,J0函数的最小值应该是最里面的等值线,加上约束以后,就是首次相交的点处),从图中能够看出在相交点这里有w1为0,这也是L1正则的特色。加入L1正则项以后,数据集中那些对模型贡献不大的特征所对应的参数w能够为0,所以L1正则项得出的参数是稀疏的。spa

  L2正则化3d

  

  一样能够画出在二维平面中的图形来描述

  

  原理和L1正则中差很少,可是L2正则化不会得到稀疏解,只会将对模型贡献不大的特征所对应的参数置于无限小的值,以此来忽略该特征对模型的影响。

  所以正则化都是在经过控制模型参数的大小来下降模型的复杂度。

 

二、剪枝处理

  剪枝是决策树中一种控制过拟合的方法,咱们知道决策树是一种很是容易陷入过拟合的算法,剪枝处理主要有预剪枝和后剪枝这两种,常见的是两种方法一块儿使用。预剪枝经过在训练过程当中控制树深、叶子节点数、叶子节点中样本的个数等来控制树的复杂度。后剪枝则是在训练好树模型以后,采用交叉验证的方式进行剪枝以找到最优的树模型。

 

三、提早终止迭代(Early stopping)

  该方法主要是用在神经网络中的,在神经网络的训练过程当中咱们会初始化一组较小的权值参数,此时模型的拟合能力较弱,经过迭代训练来提升模型的拟合能力,随着迭代次数的增大,部分的权值也会不断的增大。若是咱们提早终止迭代能够有效的控制权值参数的大小,从而下降模型的复杂度。

 

四、权值共享

  权值共享最多见的就是在卷积神经网络中,权值共享的目的旨在减少模型中的参数,同时还能较少计算量。在循环神经网络中也用到了权值共享。

 

五、增长噪声

  这也是深度学习中的一种避免过拟合的方法(没办法,深度学习模型太复杂,容易过拟合),添加噪声的途径有不少,能够在输入数据上添加,增大数据的多样性,能够在权值上添加噪声,这种方法相似于L2正则化。

 

六、Batch Normalization

  BM算法是一种很是有用的正则化方法,并且可让大型的卷积神经网络快速收敛,同时还能提升分类的准确率,并且能够不须要使用局部响应归一化处理,也能够不须要加入Dropout。BM算法会将每一层的输入值作归一化处理,而且会重构归一化处理以后的数据,确保数据的分布不会发生变化。

  并且有不少变种,好比Layer Normalization,在RNN或者Transformer中用的比较多。

  上面的几种方法都是操做在一个模型上 ,经过改变模型的复杂度来控制过拟合。另外一种可行的方法是结合多种模型来控制过拟合。

 

七、Bagging和Boosting

  Bagging和Boosting是机器学习中的集成方法,多个模型的组合能够弱化每一个模型中的异常点的影响,保留模型之间的通性,弱化单个模型的特性。

 

八、Dropout

  Dropout是深度学习中最经常使用的控制过拟合的方法,主要用在全链接层处。Dropout方法是在必定的几率上(一般设置为0.5,缘由是此时随机生成的网络结构最多)隐式的去除网络中的神经元,具体以下图

  

  Dropout控制过拟合的思想和机器学习中的集成方法中的bagging相似,在每一个batch更新的网络结构都有所不一样,也就至关于在训练时有不少个不一样的子网络,在每次迭代时dropout的神经元都不同,所以对于整个模型参数而言,每次都会有一些参数不被训练到。Dropout会致使网络的训练速度慢二、3倍,并且数据小的时候,Dropout的效果并不会太好。所以只会在大型网络上使用。

相关文章
相关标签/搜索