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

机器算法验证 机器学习 深度学习 自然语言 张量流
2022-03-20 15:12:56

例子:我在职位描述中有一句话:“英国Java高级工程师”。

我想使用深度学习模型将其预测为 2 类: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、2 或 3 个标签的良好阈值是多少?

1个回答

您可以通过用 sigmoid 激活替换 softmax 并使用二元交叉熵而不是分类交叉熵作为损失函数来实现这种多标签分类。然后,您只需要一个具有与标签一样多的输出单元/神经元的网络。

您需要将损失更改为二元交叉熵,因为分类交叉熵仅从正目标的预测中获得损失。要理解这一点,请查看一个示例的分类交叉熵损失的公式(类索引为):ij

Li=jti,jlog(pi,j)

在正常的多类设置中,您使用 softmax,因此正确类的预测直接依赖于其他类的预测。如果将 softmax 替换为 sigmoid,则不再正确,因此训练中不再使用这就是为什么您需要更改为二进制交叉熵,它同时使用正例和负例: ti,j=0Li=jti,jlog(pi,j)j(1ti,j)log(1pi,j)