误差
误差:方差 , 偏差 和 噪声之和
偏差(bias):描述的是偏离正确值的程度。高偏差指的是: 训练集损失值 和 交叉验证集 损失值都很大,欠拟合。
方差(variance): 描述的是预测值的波动情况。高方差指的是:训练集损失值很小,但是交叉验证集 损失值很大,过拟合。
噪声:表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界。
高方差(过拟合)的优化方法:
1. 获取更多的训练样本
2. 尝试减少特征的数量
3. 尝试增加正则化程度lamda
高偏差(欠拟合)的优化方法:
1. 尝试获取更多的特征
2. 尝试增加多项式特征
3. 尝试减少正则化程度lamda
归一化(Normalization)
用以解决 梯度消失/爆炸 的问题。
vanishing/exploding gradients have been largely addressed by normalized initialization and intermediate normalization layers.
归一化的目的就是使得预处理的数据被限定在一定的范围内(比如[0,1]或者[-1,1]),从而消除奇异样本数据(特别大或特别小的样本数据)导致的不良影响。
归一化工具:scikit-learn 包,里面有很多可选的归一化方法
# Xtrain 是numpy数组
from sklearn.preprocessing import StandardScaler
Xtrain = StandardScaler.transform(Xtrain)
from sklearn.preprocessing import Normalizer
Xtrain = Normalizer.transform(Xtrain)
正则化(Regularization)
Regularization:减小方差(防止过拟合)的策略。
实现方法
1. pytorch中,在SGD, Adam等优化器中有L2正则项-weight decay(权值衰减)参数
2. paddlepaddle中,在SGD, Adam等优化器中有 regularization 参数
3. tensorflow中,
正则化效果图
Dropout
(一般方法中设置值为[0.5, 0.8])
dropout效果图
动量(Momentum),应用与SGD中。
动量加快代价函数快速收敛,提升收敛速度。
一般取值为:0.5, 0.9, 0.99。 和学习率一样,Momentum也会随着时间不断调整,一开始是一个较小的值,后来慢慢变大。
Momentum 对步长的 影响为:(learning_rate*grad) / (1- Momentum)