为什么不使用均方误差来解决分类问题?

Hus*_*Ali 5 python mean-square-error lstm keras cross-entropy

我正在尝试使用 LSTM 解决一个简单的二元分类问题。我试图找出网络的正确损失函数。问题是,当我使用二元交叉熵作为损失函数时,与使用均方误差 (MSE) 函数相比,训练和测试的损失值相对较高。

经过研究,我发现二元交叉熵应该用于分类问题和 MSE 用于回归问题的理由。但是,就我而言,使用 MSE 进行二元分类时,我获得了更好的准确性和更小的损失值。

我不确定如何证明这些获得的结果是合理的。为什么不使用均方误差来解决分类问题?

小智 5

我想用一个例子来展示它。假设一个 6 类分类问题。

假设,真概率 = [1, 0, 0, 0, 0, 0]

案例 1: 预测概率 = [0.2, 0.16, 0.16, 0.16, 0.16, 0.16]

案例 2: 预测概率 = [0.4, 0.5, 0.1, 0, 0, 0]

案例 1 和案例 2 中的 MSE分别为0.1280.1033

尽管案例 1 正确预测了实例的类别 1,但案例 1 中的损失高于案例 2 中的损失。

  • 但是当你计算这两种情况的交叉熵时,你是不是会发现情况2即使预测错误,仍然具有较低的损失? (3认同)

vip*_*sal -3

我想分享一下我对 MSE 和二元交叉熵函数的理解。

在分类的情况下,我们取argmax每个训练实例的概率。

现在,考虑一个二元分类器的示例,其中模型预测概率为[0.49, 0.51]。在这种情况下,模型将1作为预测返回。

现在,假设实际标签也是1

在这种情况下,如果使用 MSE,它将0作为损失值返回,而二进制交叉熵将返回一些“有形”值。而且,如果以某种方式对所有数据样本进行训练,训练模型预测出类似类型的概率,则二元交叉熵有效地返回一个大的累积损失值,而 MSE 将返回一个0.

根据 MSE 的说法,这是一个完美的模型,但实际上,它并不是那么好的模型,这就是为什么我们不应该使用 MSE 进行分类。

  • 你的回答毫无意义。MSE 损失不为零。平方误差意味着您字面上_平方误差_。因此,如果您的模型预测为 0.51 并且标签为 1,则平方误差将为 (1-0.51)^2。对数据集中的示例进行平均即可得出 MSE。 (8认同)