是否有可能实现一个损失函数,该函数优先考虑前k个概率中的正确答案?

时间:2018-02-08 10:29:41

标签: deep-learning probability conv-neural-network loss-function cross-entropy

我正在研究多类图像识别问题。任务是将正确的答案放在前3个输出概率中。所以我在想,也许存在一个聪明的成本函数,它优先考虑正确的答案在前K,并且在这些前K之间不会有太多的惩罚。

1 个答案:

答案 0 :(得分:0)

这可以通过类加权交叉熵损失来实现,其基本上将权重分配给与每个类相关联的错误。这种损失用于研究,例如参见S. Panchapagesan撰写的论文"Multi-task learning and Weighted Cross-entropy for DNN-based Keyword"。在计算交叉熵之前,您可以检查预测分布是否满足您的条件(例如,地面实况类在预测类的前k个中)并相应地分配零(或接近零)权重(如果确实如此)。

但是有一些悬而未决的问题:当正确的类位于top-k时,你是否应该惩罚k-1 错误的预测类?例如,如果预测是(0.9, 0.05, 0.01, ...),第三类是正确的并且它在前3位 - 这个预测是否足够好或者不是这样的呢?您是否应该关心k-1个错误的类是什么?

所有这些问题都出现了,因为与标准交叉熵不同,这种损失没有概率解释。这就是为什么我不建议在实践中使用它,而是重新制定目标。

,例如,如果原始问题是某些输入几个类同样好,那么处理它的最佳方法是使用软标签,例如(0.33, 0.33, 0.33, 0, 0, 0, ...)而不是一热(注意这完全符合概率解释)。它将迫使网络学习与所有三个好类相关的功能,并且通常会导致相同的目标,但可以更好地控制目标类。