老遇到交叉熵作为损失函数的情况,于是总结一下
KL散度
交叉熵从KL散度(相对熵)中引出,KL散度(Kullback-Leibler Divergence)公式为:
KL散度是衡量两个分布之间的差异大小的,KL散度大于等于0,并且越接近0说明p与q这两个分布越像,当且仅当p与q相等时KL散度取0.
交叉熵
在机器学习的分类问题中,常以交叉熵作为损失函数,此时同样可以衡量两个分布的差异.
在分类问题中,某一个样本x可能是K种类别中的一种,y(x)代表样本x对应类别的分布,y^~(x)代表x属于各个类别的预测值的分布,这句话描述的是关于类别的分布,而不是样本的分布,不要弄混.
训练时,针对某一个标签信息y(x)是已知的,所以讲KL(y(x)||y^~(x))中的H(y(x))是个常数,此时KL散度等价于交叉熵,所以交叉熵可以衡量p(x)与q(x)的差异,我们希望q(x)尽可能地接近p(x),等价于最小化交叉熵
对于某一个样本x,其交叉熵为:
对于一个数据集x,其交叉熵为:
总结
因为训练集中每个样本的标签是已知的,此时标签和预测的标签之间的KL散度等价于交叉熵.
要认识到,标签可以看成分布,举例来说,某个分类任务共有4类,其中一个样本的真实标签分布为(0,0,1,0),预测的标签分布为(0.2,0.1,0.5,0.2),使用交叉熵的目的便是使预测的标签分布尽可能接近(0,0,1,0)