哪种深度学习模型可以对非互斥的类别进行分类

示例:我在工作描述中有这样一句:“英国的Java高级工程师”。

我想使用一个深度学习模型将其预测为两个类别:EnglishIT jobs。如果使用传统的分类模型,它只能在最后一层使用softmax函数预测一个标签。因此,我可以使用两个神经网络模型来预测这两个类别的“是”/“否”,但如果类别更多,这样做成本太高。那么,有没有深度学习或机器学习模型可以同时预测两个或多个类别呢?

“编辑”:使用传统方法处理3个标签时,它们会被编码为[1,0,0],但在我的情况下,它们会被编码为[1,1,0]或[1,1,1]。

示例:如果我们有3个标签,并且一个句子可能符合所有这些标签。那么,如果softmax函数的输出是[0.45, 0.35, 0.2],我们应该将其分类为3个标签、2个标签,还是1个标签呢?

我们这样做时遇到的主要问题是:将一个句子分类为1个、2个或3个标签的合适阈值是多少?


回答:

如果您有n个可以同时为真的不同类别,请在输出层设置n个输出,并使用sigmoid激活函数。这将使每个输出独立地获得0到1之间的值。

您的损失函数应该是输出负对数似然的平均值。在TensorFlow中,这表示为:

linear_output = ...  # 应用激活函数前的输出层
loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(    logits=linear_output, labels=correct_outputs))
output = tf.sigmoid(linear_output)  # 每个类别的0到1的值

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注