参考:
简单谈谈Cross Entropy Loss
Cross Entropy
公式:
实际就是entropy与KL divergence的结合
离散:
连续:
总结:从熵的角度看,q(训练得到的分布)与p(数据实际的分布)越远,则对应的loss越大(p的熵不变,KL divergence越大)。
因此,cross entropy通常用于binary/ multi-label 的分类问题,Regression问题还是用MSE比较合适
LG(logistics regression)
以上的式子,把
1
m
\frac{1}{m}
m1忽略掉,剩下的则是对应的
Σ
i
=
1
m
H
(
p
i
,
q
i
)
\Sigma_{i=1}^{m} H(p_i,q_i)
Σi=1mH(pi,qi)。也即:
理解:对于每一个data point,其label则对应一个one-hot的分布 p i p_i pi(为0的概率、为1的概率,其中一个必为1,另一个则必为0)。而预测出来的 h θ ( x ( i ) ) / y ^ h_{\theta}(x^{(i)})/\hat{y} hθ(x(i))/y^ 虽然是一个概率,但是也可以变成一个对应的one-hot分布 q i q_i qi。每一个data point都有一个cross entropy。总体的cross entropy最小就可以了。注意,熵由于自带负号,因此最后的求和是不带负号的
Multi labels
以上两个模型,computed 是预测结果,targets 是预期结果。 二者的数字,都可以理解为概率,即一个分布。 correct 一栏表示预测是否正确。
只看correct一栏,可以看到两个模型的准确度是一样的,都是对二错一。但是若计算 average cross-entropy error ,则
-
模型一:
第一个data point对应的cross entropy是:
求和取平均(average cross-entropy error)有
-
模型二:
-
同理计算average cross-entropy error有
这样一来ACE的结果准确的体现了模型 2 要优于模型 1的事实,所以说 Cross-Entropy Loss 更清晰的描述了模型与理想模型的距离。
总结:仍旧是每一个data point都看成一个one-hot / multi-hot的分布就可以了。在代码实现的时候, 直接选择好想要的loss就OJBK了,并不需要自己重写。