softmax&Cross Entropy Loss
softmax
- 多分类问题
- 通过exp(x)转化,确保概率的非负性(映射到零到正无穷)
- 预测结果概率之和等于1:将转化后的结果除以所有转化后结果之和,相当于转化后结果占总数的百分比,归一化操作
公式:
S
i
=
e
i
∑
j
e
j
S_{i}=\frac{e^{i}}{\sum_{j} e^{j}}
Si=∑jejei
Cross Entropy Loss
交叉熵(cross entropy)一般用来求目标与预测值之间的差距,
1 信息量
信息量的大小与信息发生的概率成反比。概率越大,信息量越小。概率越小,信息量越大。
设某一事件发生的概率为P(x),其信息量表示为:
I
(
x
)
=
−
log
(
P
(
x
)
)
I(x)=-\log (P(x))
I(x)=−log(P(x))
其中I ( x )表示信息量,log表示以e为底的自然对数。
2 信息熵
信息熵也被称为熵,用来表示所有信息量的期望,表示为:
H
(
X
)
=
−
∑
i
=
1
n
P
(
x
i
)
l
o
g
(
P
(
x
i
)
)
(
X
=
x
1
,
x
2
,
x
3
.
.
.
,
x
n
)
H(X)=−\sum_{\mathrm{i}=1}^{\mathrm{n}}P(x_i)log(P(x_i))(X=x_1,x_2,x_3...,x_n)
H(X)=−i=1∑nP(xi)log(P(xi))(X=x1,x2,x3...,xn)
H(x)=P(xi)*I(xi),期望是试验中每次可能结果的概率乘以其结果的总和。
3 交叉熵
KL散度 = 交叉熵 - 信息熵
交叉熵公式表示为:
H
(
p
,
q
)
=
−
∑
i
=
1
n
p
(
x
i
)
log
(
q
(
x
i
)
)
\mathrm{H}(\mathrm{p}, \mathrm{q})=-\sum_{\mathrm{i}=1}^{\mathrm{n}} \mathrm{p}\left(\mathrm{x}_{\mathrm{i}}\right) \log \left(\mathrm{q}\left(\mathrm{x}_{\mathrm{i}}\right)\right)
H(p,q)=−i=1∑np(xi)log(q(xi))
在训练网络时,输入数据与标签常常已经确定,那么真实概率分布 P ( x ) 也就确定下来了,所以信息熵在这里就是一个常量。由于KL散度的值表示真实概率分布 P ( x )与预测概率分布 Q ( x ) 之间的差异,值越小表示预测的结果越好,且交叉熵公式相比KL散度更加容易计算,所以常常使用交叉熵损失函数来计算loss。
二分类:
在二分类情况中,对于每一类别的预测只能是两个值,假设预测为正(1)的概率为 P ,负(0)的概率为 1 − P:
多分类:
多分类可以用one-hot编码来表示,前为y i 表示第i个样本的真实标签为k(one-hot编码) ,共有K个标签值 N个样本,pik表示对于观测样本i属于类别k的预测概率 (就是softmax对应预测概率),1/n求平均:
参考:https://blog.youkuaiyun.com/b1055077005/article/details/100152102