Cross-entropy 实际上是 目标概率向量和预测概率向量的比较。
假设target向量[1, 0, 0] 代表狗(狗的概率是1,其它的概率全为0)
向量[0, 1, 0] 代表猫
向量[0, 0, 1] 代表熊猫
每张图片只能是上面三种中的一种, 那么 target向量就是目标概率向量。
举个例子,算loss
一张狗的图片([1,0,0])经过网络模型后得到一个向量[0.6, 0.3, - 0.1],再经过一次softmax变成预测的概率向量[0.5, 0.3, 0.2]
目标概率向量和预测概率向量通过下面公式进行比较
=-(1*log(0.5) + 0*log(0.3) + 0 *log(0.2))
可以看出预测概率向量越接近目标概率向量,cross-entropy的值越小。
Binary cross-entropy 是 Cross-entropy 的一种特殊情况,
当目标的取之只能是0 或 1的时候使用。
比如预测图片是不是熊猫,1代表是,0代表不是。
图片经过网络模型后得到一个数值15,经过sigmoid激活后变成在[0,1)范围内的一个概率值0.8。
那么target是1, 和预测值0.8如何利用 Cross-entropy来比较呢?Cross-entropy是用来比较概率向量的,
把数值转换成概率向量就可以了。
1 转换成 [1,0], 0.8转换成[0.8, 0.2],再代入 Cross-entropy的公式就可以了,
Cross-entropy = -(1 * log(0.8) + 0 * log(0.2))
OK啦!