【发布时间】:2016-10-09 09:09:05
【问题描述】:
我知道,如果我对苹果、梨和香蕉的样本图片训练 ML 分类算法,它将能够对这三个类别之一的新图片进行分类。但是,如果我提供汽车的图片,它也会将其归为这三个类别之一,因为它无处可去。
但是有没有一种机器学习分类算法能够判断一个项目/图片是否真的不属于它所训练的任何类别?我知道我可以创建一个“未知”类并在各种既不是苹果、梨或香蕉的图片上训练它,但我认为训练集需要很大。这听起来不太实用。
【问题讨论】:
标签: algorithm
我知道,如果我对苹果、梨和香蕉的样本图片训练 ML 分类算法,它将能够对这三个类别之一的新图片进行分类。但是,如果我提供汽车的图片,它也会将其归为这三个类别之一,因为它无处可去。
但是有没有一种机器学习分类算法能够判断一个项目/图片是否真的不属于它所训练的任何类别?我知道我可以创建一个“未知”类并在各种既不是苹果、梨或香蕉的图片上训练它,但我认为训练集需要很大。这听起来不太实用。
【问题讨论】:
标签: algorithm
可以在本文中找到一种方法 - https://arxiv.org/pdf/1511.06233.pdf
论文还比较了简单地将阈值放在最终分数上产生的结果和作者提出的(OpenMax)技术。
【讨论】:
您应该查看One-class classification。这是学习一个类的成员资格的问题,而不是区分两个类。如果第二类的示例太少(比方说“非类”),或者“非类”类的定义不明确,这很有趣。
我曾经出现过这种情况,即对 Wikipedia 文章以某种方式存在缺陷进行分类 - 因为不清楚未标记为有缺陷的文章是否真的没有缺陷,所以一种方法是一类分类。我必须补充一点,尽管对于我的问题,这表现不佳,因此您应该将性能与其他解决方案进行比较。
【讨论】:
我同意下面的 cmets 原始形式的以下答案是不正确的。您绝对需要负样本来为您的训练数据集提供一些平衡,否则您的模型可能无法在正样本和负样本之间学习有用的鉴别器。
话虽如此,您不需要对所有可能的负类进行训练,只需要在执行推理时可能存在的那些。这将更多地涉及您如何设置问题以及您计划如何使用经过训练的模型。
大多数分类算法都会输出一个分类以及一个分数/确定性度量,该度量表明该算法对返回标签正确的信心程度(基于一些内部计算,这不是外部准确度评估)。
如果分数低于某个阈值,您可以让它输出 unknown 而不是已知类别之一。不需要用反例来训练。
【讨论】:
它肯定有助于将带有随机图片的类(没有您想要检测的其他类的对象)标记为 UNKNOWN 类。这将防止很多误报。这也是最佳做法。在此处阅读以查看它与 AutoML 的使用情况:https://cloud.google.com/vision/automl/docs/prepare
【讨论】: