东阳的学习记录,坚持就是胜利!
文章目录
loss的组成
loss有两个部分:来自bias的loss,和来自variance的loss。
对于同一个模型,使用不同数据集训练会得到不同的参数值。Bias表示这些不同模型训练出来的总多模型预测值的平均与真实值的误差;variance表示这些不同结果与真实值的误差和。
更复杂的模型并不总是有更好的表现。
Bias和variance
如果将不同数据集的预测值求平均为 f ∗ f^* f∗,是接近真实值 f f f的。
下面是实验结果。从图中可以看到,虽然五次方的model看着乱七八糟,每一次的误差都比较大,但是平均起来是接近与真实值的(因为其对数据样本的敏感程度高,容易出现过拟合),有着比较小的Bias。比较简单的一次model每一次的结果都有更小的误差,但是有着比较大的Bias。
如下图所示:图中的蓝色圈表示function space(类似值域,比较简单的function是包含于比较复杂的function的。)。当model比较简单时,此时function space不包含target,此时无论怎么训练都只能接近于target。当model比较复杂时,虽然包含target,但是并没有能力找到真实值,但是平均起来接近。
bias和variance对model拟合效果的影响
如下图所示,当model月来越复杂时,bias带来的误差越来越小,但同时variance带来的误差越来越大(过拟合);反之,model越简单,variance带来的误差越小,但是此时bias误差大(欠拟合)。
为什么会出现这样的影响
因为比较复杂的模型对于数据样本更敏感,导致了variance比较大,其function space较大(过拟合);model简单时,虽然有着比较小的variance,但由于其function space不包含target,所以bias比较大(欠拟合)。
如何判断model的bias和variance时不是过大
- 如果你的model不能够很好的预测训练集,说明有比较大的bias;
- 如果在训练集上表现很好,但是在测试集上有较大的误差,则有可能是variance较大。
如何处理bias大和variance大
如何处理bias大
对于bias过大,则需要重新设计模型(单纯增大数据量是没用的)
- 增加输入的数据的特征,比如除了考虑身高,还考虑性别,年龄等因素;
- 使用更加复杂的model(增大function space)
如何处理variance大
增大输入数据量(数据增强)
正则化
如何选择适当的模型
- 通常在bias和variance之前做平衡
- 选择一个模型使得两种loss都比较小
不要这么做!!!
不要使用自己手上的test数据集来选择最好的model。这个结果并不可靠(不具有普适性,只是看起来比较好)。
可能出现对于这个测试集表现比较好,但是另一个数据集表现差。(所以说并不可靠)
应该这样做
将训练集分出一部分进行测试,这样在公共数据集上的表现才能真正反映model的好坏。
N-fold Cross Validation
防止分“坏”, 分做多份,取平均值最小的部分。