为什么我们不使用对称交叉熵损失?

机器算法验证 机器学习 监督学习 信息论 kullback-leibler
2022-03-02 03:20:09

机器学习分类器经常使用交叉熵H[p,q], 在哪里p是真实分布(通常是增量)和q是类的预测分布(或者至少可以这样解释)。

最小化这一点与最小化真值和预测之间的 KL 散度相同,因为

H[p,q]=DKL[p||q]+H[p]
在哪里H[p]是熵p(对于增量为零,或者在任何情况下都保持模型不变)。

问题:我们为什么不使用

L(p,q)=H[p,q]+H[q,p]=SKL[p,q]+H[p]+H[q]
在哪里SKL=DKL[p||q]+DKL[q||p]是一个对称的 KL 散度。请注意,这也试图最小化预测中的不确定性,这对我来说似乎是一件合理的事情。

3个回答

考虑像您提到的分类上下文,其中q(yx)是给定输入的类上的模型分布x.p(yx)是“真实”分布,定义为以每个数据点的真实类为中心的增量函数:

p(yxi)={1y=yi0Otherwise

为了ith 数据点,交叉熵H(q,p)是:

H(q,p)=yq(yxi)logp(yxi)

因为p(yxi)=0什么时候yyi,这需要对涉及的项求和log(0), 和H(q,p)将会或未定义。

对于离散pq损失为

H(p,q)=xp(x)logq(x).H(p,q)=xp(x)logq(x).

这恰好对应于对数损失假设下的预期损失。假设您预测下一个符号将是x有概率q(x),那么你的损失将是log(q(x)). 在真实概率下发生这种情况的概率pp(x).

在诸如在线压缩(算术编码将使用归因于符号的反概率的对数)或在线赌博(其中对数是资本翻倍的比率)等情况下,对数丢失是非常自然的;例如,请参见此处

交叉熵是用于确定预测概率模型有多好的方法之一。

ℍ[𝑝,𝑞] 的交叉熵可以具有的最小值是当 𝑞=𝑝 即 ℍ[𝑝,𝑝] 时,简单的分布熵 𝑝。

在评估不同的构建模型时说𝑞和𝑞',我们经常需要比较不同的模型,这里可以使用交叉熵。值越接近 ℍ[𝑝,𝑝],我们的模型就越好。

但是,如果我们采用对称交叉熵,虽然这里也有一个下界,但是很难比较两个不同的模型。

http://www.cs.rochester.edu/u/james/CSC248/Lec6.pdf