https://github.com/imhuay/Algorithm_Interview_Notes-Chinese
一、欠拟合、过拟合
欠拟合指模型不能在训练集上获得足够低的训练误差;
过拟合指模型的训练误差与测试误差(泛化误差)之间差距过大;
反映在评价指标上,就是模型在训练集上表现良好,但是在测试集和新数据上表现一般(泛化能力差);
降低过拟合风险的方法
所有为了减少测试误差的策略统称为正则化方法,这些方法可能会以增大训练误差为代价
数据增强
图像:平移、旋转、缩放
利用生成对抗网络(GAN)生成新数据
NLP:利用机器翻译生成新数据
降低模型复杂度
神经网络:减少网络层、神经元个数
决策树:降低树的深度、剪枝
...
权值约束(添加正则化项)
L1 正则化
L2 正则化
集成学习
神经网络:Dropout
决策树:随机森林、GBDT
提前终止
降低欠拟合风险的方法
加入新的特征
交叉特征、多项式特征、...
深度学习:因子分解机、Deep-Crossing、自编码器
增加模型复杂度
线性模型:添加高次项
神经网络:增加网络层数、神经元个数
减小正则化项的系数
添加正则化项是为了限制模型的学习能力,减小正则化项的系数则可以放宽这个限制
模型通常更倾向于更大的权重,更大的权重可以使模型更好的拟合数据
二、正则化
2.1 Batch Normalization(批标准化) 均值为0 方差为1 本质上解决反向传播过程中的梯度问题。
BN 是一种正则化方法(减少泛化误差),主要作用有:
- 加速网络的训练(缓解梯度消失,支持更大的学习率) 激活函数sigmoid 在反向传播过程中,正无穷和负无穷两边的导数都几乎为0,只有中间Y轴导数值比较大,所以经过若干次链式求导,最终 接近0,梯度消失,经过BN 可以是每一层的H 均值为0,标准差为1,也就是数据集中在y轴附近,这样就使得梯度比较大,解决了梯度消失的问题。
- 防止过拟合
- 降低了参数初始化的要求。
- BN 可以缓解每一层数据不稳定的问题,很多层每一层数据都要经过权重计算,如果权重大于1的话,最后的数据可能非常大,为了防止“梯度弥散”。关于梯度弥散,大家都知道一个简单的栗子: