交叉熵CrossEntropy
多分类交叉熵公式为:
J
=
−
1
m
∑
i
=
1
m
∑
k
=
1
K
y
k
(
i
)
l
o
g
(
p
k
(
i
)
)
\Large J = -\frac{1}{m}\sum_{i=1}^m\sum_{k=1}^K y_k^{(i)}log(p_k^{(i)})
J=−m1i=1∑mk=1∑Kyk(i)log(pk(i))
其中
m
m
m表示样本数量,
K
K
K表示类别数量,
y
k
(
i
)
y_k^{(i)}
yk(i)表示第
i
i
i个样本第
k
k
k个类别的值,独热编码表示,当
y
i
y_i
yi属于第
k
k
k类时为1,否者为0。
p
k
(
i
)
p_k^{(i)}
pk(i)表示第
i
i
i个样本的第
k
k
k类的预测分数。
由于独热编码的特殊表示,不等于该类时 y = 0 y=0 y=0,所以 ∑ k = 1 K y k ( i ) l o g ( p k ( i ) ) \sum_{k=1}^K y_k^{(i)}log(p_k^{(i)}) ∑k=1Kyk(i)log(pk(i)) 最后只有属于那一类的值有效,如此时真实类别为类别1,则 ∑ k = 1 K y k ( i ) l o g ( p k ( i ) ) = y 1 ( i ) l o g ( p 1 ( i ) ) = l o g ( p 1 ( i ) ) \sum_{k=1}^K y_k^{(i)}log(p_k^{(i)}) = y_1^{(i)}log(p_1^{(i)}) = log(p_1^{(i)}) ∑k=1Kyk(i)log(pk(i))=y1(i)log(p1(i))=log(p1(i))
所以其实对于一个单独的样本,只需要考虑一组 1 1 1与 p p p的关系
画出 y = l o g ( x ) y = log(x) y=log(x)的函数图
可以看出,当 p p p接近0时, − l o g ( p 1 ( i ) ) -log(p_1^{(i)}) −log(p1(i))越大(本来是负值,加上交叉熵 J J J前面的负号就是正的了),越接近1损失越小
如 p = 0.03 p = 0.03 p=0.03时, l o g ( p ) = − 3.50 log(p) = -3.50 log(p)=−3.50, l o s s = − l o g ( p ) = 3.50 loss = -log(p) = 3.50 loss=−log(p)=3.50
p = 0.5 p = 0.5 p=0.5时, l o g ( p ) = − 0.69 log(p) = -0.69 log(p)=−0.69, l o s s = − l o g ( p ) = 0.69 loss = -log(p) = 0.69 loss=−log(p)=0.69
这样将多分类任务转化成了在log函数上的模型预测值与1之间的距离关系,距离1越近损失越低,距离0越近损失越高