机器学习策略篇:详解理解人的表现(Understanding human-level performance)

understanding,human,level,performance · 浏览次数 : 0

小编点评

**人类水平错误率的定义** 在机器学习论文和项目中,人类水平错误率通常被定义为一种替代或估计贝叶斯错误率的方法。贝叶斯错误率是指在给定样本中,任何模型的错误率。在医学图像分类中,通常定义人类水平错误率为1%,这意味着任何模型的错误率小于1%。 **人类水平错误率的意义** 在机器学习任务中,人类水平错误率可以帮助评估模型的性能,并为减少模型偏差提供参考。当模型的错误率接近人类水平错误率时,意味着模型已经可以像人类一样在处理新样本时做出正确预测。 **如何估计人类水平错误率** 在一些情况下,可以通过观察模型的错误率来估计人类水平错误率。例如,如果模型的错误率是1%,这意味着任何模型的错误率低于1%。因此,我们可以认为人类水平错误率是1%。 **总结** 人类水平错误率是指在机器学习任务中,模型在像人类一样处理新样本时做出正确预测的错误率。在医学图像分类中,通常定义人类水平错误率为1%,这意味着任何模型的错误率小于1%。

正文

理解人的表现

人类水平表现这个词在论文里经常随意使用,但现在告诉这个词更准确的定义,特别是使用人类水平表现这个词的定义,可以帮助推动机器学习项目的进展。还记得上个博客中,用过这个词“人类水平错误率”用来估计贝叶斯误差,那就是理论最低的错误率,任何函数不管是现在还是将来,能够到达的最低值。先记住这点,然后看看医学图像分类例子。

假设要观察这样的放射科图像,然后作出分类诊断,假设一个普通的人类,未经训练的人类,在此任务上达到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%,只要超越了一个普通医生的表现,如果能达到这种水平,那系统已经达到实用了。也许超过一名放射科医生,一名医生的表现,意味着系统在一些情况下可以有部署价值了。

要点是,在定义人类水平错误率时,要弄清楚的目标所在,如果要表明可以超越单个人类,那么就有理由在某些场合部署的系统,也许这个定义是合适的。但是如果您的目标是替代贝叶斯错误率,那么这个定义(经验丰富的医生团队——0.5%)才合适。

要了解为什么这个很重要,来看一个错误率分析的例子。比方说,在医学图像诊断例子中,训练错误率是5%,开发错误率是6%。而在上个例子中,人类水平表现,将它看成是贝叶斯错误率的替代品,取决于是否将它定义成普通单个医生的表现,还是有经验的医生或医生团队的表现,可能会用1%或0.7%或0.5%。同时也回想一下,前面博客中的定义,贝叶斯错误率或者说贝叶斯错误率的估计和训练错误率直接的差值就衡量了所谓的可避免偏差,这(训练误差与开发误差之间的差值)可以衡量或者估计的学习算法的方差问题有多严重。

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

现在来看看第二个例子,比如说的训练错误率是1%,开发错误率是5%,这其实也不怎么重要,这种问题更像学术界讨论的,人类水平表现是1%或0.7%还是0.5%。因为不管使用哪一个定义,测量可避免偏差的方法是,如果用那个值,就是0%到0.5%之前,对吧?那就是人类水平和训练错误率之前的差距,而这个差距是4%,所以这个4%差距比任何一种定义的可避免偏差都大。所以他们就建议,应该主要使用减少方差的工具,比如正则化或者去获取更大的训练集。

什么时候真正有效呢?

就是比如的训练错误率是0.7%,所以现在已经做得很好了,的开发错误率是0.8%。在这种情况下,用0.5%来估计贝叶斯错误率关系就很大。因为在这种情况下,测量到的可避免偏差是0.2%,这是测量到的方差问题0.1%的两倍,这表明也许偏差和方差都存在问题。但是,可避免偏差问题更严重。在这个例子中,在上一张幻灯片中讨论的是0.5%,就是对贝叶斯错误率的最佳估计,因为一群人类医生可以实现这一目标。如果用0.7代替贝叶斯错误率,测得的可避免偏差基本上是0%,那就可能忽略可避免偏差了。实际上应该试试能不能在训练集上做得更好。

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

而在左边的两个例子中,当远离人类水平时,将优化目标放在偏差或方差上可能更容易一点。这就说明了,为什么当接近人类水平时,更难分辨出问题是偏差还是方差。所以机器学习项目的进展在已经做得很好的时候,很难更进一步。

总结一下讲到的,如果想理解偏差和方差,那么在人类可以做得很好的任务中,可以估计人类水平的错误率,可以使用人类水平错误率来估计贝叶斯错误率。所以到贝叶斯错误率估计值的差距,告诉可避免偏差问题有多大,可避免偏差问题有多严重,而训练错误率和开发错误率之间的差值告诉方差上的问题有多大,的算法是否能够从训练集泛化推广到开发集。

今天和之前博客中的重大区别是,以前比较的是训练错误率和0%,直接用这个值估计偏差。相比之下,在这个博客中,有一个更微妙的分析,其中并没有假设应该得到0%错误率,因为有时贝叶斯错误率是非零的,有时基本不可能做到比某个错误率阈值更低。所以在之前的博客中,测量的是训练错误率,然后观察的是训练错误率比0%高多少,就用这个差值来估计偏差有多大。而事实证明,对于贝叶斯错误率几乎是0%的问题这样就行了,例如识别猫,人类表现接近完美,所以贝叶斯错误率也接近完美。所以当贝叶斯错误率几乎为零时,可以那么做。但数据噪点很多时,比如背景声音很嘈杂的语言识别,有时几乎不可能听清楚说的是什么,并正确记录下来。对于这样的问题,更好的估计贝叶斯错误率很有必要,可以帮助更好地估计可避免偏差和方差,这样就能更好的做出决策,选择减少偏差的策略,还是减少方差的策略。

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

与机器学习策略篇:详解理解人的表现(Understanding human-level performance)相似的内容:

机器学习策略篇:详解理解人的表现(Understanding human-level performance)

理解人的表现 人类水平表现这个词在论文里经常随意使用,但现在告诉这个词更准确的定义,特别是使用人类水平表现这个词的定义,可以帮助推动机器学习项目的进展。还记得上个博客中,用过这个词“人类水平错误率”用来估计贝叶斯误差,那就是理论最低的错误率,任何函数不管是现在还是将来,能够到达的最低值。先记住这点,

机器学习策略篇:详解清除标注错误的数据(Cleaning up Incorrectly labeled data)

清除标注错误的数据 监督学习问题的数据由输入\(x\)和输出标签 \(y\) 构成,如果观察一下的数据,并发现有些输出标签 \(y\) 是错的。的数据有些标签是错的,是否值得花时间去修正这些标签呢? 看看在猫分类问题中,图片是猫,\(y=1\);不是猫,\(y=0\)。所以假设看了一些数据样本,发现

机器学习策略篇:详解进行误差分析(Carrying out error analysis)

从一个例子开始讲吧。 假设正在调试猫分类器,然后取得了90%准确率,相当于10%错误,,开发集上做到这样,这离希望的目标还有很远。也许的队员看了一下算法分类出错的例子,注意到算法将一些狗分类为猫,看看这两只狗,它们看起来是有点像猫,至少乍一看是。所以也许的队友给一个建议,如何针对狗的图片优化算法。试

机器学习策略篇:详解如何改善你的模型的表现(Improving your model performance)

如何改善模型的表现 学过正交化,如何设立开发集和测试集,用人类水平错误率来估计贝叶斯错误率以及如何估计可避免偏差和方差。现在把它们全部组合起来写成一套指导方针,如何提高学习算法性能的指导方针。 所以想要让一个监督学习算法达到实用,基本上希望或者假设可以完成两件事情。首先,的算法对训练集的拟合很好,这

机器学习策略篇:详解为什么是人的表现?(Why human-level performance?)

为什么是人的表现? 在过去的几年里,更多的机器学习团队一直在讨论如何比较机器学习系统和人类的表现,为什么呢? 认为有两个主要原因,首先是因为深度学习系统的进步,机器学习算法突然变得更好了。在许多机器学习的应用领域已经开始见到算法已经可以威胁到人类的表现了。其次,事实证明,当试图让机器做人类能做的事情

机器学习策略篇:详解开发集和测试集的大小(Size of dev and test sets)

在深度学习时代,设立开发集和测试集的方针也在变化。 可能听说过一条经验法则,在机器学习中,把取得的全部数据用70/30比例分成训练集和测试集。或者如果必须设立训练集、开发集和测试集,会这么分60%训练集,20%开发集,20%测试集。在机器学习的早期,这样分是相当合理的,特别是以前的数据集大小要小得多

机器学习策略:详解什么时候该改变开发/测试集和指标?(When to change dev/test sets and metrics)

什么时候该改变开发/测试集和指标? 有时候在项目进行途中,可能意识到,目标的位置放错了。这种情况下,应该移动的目标。 来看一个例子,假设在构建一个猫分类器,试图找到很多猫的照片,向的爱猫人士用户展示,决定使用的指标是分类错误率。所以算法\(A\)和\(B\)分别有3%错误率和5%错误率,所以算法\(

机器学习即代码的时代已经到来

译者注: 到底是 AI 会吃掉软件还是软件会吃掉 AI?为了 job security 工程师应该把宝押在哪儿?这篇 2021 年的文章提供的一些视角似乎印证了它现在的流行,有点“运筹于帷幄之中,决胜于数年之后”的意思,颇值得软件架构师和产品经理们内省一番。 2021 版的 《人工智能现状报告》 于

第124篇: 期约Promise基本方法

好家伙,本篇为《JS高级程序设计》第十章“期约与异步函数”学习笔记 1.异步编程 同步行为和异步行为的对立统一是计算机科学的一个基本概念。 特别是在 JavaScript 这种单线程事 件循环模型中,同步操作与异步操作更是代码所要依赖的核心机制。 异步行为是为了优化因计算量大而 时间长的操作。如果在

机器学习(四)——Lasso线性回归预测构建分类模型(matlab)

Lasso线性回归(Least Absolute Shrinkage and Selection Operator)是一种能够进行特征选择和正则化的线性回归方法。其重要的思想是L1正则化:其基本原理为在损失函数中加上模型权重系数的绝对值,要想让模型的拟合效果比较好,就要使损失函数尽可能的小,因此这样