1.权重正则化
在损失函数中加入正则项来惩罚模型的参数,减少了解空间,控制模型参数的大小以降低模型的复杂度。
常见的添加正则项的正则化技术有L1,L2正则化。其中L1正则化可以得到稀疏解,L2正则化可以得到平滑解。
2.数据增强
数据增强:需要得到更多的符合要求的数据。
如从数据源头采集更多数据、复制原有数据并加上随机噪声、重采样、根据当前数据集估计数据分布参数,使用该分布产生更多数据等。
3.早停(Early stopping)
Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。
因为在初始化网络的时候一般都是初始为较小的权值,训练时间越长,部分网络权值可能越大。
如果我们在合适时间停止训练,就可以将网络的能力限制在一定范围内。
4.Dropout
指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。
dropout为什么能防止过拟合?
它强迫一个神经单元,和随机挑选出来的其他神经单元共同工作,达到好的效果。减弱了神经元节点间的联合适应性,增强了泛化能力。
dropout在测试时,并不会随机丢弃神经元,而是使用全部所有的神经元,同时,所有的权重值都乘上1-p,p代表的是随机失活率。
5.选择合适的网络结构
通过减少网络层数、神经元个数、全连接层数等降低网络容量。
6.模型组合
Baggging&Boosting,将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好。
7.BN
在训练某层时,会对每一个mini-batch数据进行标准化(normalization)处理,使输出规范到N(0,1)的正态分布,减少了Internal convariate shift(内部神经元分布的改变)。
传统的深度神经网络在训练时,每一层的输入的分布都在改变,因此训练困难,只能选择用一个很小的学习速率,但是每一层用了BN后,可以有效解决这个问题,学习速率可以增大很多倍。
BN的好处就是对数据进行一定程度的预处理,使得无论是训练集还是测试集都在一定范围内进行分布和波动,对数据点中包含的误差进行掩盖化处理,从而增大模型的泛化能力。
8.剪枝
是决策树中一种控制过拟合的方法,主要有预剪枝和后剪枝这两种,常见的是两种方法一起使用。
预剪枝通过在训练过程中控制树深、叶子节点数、叶子节点中样本的个数等来控制树的复杂度。
后剪枝则是在训练好树模型之后,采用交叉验证的方式进行剪枝以找到最优的树模型。
9.权值共享
最常见的就是在卷积神经网络中,权值共享的目的旨在减小模型中的参数,同时还能较少计算量。在循环神经网络中也用到了权值共享。
10.交叉验证
交叉验证是防止过拟合的好方法。在交叉验证中,我们生成多个训练测试划分(splits)并调整模型。
K-折验证是一种标准的交叉验证方法,即将数据分成 k 个子集,用其中一个子集进行验证,其他子集用于训练算法。
参考链接:
https://blog.csdn.net/qq_27590277/article
https://zhuanlan.zhihu.com/p/89590793