2020-5-18 吴恩达-改善深层NN-w1 深度学习的实用层面(1.2 偏差-欠拟合(训练集)/方差-过拟合(验证集))

1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai

本节课将介绍如何通过训练误差和验证集误差判断算法偏差或方差是否偏高。

DL的误差问题,一个趋势是对偏差和方差的权衡研究甚浅,你可能听说过这两个概念,但DL的误差很少权衡二者,我们总是分别考虑偏差和方差,却很少谈及偏差和方差的权衡问题(bias-variance trade-off)。

1. 二维数据集

例1,高偏差,欠拟合
在这里插入图片描述

观察上图数据集。
如果给这个数据集拟合一条直线(兰色),可能得到一个逻辑回归拟合,但它并不能很好地拟合该数据,这是高偏差(high bias)的情况,我们称为“欠拟合”(underfitting)。

例2,高方差,过拟合
在这里插入图片描述

观察上图数据集。
如果我们拟合一个非常复杂的分类器,比如深度NN或含有隐藏单元的NN,可能就非常适用于这个数据集,但是这看起来也不是一种很好的拟合方式,分类器方差较高(high variance),数据过拟合(overfitting)。

例3,适度拟合
在这里插入图片描述

观察上图数据集。
是复杂程度适中,数据拟合适度的分类器,这个数据拟合看起来更加合理,我们称之为“适度拟合”(just right)是介于过度拟合和欠拟合中间的一类。

2. 高维数据集

上面3个例子都是只有x1和x2两个特征的二维数据集,我们可以绘制数据,将偏差和方差可视化。在多维空间数据中,绘制数据和可视化分割边界无法实现,但我们可以通过几个指标,来研究偏差和方差。

在这里插入图片描述

观察上图,左边是猫y=1,右边不是y=0
理解偏差和方差的两个关键数据是训练集误差(Train set error)和验证集误差(Dev set error)。

例4,高方差,过拟合
为了方便论证,假设

  • 我们可以肉眼辨别图片中的小猫,且不会出错。即人的错误率为0%。
  • 假设训练集误差是1%
  • 假设验证集误差是11%。

可以看出训练集设置得非常好,而验证集设置相对较差。
我们可能过度拟合了训练集,在某种程度上,验证集并没有充分利用交叉验证集的作用,像这种情况,我们称之为“高方差”。

通过查看训练集误差和验证集误差,我们便可以诊断算法是否具有高方差。也就是说衡量训练集和验证集误差就可以得出不同结论。

例5,高偏差,欠拟合
为了方便论证,假设

  • 我们可以肉眼辨别图片中的小猫,且不会出错。即人的错误率为0%。
  • 训练集误差是15%
  • 验证集误差是16%

算法并没有在训练集中得到很好训练。
如果训练数据的拟合度不高,就是数据欠拟合,就可以说这种算法偏差高。相反,它对于验证集产生的结果却是合理的,验证集中的错误率只比训练集的多了1%,所以这种算法偏差高,因为它甚至不能拟合训练集,这与例1的图片相似。

例6,高偏差,高方差
假设

  • 训练集误差是15%,偏差相当高
  • 验证集的评估结果更糟糕,错误率达到30%,

在这种情况下,我们认为这种算法偏差高,因为它在训练集上结果不理想,而且方差也很高,这是方差偏差都很糟糕的情况。

例7,低偏差,低方差
假设

  • 训练集误差是0.5%
  • 验证集误差是1%

猫咪分类器只有1%的错误率,偏差和方差都很低。

例4-例7都是基于假设预测的,假设人眼辨别的错误率接近0%。一般来说,最优误差也被称为贝叶斯误差

如果最优误差或贝叶斯误差非常高,比如15%。我们再看看例5这个分类器(训练误差15%,验证误差16%),15%的错误率对训练集来说也是非常合理的,偏差不高,方差也非常低。

3. 高误差-贝叶斯误差

当所有分类器都不适用时,如何分析偏差和方差呢?–后面课程介绍
比如,图片很模糊,即使是人眼,或者没有系统可以准确无误地识别图片,在这种情况下,最优误差(贝叶斯误差)会更高,那么分析过程就要做些改变了。

通过查看训练集误差,我们可以判断数据拟合情况。
当完成训练集训练,开始使用验证集验证时,我们可以判断方差是否过高。

以上分析的前提都是假设基本误差很小,训练集和验证集数据来自相同分布,如果没有这些假设作为前提,分析过程更加复杂,我们将会在稍后课程里讨论。

4. 高偏差和高方差

例8,高偏差,高方差
在这里插入图片描述

观察上图。这个图是例1图片的变化。
蓝色线是例1中逻辑回归结果的欠拟合分割线–高偏差。
我们增加一条紫色线,它会过度拟合部分数据,所以现在这个紫色线表示的分类器具有高偏差和高方差,偏差高是因为它有部分几乎是一条线性分类器,并未拟合数据。

在这里插入图片描述

看上面这个图会更加清楚一点。
图中标注了一个叉和一个圈这2个样本被二次曲线过度拟合。
采用曲线函数或二次元函数灵活性非常高,但是容易产生高偏差。(就如上图,显然训练时候错误会很低,但是验证的错误率就会高了,因为过度拟合了。)

总结一下,图中的这个分类器

  • 偏差很高,因为它几乎是线性的
  • 采用曲线函数或二次元函数会产生高方差,因为它曲线灵活性太高以致拟合了这两个错误样本和中间这些活跃数据。

这看起来有些不自然,从两个维度上看都不太自然,但对于高维数据,有些数据区域偏差高,有些数据区域方差高。所以在高维数据中采用这种分类器看起来就不会那么牵强了。

总结

我们讲了如何通过分析在训练集上训练算法产生的误差和验证集上验证算法产生的误差来诊断算法是否存在高偏差和高方差。是否两个值都高,或者两个值都不高,根据算法偏差和方差的具体情况决定接下来你要做的工作。

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