MachineLearningWu_17/P78-P83_UsingBiasAndVarianceToDiagnose

x.1 高bias和高variance的意义

我们引入高bias和高variance是为了衡量模型是underfit还是overfit的问题。我们使用Jtrain来代表训练误差,使用Jcv即交叉熵损失表示验证集误差。高bias意味着欠拟合,而高variance意味着过拟合,我们可以通过下面这张图片更加了解,

MachineLearningWu_17/P78-P83_UsingBiasAndVarianceToDiagnose_第1张图片

当然也会存在,既高bias又高variance的情况,如下,这种情况很糟糕,

MachineLearningWu_17/P78-P83_UsingBiasAndVarianceToDiagnose_第2张图片

故,模型参数量影响着high bias或者high variance且模型参数量少时必然是high bias而当模型参数量大时则为high variance

x.2 使用参数量判断

我们绘制参数个数(即模型复杂度)和两个损失函数见的关系,刚开始是欠拟合,随着参数数量的增加(即增加 x 2 , x 3 . . . x^2,x^3... x2x3...等参),模型逐渐过拟合,

MachineLearningWu_17/P78-P83_UsingBiasAndVarianceToDiagnose_第3张图片

我们将刚开始的情况称为High Bias,而将尾部的情况称为High Variance,

MachineLearningWu_17/P78-P83_UsingBiasAndVarianceToDiagnose_第4张图片

x.3 使用基准线判断判断是high bias还是high variance

我们需要有一个baseline基准,来进行判断,如当Jtrain和base的差值小于Jcv和train差值时候,则是high variance,

MachineLearningWu_17/P78-P83_UsingBiasAndVarianceToDiagnose_第5张图片

所以说基准的存在是非常有必要的。

x.4 使用训练集数量来判断是high bias/variance

使用训练集数量判断,即通过使用learning curves来判断是high bias/variance。

我们通过控制训练集数量,以横轴为训练集数量,以纵轴为两个损失函数值,绘制图像,High bias是随着训练集增加,Jtrain会上升,而Jcv下降,并二者高于基准biasline,

MachineLearningWu_17/P78-P83_UsingBiasAndVarianceToDiagnose_第6张图片

而high variance则是随着训练集数量增加,二者更加接近基准baseline,

MachineLearningWu_17/P78-P83_UsingBiasAndVarianceToDiagnose_第7张图片

x.5 理论上如何解决high bias/variance问题

理论上如何解决这个问题,因为data数量往往固定,所以当high bias时则增加模型参数量,而当high variance时则增加L2正则化权重值。我们可以将方法用前面的PPT解答,有3种解决high variance方法和3种解决high bias方法,

MachineLearningWu_17/P78-P83_UsingBiasAndVarianceToDiagnose_第8张图片

x.6 使用正则化权重来解决high variance问题

我们的损失函数如下,

MachineLearningWu_17/P78-P83_UsingBiasAndVarianceToDiagnose_第9张图片

我们通过控制lambda来观察,当使用较大惩罚时候,则会欠拟合,反之则过拟合,

MachineLearningWu_17/P78-P83_UsingBiasAndVarianceToDiagnose_第10张图片

所以我们最佳方法是在实验中,使用多个lambda,然后选择Jcv较小的那一组lambda,

MachineLearningWu_17/P78-P83_UsingBiasAndVarianceToDiagnose_第11张图片

而lambda和两个损失函数间的图像如下所示,

MachineLearningWu_17/P78-P83_UsingBiasAndVarianceToDiagnose_第12张图片

x.7 实践上如何解决high bias/variance问题

最正确的迭代模型如下,虽然我们实际开发并不使用,

MachineLearningWu_17/P78-P83_UsingBiasAndVarianceToDiagnose_第13张图片

在实际中,我们往往会使用一个非常大的模型,这时候必然存在high variance的问题,此时我们通过调整L2正则化的权重来使得Jcv下降。通过实验我们知道,当使用一个大型网络+适当的L2正则化,其效果往往优于或者等于大小刚好合适的网络。所以我们往往先将Jtrain调下去,再用L2权重调整Jcv。

实际上的代码实现如下,

MachineLearningWu_17/P78-P83_UsingBiasAndVarianceToDiagnose_第14张图片

你可能感兴趣的:(机器学习)