交叉熵损失函数
熵的本质是香浓信息量(log(frac{1}{p}))的期望
既然熵的本质是香浓信息量(log(frac{1}{p}))的期望,那么便有
一个时间结果的出现概率越低,对其编码的bit的长度就越长。熵的本质的另一个解释是编码方案完美时,最短平均编码长度的是多少
现在关于样本集的2个概率分布(p)和(q),其中(p)为真实分布,(q)为非真实分布,通常是预测结果,比如在深度学习的分类中,像手写数字识别,会有10个类别,那么对于一个给定的图片(x),那么经过深度模型预测得到的结果应该是一个分布,比如(q(0)=0.0,q(1) = 0.1,q(2) = 0.1, q(3) = 0.8,q(4)=0,dots),这就是一个分布,最后肯定会选择概率最大的3作为输出。但是这是预测的概率分布,实际的分布应该是(p(0)=0,p(1)=0,p(2)=0,p(3)=1,p(4)=0,dots)。于是,我们想做的就是让q的分布与(p)的分布一样。
在概率论或信息论中,KL散度( Kullback–Leibler divergence),又称相对熵(relative entropy),是描述两个概率分布P和Q差异的一种方法。它是非对称的,这意味着D(P||Q) ≠ D(Q||P)。特别的,在信息论中,D(P||Q)表示当用概率分布Q来拟合真实分布P时,产生的信息损耗,其中P表示真实分布,Q表示P的拟合分布。简单的说,KL散度或者相对熵它是用来度量两个分布(P,Q)之间的距离的,也就是说,距离越大,两个分布差距最大。于是。在我们的模型训练中, 我们要做的就是不断的调整参数,使得预测得到的分布与真实分布尽可能的一致。那么,这与交叉熵有什么关系呢?
相对熵的数学定义如下
展开后有
我们暂且表示为
而(H(p_i))是一个真实分布的期望,因此与训练无关,是一个常数项。于是,最小化相对熵便转为最小化(H(p_i,q_i)=-sum_i p(i)log q(i))
这个就是交叉熵。
一句话说,就是,最小化误差可以通过最小化相对熵(KL散度)来实现,而最小化相对熵,则可以通过最小化交叉熵来实现,所以,交叉熵损失函数就这么来了。。。。。。。。。