为什么二进制交叉熵可以用作自编码器中的损失函数?
机器算法验证
机器学习
损失函数
自动编码器
交叉熵
2022-03-19 07:41:33
2个回答
我认为必须使用回归损失函数,例如均方误差或平均绝对误差, 当标签和预测相同时,它们的值为零。
这正是你的误解。您认为,为了在自动编码器等模型中使用损失函数,当预测等于真实标签时,它的值必须为零。这是完全错误的,因为在大多数机器学习模型(包括自动编码器)中,我们都试图最小化损失/成本函数。我们这样做的假设是,当我们使用的损失函数达到其最小值时,意味着预测和真实标签是相同的. 这就是在基于最小化损失函数训练的模型中使用函数作为损失函数的条件。请注意,在这个最小点的损失函数的值可能根本不为零,但是我们并不关心这一点,只要它暗示该点的预测和真实标签是相同的。
现在让我们验证二元交叉熵的情况:我们需要证明,当我们达到二元交叉熵的最小值时,它意味着,即预测等于真实标签。为了找到最小点,我们对求导并将其设置为零(请注意,在以下计算中,我假设是自然对数函数以使计算更容易一些):
正如@today 指出的那样,当解决方案最佳时,损失值不必为 0,只要它最小就足够了。
我想补充的一件事是为什么人们更喜欢二元交叉熵而不是 MSE。通常,最后一层的激活函数是sigmoid,这会导致损失饱和(“高原”)。这种饱和可能会阻止基于梯度的学习算法取得进展。为了避免它,最好log
在目标函数中有一个来撤销exp
in sigmoid,这就是为什么首选二元交叉熵的原因(因为它使用log
,与 MSE 不同)。我在Deep Learning Book中读过这个,但我现在找不到确切的位置(我认为是第 8 章)。
其它你可能感兴趣的问题