如何最好地处理图像分类中的 "None of the above"?
How best to deal with "None of the above" in Image Classification?
这似乎是一个基本问题,你们中的一些人必须对此发表意见。我有一个用 CNTK 实现的图像 classifier,有 48 个 classes。如果图像与 48 classes 中的任何一个都不匹配,那么我想能够得出结论,它不在这 48 个图像类型中。我最初的想法很简单,如果最终 Softmax 层的最高输出很低,我就可以得出测试图像与 none 匹配良好的结论。虽然我偶尔会看到这种情况发生,但在大多数测试中,Softmax 在处理 'unknown image type' 时仍然会产生非常高(且错误)的结果。但也许我的网络是 'over fit',如果不是,我最初的想法会很好。你怎么看?有什么方法可以定义第 49 个 class 称为 'none-of-the-above'?
我同意你的看法,这是一个关键问题,但我也不知道该领域有多少工作。
Zhang and LeCun 最近发表了一篇论文,专门解决了图像 class 化的问题。他们使用大量未标记的数据来创建额外的 "none of the above" class。但要注意的是,在某些情况下,他们未标记的数据并非完全未标记,并且他们有办法删除 "unlabelled" 实际上在其标记的 class 中的图像。话虽如此,作者报告说,除了解决 "none of the above" 问题外,他们甚至在测试集上也看到了性能提升。
至于拟合post-hoc,仅通过查看softmax的输出,我无法提供任何指示。
您确实有这两个选项——对后验概率(softmax 值)进行阈值化,并添加垃圾 class。
在我的领域(演讲),这两种方法各有所长:
如果 "none of the above" 输入与 "above" 具有相同的性质(例如非语法输入),则阈值处理工作正常。请注意,class 的后验概率等于 1 减去选择此 class 的错误率估计值。拒绝后验概率 < 50% 的任何事情都将拒绝所有你错的可能性比对的可能性大的情况。只要您的 none-of-the-of-the-above classes 具有相似的性质,估计可能足够准确,使他们也正确。
如果 "none of the above" 输入具有相似的性质,但您的 classes 数量非常少(例如 10 位数字),或者如果输入具有完全不同的性质(例如关门声或有人咳嗽),阈值处理通常会失败。然后,可以训练 "garbage model." 根据我们的经验,包含正确 class 的训练数据是可以的。现在 none-of-the-above class 也可能匹配正确的 class。但只要 none-of-the-above class 没有过度训练就没关系——它的分布会更平坦,因此即使它匹配已知的 class,它将以较低的分数匹配它,因此不会赢得实际已知的 class' softmax 输出。
最后,我会同时使用两者。绝对使用阈值(捕捉系统可以排除的情况) 和 使用垃圾模型,我会根据你拥有的任何东西对其进行训练。我希望在训练中包含正确的示例不会造成伤害,即使它是您拥有的唯一数据(请检查 Anton 发布的论文是否也适用于图像)。尝试合成数据也可能有意义,例如通过随机组合来自不同图像的补丁。
这似乎是一个基本问题,你们中的一些人必须对此发表意见。我有一个用 CNTK 实现的图像 classifier,有 48 个 classes。如果图像与 48 classes 中的任何一个都不匹配,那么我想能够得出结论,它不在这 48 个图像类型中。我最初的想法很简单,如果最终 Softmax 层的最高输出很低,我就可以得出测试图像与 none 匹配良好的结论。虽然我偶尔会看到这种情况发生,但在大多数测试中,Softmax 在处理 'unknown image type' 时仍然会产生非常高(且错误)的结果。但也许我的网络是 'over fit',如果不是,我最初的想法会很好。你怎么看?有什么方法可以定义第 49 个 class 称为 'none-of-the-above'?
我同意你的看法,这是一个关键问题,但我也不知道该领域有多少工作。
Zhang and LeCun 最近发表了一篇论文,专门解决了图像 class 化的问题。他们使用大量未标记的数据来创建额外的 "none of the above" class。但要注意的是,在某些情况下,他们未标记的数据并非完全未标记,并且他们有办法删除 "unlabelled" 实际上在其标记的 class 中的图像。话虽如此,作者报告说,除了解决 "none of the above" 问题外,他们甚至在测试集上也看到了性能提升。
至于拟合post-hoc,仅通过查看softmax的输出,我无法提供任何指示。
您确实有这两个选项——对后验概率(softmax 值)进行阈值化,并添加垃圾 class。
在我的领域(演讲),这两种方法各有所长:
如果 "none of the above" 输入与 "above" 具有相同的性质(例如非语法输入),则阈值处理工作正常。请注意,class 的后验概率等于 1 减去选择此 class 的错误率估计值。拒绝后验概率 < 50% 的任何事情都将拒绝所有你错的可能性比对的可能性大的情况。只要您的 none-of-the-of-the-above classes 具有相似的性质,估计可能足够准确,使他们也正确。
如果 "none of the above" 输入具有相似的性质,但您的 classes 数量非常少(例如 10 位数字),或者如果输入具有完全不同的性质(例如关门声或有人咳嗽),阈值处理通常会失败。然后,可以训练 "garbage model." 根据我们的经验,包含正确 class 的训练数据是可以的。现在 none-of-the-above class 也可能匹配正确的 class。但只要 none-of-the-above class 没有过度训练就没关系——它的分布会更平坦,因此即使它匹配已知的 class,它将以较低的分数匹配它,因此不会赢得实际已知的 class' softmax 输出。
最后,我会同时使用两者。绝对使用阈值(捕捉系统可以排除的情况) 和 使用垃圾模型,我会根据你拥有的任何东西对其进行训练。我希望在训练中包含正确的示例不会造成伤害,即使它是您拥有的唯一数据(请检查 Anton 发布的论文是否也适用于图像)。尝试合成数据也可能有意义,例如通过随机组合来自不同图像的补丁。