前几章
15.在错误分析期间同时评估几个想法
您的团队对如何改善应用程序中的cat标识符有一些想法:
- 解决您的算法将狗分配给猫的问题
- 解决您的算法将大型野猫(狮子,黑豹等)识别为家猫的问题
- 提高模糊图像的系统性能
- ...
您可以同时欣赏所有这些想法。 通常,我会创建一个特殊的表,并填写约100种情况下的验证(dev)示例错误分类。 我还作了简短的评论,可能有助于我回想起事后的具体例子。 为了说明此过程,让我们看一下可以从一小套验证(dev)示例示例中创建的数据透视表。
图片 | 狗狗 | 大猫 | 模糊 | 留言 |
---|
1个 | X | | | 不寻常的斗牛犬 |
2 | | | | |
3 | | X | X | 狮子座 在下雨天在动物园拍摄的照片 |
4 | | X | | 一棵树后面的豹 |
比重(%) | 25% | 50% | 50% | |
表中的图像3适用于大型猫和模糊猫。 因此,由于我们可以将一个图像归因于几类错误,因此底线的总百分比不限于100%。
尽管事实上,在工作开始时您可以在手动将分类错误分配给这些类别的过程中创建一组特定类别的错误(狗,大猫,模糊图像),但您仍可以决定添加新的错误类型。 例如,假设您查看了十几个图像,并确定分类器在使用彩色编码的Instagram图像上犯了很多错误。 您可以重做表格,在表格中添加“ Instagram”列,然后根据该类别对错误进行重新分类。 通过手动检查算法错误的示例并问自己,作为一个人,您如何正确标记图像,您将能够看到新的错误类别,并可能会激发灵感来寻找新的解决方案。
最有用的错误类别将是您有想法对其进行改善的系统。 例如,如果您知道如何删除过滤器并恢复原始图像,则添加类别“ Instagram”将最有用。 但是,您不应该仅将自己限制为可以消除这些错误的方法; 错误分析过程的目标是在选择最有希望的重点领域时发展您的直觉。
错误分析是一个反复的过程。 如果您不先提出一个类别,就不要担心。 查看几张图像后,您将对错误进行分类。 在对几个图像进行手动分类之后,您可能想要添加新类别并根据新添加的类别查看分类错误,依此类推。
假设您已经完成了对100个错误分类的验证样本示例的错误分析,并获得了以下信息:
图片 | 狗狗 | 大猫 | 模糊 | 留言 |
---|
1个 | X | | | 不寻常的斗牛犬 |
2 | | | X | |
3 | | X | X | 狮子座 在下雨天在动物园拍摄的照片 |
4 | | X | | 一棵树后面的豹 |
... | ... | ... | ... | ... |
比重(%) | 8% | 43% | 61% | |
现在您知道,开展消除猫错误分类的项目,充其量只能消除8%的错误。 在大型猫科动物或模糊图像上工作将有助于消除大量错误。 因此,您可以选择这两个类别之一,并专注于它们。 如果您的团队有足够的人同时在多个领域工作,则可以请几个工程师与大型猫猫打交道,将其余工作集中在模糊图像上。
错误分析没有提供严格的数学公式来告诉您需要将最高优先级分配给哪个任务。 您还必须将处理各种类型的错误所取得的进展与需要花费在这项工作上的努力联系起来。
16.从标签错误的示例中清除验证和测试样本
分析错误时,您可能会注意到验证示例中的某些示例标记有误(分配给了错误的类)。 当我说“错误地标记”时,是指在算法检测到该图像之前,有人对这些图像进行了标记,因此它们已经被错误分类。 即,当将示例(x,y)标记为y时,指示了错误的值。 例如,假设一些没有猫的图像被错误地标记为包含猫,反之亦然。 如果您怀疑错误标记的示例的百分比很大,请添加适当的类别以跟踪错误标记的示例:
图片 | 狗狗 | 大猫 | 模糊 | 标记错误 | 留言 |
---|
... | ... | ... | ... | ... | ... |
98 | | | | X | 误贴为背景中有只猫 |
99 | | X | | | |
100 | | | | X | 彩绘猫(不真实) |
比重(%) | 8% | 43% | 61% | 6% | |
您是否需要更正验证样本中不正确的标记数据? 让我提醒您,使用验证样本的任务是帮助您快速评估算法,以便您可以确定算法A是否优于算法B。如果验证样本的比例被错误标记,则您无法做出这样的判断,那么花时间是有意义的校正验证样品标记中的错误。
例如,假设分类器显示的准确性如下:
- 确认样品的总体准确度.......... 90%(总误差10%)
- 与标记错误相关的错误……..0.6%(验证样本中总错误的6%)
- 由于其他原因导致的错误....................... 9.4%(验证样本中总错误的94%)
在这里,相对于可以改善的9.4%错误,由于标签错误而导致的0.6%错误可能并不足够重要。 手动校正验证样本的标记错误不会是多余的,但是其校正并不重要,因为系统的实际总误差是9.4%还是10%都无关紧要
假设您正在改善猫分类器,并已达到以下准确性指标:
- 验证样品的总体准确度............... 98%(总误差2%)
- 与标记错误相关的错误……..0.6%(验证样本中总错误的30%)
- 由于其他原因导致的误差.............. 1.4%(验证样本中总误差的70%)
30%的错误是由于验证样品图像的标记不正确造成的,这一份额对评估系统准确性的总体错误做出了重大贡献。 在这种情况下,值得改进验证样本的标记。 消除标签错误的示例将帮助您找出分类器错误在1.4%或2%附近的位置。 1.4和2之间存在显着的相对差异。
验证或测试样品标签错误的情况只有在您的系统改进得如此之多以致于与错误示例相关的错误率相对于这些样品中的总错误率增加之后才开始引起您的注意并不罕见。
下一章介绍在改进算法的同时如何改进错误类别,例如“狗”,“大猫”和“模糊”。 在本章中,您了解到可以减少与“布局错误”类别相关的错误,并可以通过改善数据标记来提高质量。
无论您使用哪种方法标记验证样本,都不要忘记将其应用于测试样本的布局,因此验证和测试样本将具有相同的分布。 将相同的方法应用于验证和测试样本,当您的团队优化验证样本中算法的质量并稍后意识到此质量是根据不同于验证测试样本的基础进行评估时,您将避免我们在第6章中讨论的问题。
如果您决定改善标记,请考虑仔细检查。 检查系统未正确分类的示例标记和正确分类的示例标记。 在同一示例中,初始标记和您的学习算法都可能出错。 如果仅更正系统在分类中出错的那些示例的标记,则可以在评估中引入系统性错误。 如果您使用1000个验证样本示例,并且分类器显示98.0%的准确性,则与980个正确分类的示例相比,检查20个分类错误的示例要容易得多。 由于实际上只检查分类错误的示例更容易,因此在某些情况下,系统误差可能会渗入验证样本中。 如果您仅对开发应用程序感兴趣,则可以允许这种错误,但是如果您打算在学术研究文章中使用您的结果,或者需要在完全没有系统错误的情况下对测试样本上的算法准确性进行测量,则将是一个问题。
17.如果您有一个较大的验证样本,请将其分为两个子样本,然后仅考虑其中一个。
假设您有一个由5000个示例组成的大型验证样本,其中错误率为20%。 因此,您的算法无法正确分类约1000个验证图像。 手动评估1000张图像将花费很长时间,因此我们可能决定不将所有图像用于错误分析。
在这种情况下,我肯定会将验证样本分为两个子样本,一个子样本将被您观察,另一个子样本不会。 您可能会对您将要手动分析的部分进行再培训。 您可以使用不用于手动分析的零件来配置模型参数。

让我们继续上面描述的示例,其中该算法将构成验证样本的5000个示例错误地分类为1000个示例。 假设您要分析100个错误(验证样本中所有错误的10%)。 我们需要从验证样本中随机选择10%的示例,并从中组成“ Eyeball dev set ”( Eyeball dev set ),我们将它们命名为“ Eyeball dev set ”,以便我们始终记得自己用自己的眼睛研究这些示例。
译者的话:从我的角度来看,“眼球选择”的定义听起来并不协调(特别是从俄语的角度来看)。 但是,在充分尊重安德鲁的前提下(考虑到我没有提出更好的建议),我将保留这个定义
(对于您将听音频片段的语音识别项目,也许您会改用“耳朵的验证样本”之类的方法)。 因此,眼球的验证样本包含500个示例,其中应该有大约100个错误分类。 第二子样本验证样品,我们将其称为验证样品黑匣子(黑箱dev的集合),将包括4500倍的例子。 您可以使用“黑匣子二次抽样”来自动评估分类器的质量,从而衡量其错误份额。 您也可以使用此子样本在算法之间进行选择或配置超参数。 但是,您应该避免用自己的眼睛看这个子样本的示例。 我们使用术语“黑匣子”,因为我们将其成分的子样本用作“黑匣子”
大约 翻译器 :即我们不知道其结构的对象
评估分类器的质量。

为什么我们将验证样本明确地分为“眼球子样本”和“黑匣子子样本”?
由于在某些时候您会越来越多地感受到(理解)“眼球子采样”中的示例,因此您将需要对该子采样进行再训练的可能性会增加。 为了控制再训练,我们将使用“黑匣子二次采样”。 如果您发现Eyeball Sample上算法的质量增长速度明显快于Black Box Sample上的算法质量,那么您似乎已经对Eyeball进行了重新训练。 在这种情况下,您可能需要丢弃现有的眼球子集,并通过将更多示例从黑匣子移到眼球或获取标记数据的新部分来创建一个新的子集。
因此,将验证样本分为“眼球子样本”和“黑匣子子样本”可以使您看到手动错误分析过程将导致您重新训练眼球子样本的时刻。
18眼球样本和黑盒样本应为多大?
您的眼球样本应该足够大,以使您能够找到算法分类错误的主要类别。 如果您正在执行一个人可以处理的任务(例如识别图像中的猫),则可以给出以下相当粗略的建议:
- 包含10个分类器错误的眼球验证样本将被认为很小。 仅具有10个错误,很难准确评估各种错误类别对分类器质量的影响。 但是,如果您的数据很少,并且无法将更多示例添加到眼球样本中,那么它总比没有好,并且在任何情况下都有助于确定项目的优先级。
- 如果您的分类器在眼球样本上被误认了大约20次,则可以对错误的主要来源进行粗略估计。
- 大约有50个错误,您将对分类器的主要错误来源有所了解。
- 如果您有大约100个错误,您将对主要错误的来源有很好的了解。 我遇到了一些人,他们手动分析了更多的错误,有时甚至多达500个。为什么没有,如果您有足够的数据。
假设分类器的错误率为5%。 为了放心地在眼球样本中获得大约100个标签错误的示例,该样本应包含大约2000个示例(因为0.05 * 2000 = 100)。 分类器的错误率越小,则需要更大的眼球样本才能从中获得足够大的错误样本进行分析。
如果您正在从事一项甚至连人们都很难正确分类示例的任务,那么检查眼球验证样本的练习将不会特别有用,因为很难理解为什么算法无法正确分类示例。 在这种情况下,您可以跳过“眼球采样”设置。 我们将在以下各章中讨论针对此类项目的建议。
那“黑匣子抽样”又如何呢? 我们已经提到过,在一般情况下,验证样本包含1000-10000个示例。 为了补充这一说法,通常(通常)有1,000到10,000个示例的黑匣子验证样本为您提供了足够的数据来配置超参数并在模型之间进行选择,但是如果您需要更多的数据来选择黑匣子,情况将不会更糟。 黑匣子选择100个示例当然是不够的,但它仍然有用(总比没有好)。
如果您有一个小的验证样本,则可能没有足够的数据将其分为眼球样本和黑匣子样本,因此它们都足够大并且可以满足上述目的。 在这种情况下,您可能必须将整个验证样本用作眼球样本。
也就是说,您将手动检查验证样本中的所有数据。
我相信选择眼球比选择黑匣子更为重要(假设您正在研究一个人们擅长定义类并手动检查示例的问题,这将有助于您了解数据)。 如果只有眼球可供选择,则可以仅使用它来进行错误分析,模型选择和超参数设置。 仅选择眼球的缺点是,在这种情况下,在验证样本中重新训练模型的风险会增加。
如果您有大量数据可供使用,那么眼球的样本大小将主要取决于您可以花多少时间进行手动数据分析。 例如,我很少遇到会手动分析1000多个错误的人。
19结论:基本错误分析
- , , ,
- . , — . , .
- , 100 , , . , .
- , , . , , .
- , . , 1000-10000 .
- , , , , .