机器学习之误差函数理解

1.基本理解

在机器学习中,我们期望的就是在给出的数据中训练出一个modle,也可以理解为一个函数function,当我们将我们的测试数据输入到这个modle的时候,就可以得到我们预想的结果。然而在我们训练数据的时候,我们就会遇到这个问题,通过不断地训练和测试我们发现,有时候越复杂的modle,在测试集的效果反而越差,可见并不是我们的modle越贴合训练数据越好,这就需要我们找到一个平衡点。
在这里插入图片描述
像这个图片所描述的(此模型结果是台湾大学李宏毅教授对多个模型多次测试得出的结果图),横座标表示的是所设置的预测模型所携带的参数,纵座标表示所有测试集在modle中预测的数值与真实数值之间的差距之和。再上图中我们可以清楚的看到当我们的参数选择在1-3的时候,我们发现总的错误值是逐渐减少的,但是当设置为4个参数的时候,错误率开始“雪崩式”增长。那么这些error到底是来自哪里呢?我们又该如何找出这些错误并作出改进呢?

2. 误差来源:bias && variance

我们对数据集的预测,理论上来说,这个预测有一个最佳的函数进行预测。但是这个最佳函数,我们只能通过在训练集中训练去得到一个函数来接近这个最佳函数。而这之间是存在误差的,这个误差主要来源于bias和variance。

2.1 原理依据

例如,我们要估算一个变量的平均值和方差。我们利用采样点估算出的平均值和方差和真实的平均值肯定是不一样的。但是如果我们再利用其样本平均值再求期望的话,这个值会接近真实平均值,这样我们的估计其实是无偏估计。
在这里插入图片描述
但这个每次的估计虽然会接近真实平均值,但始终又和真实平均值是有误差的。而这个误差就可以用方差variance来表示,variance的值和我们的样本数量密切相关。
在这里插入图片描述
那我们怎么去估算variance呢?同样的我们进行多次采样,然后多次计算方差,但这个时候多次采样计算发现,我们的估算出的方差并不会更接近真实方差。这个时候我们发现,我们这么去估算方差是有偏估计。这个偏差主要来源于下图的(N-1/N),如果样本数很大时,这个式子趋向于1,这样和真实值偏差也会减小。
在这里插入图片描述
如果发现我们得到的结果,和真实的值(图中靶点)都相差很大的话,那怎么去确定,我们的误差是从哪来的呢?这个时候,我们就可以利用前文提到的平均值估计的方法,来估计这个函数。假设,我们可以做很多次试验,每次试验可以得到一个函数,最后求期望。发现我们得到的期望和真实值都有很大的差距,那这说明我们一开始瞄准的时候就没瞄准,是存在偏差bias的。同时,我们也发现我们得出的期望值和之前的样本值之间的差异也很大,那么这说明我们的误差也有一部分是来自variance。所以,第四个图的情况中,误差是同时来源于bias和variance。
在这里插入图片描述
但是在上节课中,我们只训练得到了一个函数。那我们怎么去得到很多的函数,然后再求期望呢?

2.2 不同模型下的比较

因为李宏毅教授是基于宝可梦的升级作为例子讲解,所以此处我也继续沿用老师的说法:这里假设有很多个平行宇宙,每个平行宇宙都有宝可梦,然后去得到这个函数。
在这里插入图片描述
这里我们使用相同的模型,但得到不同的函数。这样就可以求函数的期望值了。
在这里插入图片描述
最后我们用了100个平行宇宙的数据,得到了100个不同的函数。把这100个函数都画出来,可以看下图。一次,三次和五次的模型,都有。
在这里插入图片描述
上面的图,我们可以得出结论:

  1. 一次的模型是比较集中的,因此这个模型的variance是比较小的
  2. 五次的模型是比较乱的,因此这个模型的variance是比较大的

为什么会有这个情景呢?因为越简单的模型被样本数的影响越小。举个特别极端的例子,如果这个函数是常数,那么样本怎么改变,函数都不会变,variance就是0。

2.3 bias

接下来我们看看bias。bias只要是看平均值与靶心的接近程度。那这里,针对我们刚刚的问题,我们不知道靶心(真实的最佳函数)在哪里,那怎么办呢?我们就先随便假设一个这样的最佳函数,然后从这个假设的最佳函数中,进行采样。用这个采样数据去训练不同的模型。这样我们就可以看出我们不同模型与真实模型之间的bias了,(感觉这个方法真的好机智!)
在这里插入图片描述
下图中黑色表示的是函数原来的样子,红色的是5000条functions函数,蓝色则是这五千条函数的均值,其结果如下所示:
在这里插入图片描述
上图中,靶心为黑色的直线,我们可以得出以下结论:

  1. 一次模型,可以发现我们得出的平均值(蓝线)和黑色的直线差很多,因此bias比较大
  2. 三次模型,可以发现我们得出的平均值(蓝线)和黑色的直线差小了一些,因此bias也小了一些
  3. 五次模型,可以发现我们得出的平均值(蓝线)和黑色的直线差最小,因此bias也是最小的

所以可以得出,越复杂的模型bias越小,但variance越大。越简单的模型bias越大,但variance越小,为什么会这样呢?
如果说我们的函数属于一个集合,如果是一个比较简单的模型,那么这个集合就会比较小,variance也就会比较小,但是同时这个集合也没有包含靶心,因此bias就会很大。相反的,复杂的模型属于的集合就会非常大,因此variance很大,但是这个集合包含了靶心,因此bias会比较小。

3.总结

哈哈,总结到这,相信大家对于这幅图片有了更加深入的理解了吧。
在这里插入图片描述

还有下边的这个图:
在这里插入图片描述
在这里我们看到还介绍了两个概念,欠拟合(Underfitting)过拟合(Overfitting)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章