例如,我有苹果和梨的图片。我想要做的是预测一张图片是苹果还是梨图片,同时预测水果是大的和/或黄色的。
因此预测水果类型(苹果/梨)是多类问题,一对一。预测水果是否大和/或黄色是多标签问题。
如果标签排序是[apple, pear, big, yellow]一个“大黄苹果”图片应该有标签[1,0,1,1]。前两个部分是互斥的,一个热的,但后两个不是。
那么,我应该使用什么损失函数来解决这个问题?
例如,我有苹果和梨的图片。我想要做的是预测一张图片是苹果还是梨图片,同时预测水果是大的和/或黄色的。
因此预测水果类型(苹果/梨)是多类问题,一对一。预测水果是否大和/或黄色是多标签问题。
如果标签排序是[apple, pear, big, yellow]一个“大黄苹果”图片应该有标签[1,0,1,1]。前两个部分是互斥的,一个热的,但后两个不是。
那么,我应该使用什么损失函数来解决这个问题?
数据的标签不是互斥的,因此您不能说这是一对多的问题,因为输出向量中可能有多个条目。此外,如果看到的应该有一个苹果或梨,这可以被认为是一个详尽的问题,这意味着每个输入都应该发生其中一个。
我的观点是,对于这个问题,您不必创建新的成本函数。对于互斥部分,正如您真正所说的那样,对于向量的第二部分,众所周知的cross-entropy成本函数将表现良好。我想问题是别的。对于互斥类的问题,我们使用soft max 层作为神经网络的最后一层,而对于类不互斥的情况,您可以将sigmoid其用作激活函数。在您将它们组合在一起的情况下,我建议您采用另一种方法:
将您的互斥部分更改为二进制输出,这意味着如果相应的条目小于一半,您可以理解它是例如一个苹果,否则它是另一个类。其余的,只需保持输出向量不变。sigmoid如果你使用神经网络,最后使用激活函数作为最后一层。