Overfitting

来源:互联网 发布:房产软件有哪些 编辑:程序博客网 时间:2024/05/18 00:44

What?
随着训练的进行,模型复杂度会增加,此时,如果该模型在训练集上的误差在逐渐减少,能够收敛到一个小范围,然而,在验证集上误差却一直下降不下去。最终在训练集上能有较高的准确率,验证集上的准确率却很低。这种现象,就是发生了overftting.
How?
1)early stopping (提前停止)
在模型迭代训练的时候,会提前设定一个迭代次数,early stopping 就是指在模型的误差不再下降时,如果此时模型迭代的次数还没有达到预定的次数,终止训练。
2)Data Augmentation (数据增强)
这是一种扩大样本量的操作,具体有以下几种手段:
①从数据源头采集更多的数据。比如有的人用kinect进行深度图像采集的时候,就可以多采集一些数据集。
②复制原有数据集加上随机噪声。比如翻转,剪切等
③重采样等
3)正则化
(1)可以在代价函数后面加一个正则项,一般会有L0正则,L1正则,L2正则等
L1正则:
C=C0+λn|w|
表示在原代价函数后面加上参数的L1范数和项,也就是参数绝对值和 与 参数的 积项。在对经过L1正则后的代价函数求偏导计算梯度时,有:
这里写图片描述
Sgn(w)是个符号函数,当w>0,sgn(w)=1;w=0,sgn(w)=0;w<0,sign(w)=1
所以,对w进行更新的时候:
这里写图片描述(其中,在梯度下降的时候,α<0,β<0)
So,w为正,更新后的w会减少,W为负,更新后的W会增大,因此,L1正则后的效果就是使得原先处于零(|W|约等于0)附近的w往零处移动,使得部分参数为0,从而降低模型复杂度,从而防止过拟合,从而提高模型泛化能力。但是,L1正则在|W|=0处不可导,不方便计算,所以,大家往往趋向使用L2正则。
L2正则:
C=C0+λ2nw2
表示在原代价函数后面加上参数的L2范数和项,也就是参数平方和 与 参数的 积项。所以,对w进行更新的时候:
这里写图片描述
所以,L2的效果是使参数变的更小。
(2)可以将数据进行标准化,比如Batch Normalization等等
4)Dropout
随机删除隐藏层神经元节点,同时保持输入输出节点不变的一种操作。是通过修改神经网络结构来实现的,也是为了减少参数,减低模型复杂度,从而防止过拟合。
这种做法,在传统算法中,与减少特征的原理相似。

原创粉丝点击