在机器学习中,我们通常将数据集分为:Training Set、Dev Set、Test Set。
Training Set: 用来训练模型(Model)算法;Dev Set: 用来测试不同模型(Models)的实际效果表现,并选出最好的模型;Test Set: 用来测试最终的模型效果的无偏估计(unbiased Estimation);
在深度学习领域,经常存在Train Set和Test Set不匹配的情况。比如Training Set是从网上扒下来的,大部分图片比较清晰,分辨率很高;Dev/Test Set是用户上传的,图片可能是用手机camera拍摄的,分辨率比较低或者比较模糊。这种情况下最好保证Dev Set和Test Set的Distribution相同。
Bias描述的是根据样本拟合出的模型的输出预测结果与样本真实结果的差距。
Variance描述的是样本上训练出来的模型在测试集上的表现。
以图像分类为例,假设我们要区分一副图像中的物体是不是猫。人类做此分类的错误率接近0%,所以该分类的Base Error为0%。
如上图所示,如果Train Set Error为1%,Dev Set Error为11%,则认为该模型是High Variance;如果Train Set Error为15%,Dev Set Error为16%,则认为该模型是High Bias;如果Train Set Error为15%,Dev Set Error为30%,则认为该模型是High Bias&High Variance;如果Train Set Error为0.5%(与Base Error相近),Dev Set Error为1%,则认为该模型是Low Bias & Low Variance;
High Bias意味这模型对Train Set的拟合不足,就要用更多的参数,更加复杂的模型,更长的训练时间或者更好的优化器,但更复杂的模型容易导致Overfitting。此时扩充数据集对High Bias不会有太大的帮助,至少不是最有效的途径。
解决High Variance最好的方法是获取更多的数据;如果不能获取更多的数据,可以尝试Regularization降低过拟合;或者寻求更优的机器学习模型。
在早期的机器学习中,Bias和Variance往往是互斥的,即提升Bias效果的同时,往往会导致Variance效果下降,反之亦然。而在Deep Learning领域,更大的Network和更多的Data保证了可以在基本不影响Variance的情况下,独立提升Bias;也可以在基本不影响Bias的情况下,独立提升Variance。所以现在Bias Variance TradeOff已经很少被提及了。