上一节介绍了softmax函数,这里插一篇关于损失函数的介绍,看一看softmax和损失函数是如何结合的。
在很多分类任务中,损失函数使用的是交叉熵损失。
作为一种损失函数,它的重要作用便是可以将“预测值”和“真实值(标签)”进行对比,从而输出 loss 值,直到 loss 值收敛,可以认为神经网络模型训练完成。
我们先通过一些简单的定义,先看一下这个损失函数是做什么的。
“交叉熵”包含了“交叉”和“熵”这两部分,熵可以用来衡量一个随机变量的不确定性,数学上可表示为:
H(i) = - ∑ P(i) * log(P(i))
对于上面的公式,我们稍微变一下形,将负号和 log(P(i)) 看做一个变量,得到:
PP(i) = -log(p(i))
那么熵的公式就可以写作:
H(i) = ∑ P(i) * PP(i)
此时熵的公式中,P(i) 和 PP(i) 是服从相同的概率分布。因此,熵H(i)就变成了事件 PP(i) 发生的数学期望,通俗理解为均值。
熵越大,表示事件发生的不确定性越大。
而交叉熵是用于比较两个概率分布之间的差异,对于两个概率分布 P 和 Q 而言,交叉熵定义为:
H(i) = ∑ P(i) * Q(i)
此时,P(i) 和 Q(i) 服从两种不同的概率分布,交叉熵的“交叉”就体现在这。
其中 P(i) 为真实分布,也就是训练过程中标签的分布;Q(i) 为预测分布,也就是模