为什么我们使用对数函数进行交叉熵?

机器算法验证 分类 二进制数据 交叉熵
2022-01-23 03:50:09

我正在学习二进制分类器。它使用交叉熵函数作为其损失函数。

yilogpi+(1yi)log(1pi)

但是它为什么要使用日志功能呢?如下使用线性形式怎么样?

yipi+(1yi)(1pi)

使用日志功能有什么好处吗?

还有一个问题:

对数函数将 (0,1) 映射到 (-inf, 0)。所以我认为如果我们为得到 0,它可以粉碎算法,因为日志值将是 -inf 并且反向传播将被爆炸。pi1pi

2个回答

对于二进制分类,编码输出概率的一种方法是,如果 y 编码为 0 或 1。这是似然函数,其含义是概率 p 我们输出 0,如果输出为 1,则概率为 1-p。py(1p)1y

现在你有一个样本,你想找到最适合你的数据的 p。一种方法是找到最大似然估计量。如果您的观察是独立的,则通过最大化整个样本的可能性来找到您的 mle。这是个体可能性的乘积。但这很难使用。因为那个用对数转换的可能性。转换是单调的,您摆脱产品并获得更易于处理的总和。应用日志并获得您的表达。πi=1npyi(1p)yi1

为什么不使用您的编码呢?我认为没有理由不这样做。问题是您的估算器有哪些属性?第一个公式使用可能性和 mle,其背后有一些理论,其中包括您的估计器是有效的事实。第二个公式不经常使用,不知道任何编码概率的例子,比如不排除你的方法。

我也在寻找解释,并找到了一个我觉得很直观的原因

它严重惩罚了自信和错误的预测。

检查此图,它显示了给定真实观察的可能对数损失值的范围:

在此处输入图像描述

随着预测概率接近 0(错误预测),Log Loss 迅速增加。