交叉熵的理论来源是信息论。本文从怎么衡量一个事件的信息量大小开始,逐步深入,引入交叉熵的由来,并附上计算公式。最后解释了为什么很多算法要用交叉熵作为目标函数(损失函数)
一、自信息(self-information)
对于事件x,它的自信息(self-information)定义为:
当log的底数为e,𝐼(𝑥)的单位是奈特(nats)。一奈特是以1/𝑒的概率观测到一个事件时获得的信息量。当log的底数为2,单位是比特(bit)或香农(shannons)。
二、香农熵(Shannon entroy)
自信息只能处理单个信息,而香农熵(Shannon entroy)可以用来对整个概率分布中的不确定性总量进行量化,也就是指遵循这个分布的事件所产生的期望信息总量,计算公式为:
其中,H(x)也记作H(p)。
三、交叉熵(Cross Entroy)
现在有关于样本集的两个概率分布P和Q,P代表真实分布(计算时常用经验分布代替),Q为非真实分布,通常是对样本分布的人为估计。如果用真实分布P来衡量一个样本的香农熵,计算公式为:
如果用非真实分布Q来衡量一个样本的香农熵,计算公式为:
H(P,Q)即为交叉熵。
举个例子:
真实概率分布P为[0.5, 0.25, 0.25, 0],
非真实分布Q为[0.25, 0.25, 0.25, 0.25],
则H(P) = 0.5*log2 + 0.25*log4 + 0.25*log4 = 1.5
H(P, Q) = 0.5*log4 + 0.25*log4 + 0.25*log4 = 2
例子中可以发现,H(P,Q) > H(P),那么对于不同取值,该不等式是不是一直成立呢?来看第四步
四、交叉熵应用
重点来了,
根据吉布斯不等式Gibbs’ inequality,
H(P, Q) >= H(P)
恒成立,当且仅当Q为真实分布时取等号。
通过最小化交叉熵,可以来找到逼近真实分布的Q。
因此,一些算法将交叉熵做为损失函数。例如,分类问题中,用交叉熵代价函数来替代方差代价函数,可以加快训练速度。