假设一个人训练一个 CNN 来确定某物是猫/狗还是两者都不是(2 类),将所有猫和狗分配到一个类而将其他所有东西分配到另一个类是否是个好主意?还是有一个针对猫的课程,一个针对狗的课程,以及一个针对其他所有课程的课程(3个课程)会更好吗?我的同事主张 3 个班,因为狗和猫有不同的特征,但我想知道他是否正确。
如果我们想将某物分类为猫/狗或两者都不是,我们需要 2 或 3 类吗?
人工智能
神经网络
卷积神经网络
训练
数据集
二元分类
2021-11-15 17:08:08
3个回答
如果您想确定某物是否是
猫/狗或两者都不是
你需要2个课程:
- 一个用于狗或猫,和
- 一个用于其他任何事情。
但是,如果您将所有猫和狗分配到同一类, 如果输入被分类为,那么你将无法知道它是狗还是猫,你只会知道它是狗还是猫。
如果您也想区分猫和狗(除了两者都没有),那么您需要类。
最后,如果您只指定 2 个类:
- 狗,和
- 猫,
那么你的 CNN 将尝试将任何新输入分类为狗或猫,即使它既不是狗也不是猫(例如,它可能是马)。
最好的方法可能是只拥有一只猫、一只狗,而不是任何一个类(总共 3 个类),并使用回归方法——具体来说,输出每个给定输入的每个类的概率。从那里,您总是可以获取每个输出的概率,并得出猫和狗类的概率,或者两者都不是。此外,确保您在输出层和成本函数上使用正确的激活,以便您可以将输出解释为概率(例如,softmax 激活和交叉熵损失)。
就泛化误差而言,最好使用无监督标准学习(A 和 B)类的数据分布。
如果您捕获了解释大多数变化属于 A 类和 B 类的潜在因素,然后,使用监督标准对其进行微调。这样,如果您使用两个类,一个用于(A 或 B)而另一个不用于(A 或 B),您将不会强制模型学习不属于(A 或 B)的特征,因为模型只是检查是否可能从类似于(A 或 B)的数据分布中提取新数据点。
旁注:您将永远不会拥有探索其他类的内部结构所需的数据(A 和 B 都没有)。