Error | 误差
Bias | 偏差 – 衡量准确性
Variance | 方差 – 衡量稳定性
首先我们通常在实际操作中会直接用错误率或者与之对应的准确率来衡量一个模型的好坏,但是更加准确的做法是误差衡量时综合考虑偏差和方差的共同作用。
所谓偏差Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度。Variance反映的是模型每一次输出结果与模型输出期望值之间的误差,即模型的稳定性。
举个例子,对于一个二分类问题,比如测试图片是不是猫,是猫的话就是1,不是猫就是2。
现在给定一个初始条件,人眼分类猫图片时的错误是0,也就是说最优误差为0(optimal error = 0)有时也说bayes error = 0,统统是一个意思。
那么对于训练集和训练验证集给定如下结果:
train set error: 1% 15% 15% 0.5%
dev set error: 15% 16% 30% 1%
对于第一种结果我们说:这是high variance的,因为显然地在训练集上过度拟合了数据,所以在验证集上表现很差
对于第二种结果我们说:这是high bias的,在训练集上发生了欠拟合,所以拟合度不够高,错误率较高。
对于第三种结果我们说:这是high bias & high variance的,在训练集上欠拟合的同时,在验证集上的表现更糟糕,这是最糟糕的情况。
对于第四种结果我们说:这是low bias & low variance,这是很优秀的模型。
*.注意我们以上的四种结果的前提都是假设了最优误差为0的情况
那么在deep learning中
首先我们判断模型的bias高不高,如果高的话:
1.如果是自建的数据集或者是清洗过的数据集,评估训练集自身的问题或者是数据清洗时保留特征的问题。
2.使用更大的网络,比如更多的hidden layer,更多的hidden unit,更多的时间等等
3.使用全新的神经网络架构,比如卷积、循环、胶囊等等。甚至可以从别的神经网络中抽取一两个不同的层加入进来。
接下来我们判断模型的variance高不高,如果高的话(也就是过拟合发生的情况下):
1.增大数据集的规模,在传统ml中这不一定有用,但是在dl中,使用更多的数据往往会提高效果。
2.正则化 regularization
3.同上第三条,使用全新的架构。
最终我们的目标是找到一个low bias & low variance的模型