说明
关于分类问题的交叉熵损失函数,博客交叉熵介绍的非常清楚。
我这里补充一点笔记,给自己看的。
前文结论
在这篇博文中,关于 KL 散度部分,已得到:
KL散度越小,表示P(x)和Q(x)越接近,所以可以通过反复训练,来使Q(x)逼近P(x),但KL散度有个特点,就是不对称,就是用P来拟合Q和用Q来拟合P的KL散度(相对熵)是不一样的,但是P和Q的距离是不变的。
那KL散度(相对熵)和交叉熵有什么联系呢?
所以可以看到:KL散度 = 交叉熵 - 信息熵。
从信息熵的公式,我们知道,对于同一个数据集,其信息熵是不变的,所以信息熵可以看作一个常数,因此当KL散度最小时,也即是当交叉熵最小时。在多分类任务中,KL散度(相对熵)和交叉熵是等价的。
补充
上面最后一句提到 在多分类问题中,KL散度和交叉熵等价。
在多分类问题中,我们会对真实的 y 进行 one_hot 编码,如 [0, 1, 0, 0, 0] 这种形式。
所以对于 真实类别 p [1, 0, 0, 0] 和 预测概率 q [0.4, 0.3, 0.2, 0.1]
H p = - (1 x log1 + 0 x log0 + 0 x log0 + 0 x log0) = 0,
所以 Dkl = H(p, q),并且:
H(p, q) = - sum(p(i) * log(q(i))) = - log(q(i)) ,其中 i 是真实的类别。
我们知道 Dkl 衡量的就是 p 和 q 的 差异,所以 H(p.q) 也就能衡量预测概率 q 和真实 类别 p 的差异,也能作为 损失函数(越小,预测越正确),并且 H(p, q) 的公式也知道,并且在 分类问题里,p(i) 不是1就0(one hot 后只有一个1),随后就只剩下一项了,就是这个样本对应的真实类别,在预测结果里的对应位置的概率,取对数再取反,就简单!!!