2020-7-7 吴恩达DL学习-C3结构化ML项目-w1 ML策略1(1.10 理解人的表现--①训练和开发误差越接近人表现,越难分辨问题是偏差还是方差/②人的表现完美,则贝叶斯误差为0)

274 篇文章 24 订阅
233 篇文章 0 订阅

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

1.10 理解人的表现 Understanding human-level performance

本节课将介绍”人类水平表现“这个词的定义,这可以帮助你们推动ML项目的进展。

还记得上节课中,我们用过这个词“人类水平错误率”(human-level error)用来估计贝叶斯误差,那就是理论最低的错误率,任何函数不管是现在还是将来,能够到达的最低值。我们先记住这点,然后看看医学图像分类例子。
在这里插入图片描述

如上图,你要观察放射科图像,然后作出分类诊断。
假设一个普通的人类,未经训练的人类,在此任务上达到3%的错误率。
普通的医生,也许是普通的放射科医生,能达到1%的错误率。
经验丰富的医生做得更好,错误率为0.7%。
还有一队经验丰富的医生,就是说如果你有一个经验丰富的医生团队,让他们都看看这个图像,然后讨论并辩论,他们达成共识的意见达到0.5%的错误率。

所以我想问你的问题是,你应该如何界定人类水平错误率?人类水平错误率3%,1%, 0.7%还是0.5%?

思考人类水平错误率最有用的方式之一是,把它作为贝叶斯错误率的替代或估计。

这里我直接给出人类水平错误率的定义,就是如果你想要替代或估计贝叶斯错误率,那么一队经验丰富的医生讨论和辩论之后,可以达到0.5%的错误率。

我们知道贝叶斯错误率小于等于0.5%,因为有些系统,这些医生团队可以达到0.5%的错误率。所以根据定义,最优错误率必须在0.5%以下。我们不知道多少更好,也许有一个更大的团队,更有经验的医生能做得比0.5%好一点。但是我们知道最优错误率不能高于0.5%,那么在这个背景下,我就可以用0.5%估计贝叶斯错误率。至少如果你希望使用人类水平错误来分析偏差和方差的时候,此时人类水平定义为0.5%。

现在,为了发表研究论文或者部署系统,也许人类水平错误率的定义可以不一样。
你可以使用1%,只要你超越了一个普通医生的表现,如果能达到这种水平,那系统已经达到实用了。也许超过一名放射科医生,一名医生的表现,意味着系统在一些情况下可以有部署价值了。

本节课的要点

在定义人类水平错误率时,要弄清楚你的目标所在。

  • 如果要表明你可以超越单个人类,那么就有理由在某些场合部署你的系统,也许1%定义是合适的。
  • 如果你的目标是替代贝叶斯错误率,那么0.5%才合适。

要了解为什么这个很重要,我们来看一个错误率分析的例子。

例1:可避免偏差>方差
在这里插入图片描述

比方说,在医学图像诊断例子中,你的训练错误率是5%,你的开发错误率是6%。
而我们的人类水平表现,我将它看成是贝叶斯错误率的替代品,取决于你将它定义成普通单个医生的表现,还是有经验的医生或医生团队的表现,你可能会用1%或0.7%或0.5%。同时也回想一下,

  • 前一节课中的定义,贝叶斯错误率或者说贝叶斯错误率的估计和训练错误率直接的差值就衡量了所谓的可避免偏差。(Human <–> Training error)
  • 训练误差与开发误差之间的差值可以衡量或者估计你的学习算法的方差问题有多严重。(Training error <–> Dev error)

本例中,可避免偏差大概是4%,如果你取1%就是4%,如果你取0.5%就是4.5%。而训练误差与开发误差之间的差值是1%。也就是说,不管你怎么定义人类水平错误率,使用单个普通医生的错误率定义,还是单个经验丰富医生的错误率定义或经验丰富的医生团队的错误率定义,可避免偏差明显比都比方差问题更大。所以在这种情况下,你应该专注于减少偏差的技术,例如培训更大的网络。

例2:可避免偏差<方差
在这里插入图片描述

再来看个例子。
比如说你的训练错误率是1%,开发错误率是5%,这种问题更像学术界讨论的,人类水平表现是1%或0.7%还是0.5%。不管你使用哪一个定义,可避免偏差(人类水平和训练错误率之间的差距)是0%到0.5%之间。而方差(训练误差与开发误差之间的差值)是4%,它比任何一种定义的可避免偏差都大。所以建议你应该主要使用减少方差的工具,比如正则化或者去获取更大的训练集。

例3:可避免偏差接近方差
在这里插入图片描述

比如你的训练错误率是0.7%,这已经做得很好了,开发错误率是0.8%。在这种情况下,你用0.5%来估计贝叶斯错误率(人的表现)关系就很大。
因为在这种情况下,你测量到的可避免偏差是0.2%,这是你测量到的方差问题0.1%的两倍,这表明也许偏差和方差都存在问题,但是可避免偏差问题更严重。
如果你用0.7代替贝叶斯错误率(人的表现),你测得的可避免偏差基本上是0%,那你就可以忽略可避免偏差了。实际上你应该试试能不能在训练集上做得更好。

希望上面3个例子能让你们有点概念,知道为什么ML问题上,当你达到或者接近人类水平时进展会越来越难(更难分辨出问题是偏差还是方差)。

第三个例子,一旦训练误差接近0.7%错误率,除非你非常小心估计贝叶斯错误率,你可能无法知道离贝叶斯错误率有多远,所以你应该尽量减少可避免偏差。事实上,如果你只知道单个普通医生能达到1%错误率,这可能很难知道是不是应该继续去拟合训练集,这种问题只会出现在你的算法已经做得很好的时候,只有你已经做到训练误差0.7%, 开发误差0.8%, 接近人类水平时会出现。

而在前两个例子中,当你(训练误差,开发误差)远离人类水平时,将优化目标放在偏差或方差上可能更容易一点。这就说明了,当你们接近人类水平时,更难分辨出问题是偏差还是方差。所以ML项目的进展在你已经做得很好的时候,很难更进一步。

总结

在这里插入图片描述

如果你想理解偏差和方差,那么在人类可以做得很好的任务中,你可以估计人类水平的错误率,可以使用人类水平错误率来估计贝叶斯错误率

你的训练错误到贝叶斯错误率估计值的差距,告诉了你可避免偏差问题有多大,可避免偏差问题有多严重,而训练错误率和开发错误率之间的差值告诉你方差上的问题有多大,你的算法是否能够从训练集泛化推广到开发集。

本节课和之前课程中见到的重大区别

  • 以前你们比较的是训练错误率和0%(人类表现接近完美)
  • 相比之下,本节课中我们有一个更微妙的分析,其中并没有假设你应该得到0%错误率,因为有时贝叶斯错误率是非零的,有时基本不可能做到比某个错误率阈值更低。

所以在之前的课程中,我们测量训练错误率,然后观察训练错误率比0%高多少,就用这个差值来估计偏差有多大。而事实证明,对于贝叶斯错误率几乎是0%的问题这样就行了,例如识别猫,人类表现接近完美,所以贝叶斯错误率也接近完美。当贝叶斯错误率几乎为零时,可以那么做。

但数据噪点很多时,比如背景声音很嘈杂的语言识别,有时几乎不可能听清楚说的是什么,并正确记录下来。对于这样的问题,更好的估计贝叶斯错误率很有必要,可以帮助你更好地估计可避免偏差和方差,这样你就能更好的做出决策,选择减少偏差的策略,还是减少方差的策略。

对人类水平有大概的估计可以让你做出对贝叶斯错误率的估计,这样可以让你更快地作出决定是否应该专注于减少算法的偏差,或者减少算法的方差。这个决策技巧通常很有效,直到你的系统性能开始超越人类,那么你对贝叶斯错误率的估计就不再准确了,但这些技巧还是可以帮你做出明确的决定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值