多标签分类神经网络,任意一个标签

Multilabel classification neural network, any one label

我正在尝试构建一个神经网络,假设我有 3 个输出标签(A、B、C)。

现在我的数据由其中 2 个标签可以为 1 的行组成。例如 A 和 B 为 1,C 为 0。现在我想训练我的神经网络,使其可以预测 A 或 B . 我不希望它被训练成对 A 和 B 都有很高的概率(比如多标签问题),我只想要其中之一。

原因是 A 和 B 中有 1 的行更像是预测 A 或 B 是正确的无关行。所以我不希望神经网络在它试图预测 A 和 B 的地方找到最小值。

这样训练神经网络可行吗?

长话短说:

  • 一个典型的网络会给你每个 class 的概率。
  • 你如何解释它取决于你。
  • 如果您在单个标签场景中获得相同的权重,则意味着两个标签的可能性相同

multi class class 神经网络的典型实现是使用一个 softmax 层,每个 class

一个输出

如果您想要单个标签 classifier,您将具有最大值的输出视为所选标签。 此输出与其他输出相比的实际值是对该值置信度的度量。

在相等的情况下,这意味着两个输出都有可能

我认为使用权重是我能想到的适合您的应用程序的最佳方式。

为每个样本定义权重 w,使得 w = 0 如果 A = 1B = 1,否则 w = 1。现在,将损失函数定义为:

w * (CE(A) +CE(B)) + w' * min(CE(A), CE(B)) + CE(C)

其中 CE(A) 给出了标签 A 的交叉熵损失。 w' 表示 w 的补码。损失函数很容易理解。当 AB 都不是 1 时,它将尝试正确预测 AB。否则,它将正确预测 AB。请记住,无法提前知道 AB 中的哪一个会被正确预测。此外,它可能在批次上不一致。模型将始终尝试正确预测 class C

如果您使用自己的权重来表示样本重要性,那么您应该将上述整个表达式乘以该权重。

但是,如果您使用 classic 多标签损失函数获得类似(甚至更好)的性能,我不会感到惊讶。假设每个标签的比例相等,那么只有 1/8 的情况下,您允许网络预测 AB。否则,网络必须正确预测所有三个。通常,更简单的损失函数效果更好。