多标签分类神经网络,任意一个标签
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 = 1
和 B = 1
,否则 w = 1
。现在,将损失函数定义为:
w * (CE(A) +CE(B)) + w' * min(CE(A), CE(B)) + CE(C)
其中 CE(A)
给出了标签 A
的交叉熵损失。 w'
表示 w
的补码。损失函数很容易理解。当 A
和 B
都不是 1
时,它将尝试正确预测 A
和 B
。否则,它将正确预测 A
或 B
。请记住,无法提前知道 A
和 B
中的哪一个会被正确预测。此外,它可能在批次上不一致。模型将始终尝试正确预测 class C
。
如果您使用自己的权重来表示样本重要性,那么您应该将上述整个表达式乘以该权重。
但是,如果您使用 classic 多标签损失函数获得类似(甚至更好)的性能,我不会感到惊讶。假设每个标签的比例相等,那么只有 1/8 的情况下,您允许网络预测 A
或 B
。否则,网络必须正确预测所有三个。通常,更简单的损失函数效果更好。
我正在尝试构建一个神经网络,假设我有 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 = 1
和 B = 1
,否则 w = 1
。现在,将损失函数定义为:
w * (CE(A) +CE(B)) + w' * min(CE(A), CE(B)) + CE(C)
其中 CE(A)
给出了标签 A
的交叉熵损失。 w'
表示 w
的补码。损失函数很容易理解。当 A
和 B
都不是 1
时,它将尝试正确预测 A
和 B
。否则,它将正确预测 A
或 B
。请记住,无法提前知道 A
和 B
中的哪一个会被正确预测。此外,它可能在批次上不一致。模型将始终尝试正确预测 class C
。
如果您使用自己的权重来表示样本重要性,那么您应该将上述整个表达式乘以该权重。
但是,如果您使用 classic 多标签损失函数获得类似(甚至更好)的性能,我不会感到惊讶。假设每个标签的比例相等,那么只有 1/8 的情况下,您允许网络预测 A
或 B
。否则,网络必须正确预测所有三个。通常,更简单的损失函数效果更好。