我遇到了一个问题。我想将数据分类到n个类别中。但同时,我也想表达答案不属于这n个类别中的任何一个。
例如,我的类别是:马、猫、狗。所以我会用与马、猫和狗相关的数据进行训练。
但是,如果我给模型提供其他东西,比如一辆汽车,我希望模型能告诉我这不是马、狗或猫。所以我可能需要训练一个包含这些类别的模型:马、猫、狗、其他?
但如果我用数据训练其他类,如何确保当我给它一个新的东西,比如一枚太空火箭时,预测结果会是其他类?
换句话说,我在处理非活跃类时遇到了麻烦。我不希望我的模型在我的目标类别中给出“最佳预测”,我还希望它能告诉我是否不属于这些类别中的任何一个。
谢谢!
回答:
我得到了一些回答,似乎有两个主要的解决方案来解决这个问题:
-
正如我所想,我可以训练我的类别,再加上一个用于其他情况的类。为了确保模型的鲁棒性,我需要为这个类创建数据,尽可能覆盖所有可能的输入情况!
-
训练n个分类器:每个类别一个二元分类器。每个分类器的输出为:活跃/不活跃。
对于每种解决方案,我认为有必要为“其他情况”创建数据集,即使在第二种解决方案中也是如此,以避免未包含的预测。在解决方案1中,你可以选择是否希望有一个活跃类(softmax)或多个活跃类(sigmoid),在解决方案2中,由于每个分类器是独立的,似乎更难控制这种行为,因为多个类别可能会被激活。