一、交叉熵损失函数
1、离散变量
i
i
i的概率分布为
P
(
i
)
P(i)
P(i),熵的公式:
E
n
t
r
o
p
y
=
−
∑
i
P
(
i
)
l
o
g
P
(
i
)
Entropy=-\sum_iP(i)logP(i)
Entropy=−i∑P(i)logP(i)
2、连续变量
x
x
x的概率分布为
P
(
x
)
P(x)
P(x),熵的公式:
E
n
t
r
o
p
y
=
−
∫
P
(
x
)
l
o
g
P
(
x
)
d
x
Entropy=-\int P(x)logP(x)dx
Entropy=−∫P(x)logP(x)dx
3、交叉熵:主要度量两个概率分布间的差异性信息:
H
(
P
,
Q
)
=
−
∑
i
=
0
N
P
(
x
)
l
o
g
Q
(
x
)
H(P,Q)=-\sum_{i=0}^NP(x)logQ(x)
H(P,Q)=−i=0∑NP(x)logQ(x)
1)二分类
共 N N N个样本,总 L o s s Loss Loss值为所有样本的 L o s s ( i ) Loss^{(i)} Loss(i)均值: L o s s = 1 N ∑ i = 1 N L o s s ( i ) Loss=\frac{1}{N}\sum_{i=1}^NLoss^{(i)} Loss=N1i=1∑NLoss(i) L o s s ( i ) = − [ y ( i ) ∗ l o g ( y ^ ( i ) ) + ( 1 − y ( i ) ) ∗ l o g ( 1 − y ^ ( i ) ) ] Loss^{(i)}=-[y^{(i)}*log(\hat y^{(i)})+(1-y^{(i)})*log(1-\hat y^{(i)})] Loss(i)=−[y(i)∗log(y^(i))+(1−y(i))∗log(1−y^(i))]单个样本 L o s s ( i ) Loss^{(i)} Loss(i)计算过程如上所示。要注意区分 y ( i ) y^{(i)} y(i)以及 y ^ ( i ) \hat y^{(i)} y^(i): y ( i ) y^{(i)} y(i)是真实的标签,只能取值0或1。 y ^ ( i ) \hat y^{(i)} y^(i)是经过 s i g m o i d sigmoid sigmoid函数预测出的概率。
2)多分类
共
N
N
N个样本,总
L
o
s
s
Loss
Loss值为所有样本的
L
o
s
s
(
i
)
Loss^{(i)}
Loss(i)均值:
L
o
s
s
=
1
N
∑
i
=
1
N
L
o
s
s
(
i
)
Loss=\frac{1}{N}\sum_{i=1}^NLoss^{(i)}
Loss=N1i=1∑NLoss(i)
L
o
s
s
(
i
)
=
−
∑
k
=
1
q
y
k
(
i
)
∗
l
o
g
(
y
^
k
(
i
)
)
Loss^{(i)}=-\sum_{k=1}^{q}y_k^{(i)}*log(\hat y_k^{(i)})
Loss(i)=−k=1∑qyk(i)∗log(y^k(i))单个样本
L
o
s
s
(
i
)
Loss^{(i)}
Loss(i)计算过程如上所示。要注意区分
y
k
(
i
)
y_k^{(i)}
yk(i)以及
y
^
k
(
i
)
\hat y_k^{(i)}
y^k(i):
y
k
(
i
)
y_k^{(i)}
yk(i)是真实的标签对应类别,是第
k
k
k类就取值为1,否则为0,会有很多项为0被屏蔽掉不参与计算。
y
^
k
(
i
)
\hat y_k^{(i)}
y^k(i)是经过
s
o
f
t
m
a
x
softmax
softmax函数预测出的概率。也就是说,交叉熵损失函数只关心正确标签对应的概率取值为多少,这个概率值越大,就越能保证能够正确分类结果。
3)分类问题为什么用交叉熵损失函数而不是MSE?
1、MSE无差别地关注全部类别上预测概率和真实概率的差;交叉熵关注的是正确类别的预测概率
2、涉及反向求导过程。
MSE因为线性变换之后要套一层sigmoid激活函数,反向求导的时候,开始回趋于0,学习速率非常慢,甚至可能梯度消失。
交叉熵损失函数最后参数求导结果只与(预测值-真实值)*样本值有关。
4)MSE和交叉熵损失函数分别适合什么场景?
MSE:适合输出为连续、并且最后一层不含Sigmoid、Softmax激活函数的神经网络。
交叉熵损失函数:适合二分类、多分类的场景。