关于softmax中的交叉熵损失函数

3.4.5 交叉熵损失函数
前⾯提到,使⽤softmax 运算后可以更⽅便地与离散标签计算误差。我们已经知道,softmax 运
算将输出变换成⼀个合法的类别预测分布。实际上,真实标签也可以⽤类别分布表达:对于样本
i,我们构造向量y(i) 2 Rq ,使得其第y(i)(样本i 类别的离散数值)个元素为1,其余为0。这
样我们的训练⽬标可以设为使预测概率分布^y(i) 尽可能接近真实的标签概率分布y(i)。
我们可以像线性回归那样使⽤平⽅损失函数∥^y(i) y(i)∥2/2。然而,想要预测分类结果正确,我
们其实并不需要预测概率完全等于标签概率。例如在图像分类的例⼦⾥,如果y(i) = 3,那么我
们只需要^y(i)
3 ⽐其他两个预测值^y(i)
1 和^y(i)
2 ⼤就⾏了。即使^y(i)
3 值为0.6,不管其他两个预测值
为多少,类别预测均正确。而平⽅损失则过于严格,例如^y(i)
1 = ^y(i)
2 = 0:2 ⽐^y(i)
1 = 0; ^y(i)
2 = 0:4
的损失要小很多,虽然两者都有同样正确的分类预测结果。
改善上述问题的⼀个⽅法是使⽤更适合衡量两个概率分布差异的测量函数。其中,交叉熵(cross

entropy)是⼀个常⽤的衡量⽅法:
H
(
y(i); ^y(i)
)
=
Σq
j=1
y(i)
j log ^y(i)
j ;
其中带下标的y(i)
j 是向量y(i) 中⾮0 即1 的元素,需要注意将它与样本i 类别的离散数值,即不
带下标的y(i) 区分。在上式中,我们知道向量y(i) 中只有第y(i) 个元素y(i)
y(i) 为1,其余全为0,于
是H(y(i); ^y(i)) = log ^y(i)
y(i)。也就是说,交叉熵只关⼼对正确类别的预测概率,因为只要其值⾜
够⼤,我们就可以确保分类结果正确。当然,遇到⼀个样本有多个标签时,例如图像⾥含有不⽌
⼀个物体时,我们并不能做这⼀步简化。但即便对于这种情况,交叉熵同样只关⼼对图像中出现
的物体类别的预测概率。
假设训练数据集的样本数为n,交叉熵损失函数定义为
ℓ() =
1
n
Σn
i=1
H
(
y(i); ^y(i)
)
;
其中代表模型参数。同样地,如果每个样本只有⼀个标签,那么交叉熵损失可以简写成ℓ() =
(1/n)
Σn
i=1 log ^y(i)
y(i)。从另⼀个⻆度来看,我们知道最小化ℓ() 等价于最⼤化exp(nℓ()) =
Πn
i=1 ^y(i)
y(i),即最小化交叉熵损失函数等价于最⼤化训练数据集所有标签类别的联合预测概率。

你可能感兴趣的:(深度学习)