二元交叉熵和分类交叉熵有什么区别?

机器算法验证 机器学习 自然语言 张量流 喀拉斯
2022-04-16 07:53:14

因此,我为情感分类制作了一个双向 LSTM 模型。模型的工作是根据电影评论预测电影的评分(1-5 星)。

在训练模型时,我首先使用了分类交叉熵损失函数。我在 CPU 上对模型进行了 10 多个小时的训练,大约 45 个 epoch。在每个 epoch 的训练中,模型准确度为 0.5098(每个 epoch 都相同)。

然后我将损失函数更改为二元交叉熵,它在训练时似乎工作正常。所以,我想知道这两者之间到底有什么区别?

1个回答

我想扩展 ARMAN 的回答:

没有进入公式,最大的区别是分类交叉熵是基于这样一个假设,即在所有可能的类别中只有 1 个类别是正确的(因此,如果评级为,输出应该类似于 [0,0,0,1,0] 4)虽然 binary_crossentropy 分别对每个单独的输出起作用,这意味着每个案例可以属于多个类别(例如,如果预测客户将获得什么商品,他们可能会购买多个商品;即像 [0,1,0,如果您使用的是 binary_crossentropy,则 1,0] 是有效的)。正如 ARMAN 指出的那样,如果您只有 2 个类,则 2 个输出 categorical_crossentropy 相当于 1 个输出 binary_crossentropy。

在您的具体情况下,您应该使用 categorical_crossentropy,因为每条评论都只有 1 个评分。Binary_crossentropy 为您提供更好的分数,但未正确评估输出。我还建议尝试使用 MSE 损失,因为您的数据是有序的(4 星比 1 更接近 5)