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

时间:2017-04-10 06:28:52

标签: machine-learning tensorflow nlp deep-learning

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

我想使用深度学习模型将其预测为两类:EnglishIT jobs。如果我使用传统的分类模型,它只能预测最后一层具有softmax函数的1个标签。因此,我可以使用2个模型神经网络来预测两个类别的“是”/“否”,但如果我们有更多类别,则它太昂贵了。那么我们是否有任何深度学习或机器学习模型来同时预测2个或更多类别?

“编辑”:通过传统方法使用3个标签,它将由[1,0,0]编码,但在我的情况下,它将由[1,1,0]或[1,1,1]编码]

示例:如果我们有3个标签,并且一个句子可能适合所有这些标签。因此,如果softmax函数的输出为[0.45,0.35,0.2],我们应该将其分为3个标签或2个标签,或者可能是1个?

我们这样做的主要问题是:什么是分类为1个,2个或3个标签的好门槛?

1 个答案:

答案 0 :(得分:3)

如果你有n个不同的类别可以同时为真,那么在输出层中有n个输出,并带有sigmoid激活函数。这将为每个输出独立地提供0到1之间的值。

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

linear_output = ...  # the output layer before applying activation function
loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(
    logits=linear_output, labels=correct_outputs))
output = tf.sigmoid(linear_output)  # 0 to 1 for each category