交叉熵在分类任务中非常常见。
在训练分类模型时,我们常用one-hot编码不同种类,如有三类结果时,A类为[1, 0, 0],B类为[0, 1, 0],C类为[0, 0, 1]。
对于一个样本,我们模型的输出结果假如为为三个数[9, 2, -2],我们想把这三个数转化为三种类别的概率,并且三个概率和为1。不能简单的用a/(a+b+c)作为概率,因为概率不能有负值。通常用Softmax函数将三个数转化为三个概率,咱们先不管Softmax函数是怎么转化的,只需知道他把模型输出的三个数[9, 2, -2]转化成了概率[0.7, 0.2, 0.1] (随便写的概率值),然后可以看出这个样本应该A类。
我们想利用梯度下降法训练模型使得输出的结果转化成概率后更接近[1, 0, 0],有了这个想法后,损失函数就得定义成概率[1, 0, 0]和概率[0.7, 0.2, 0.1]之间的差异,然后通过梯度下降法修改参数使它们的差异逐渐减小。
而交叉熵就是描述[1, 0, 0]、[0.7, 0.2, 0.1]这两组概率之间差异的一个东西。