2

我知道二元交叉熵与两类中的分类交叉熵相同。二元交叉熵惩罚单热矢量的所有分量

此外,我很清楚softmax是什么。
因此,我看到明确的交叉熵惩罚只是将一个部件(概率)应为1。

但为什么,不能或不应我使用二进制交叉熵上一热载体?

Normal Case for 1-Label-Multiclass-Mutual-exclusivity-classification: 
################ 
pred   = [0.1 0.3 0.2 0.4] 
label (one hot) = [0 1 0 0] 
costfunction: categorical crossentropy 
          = sum(label * -log(pred)) //just consider the 1-label 
          = 0.523 
Why not that? 
################ 
pred   = [0.1 0.3 0.2 0.4] 
label (one hot) = [0 1 0 0] 
costfunction: binary crossentropy 
          = sum(- label * log(pred) - (1 - label) * log(1 - pred)) 
          = 1*-log(0.3)-log(1-0.1)-log(1-0.2)-log(1-0.4) 
          = 0.887 

我看到,在二进制交叉熵的是一个目标类,并对应于以下一个热码:

target class zero 0 -> [1 0] 
target class one 1 -> [0 1] 

总结:为什么我们才算/总结预测类别的负对数可能性。我们为什么不惩罚其他的应该不是那种班级?

如果一个人使用二元交叉熵到一个热点的向量。预计零标签的可能性也将受到惩罚。

回答

1

有关类似问题,请参见my answer。简而言之,二进制交叉熵公式对于单向量向量没有意义。根据任务,可以将两个或多个类别的交叉熵应用于label或使用(独立)概率向量。

但是,为什么我不能或不应该在一个单独的热矢量上使用二叉交叉?

你计算什么是4独立特征二进制交叉熵:

pred = [0.1 0.3 0.2 0.4] 
label = [0 1 0 0] 

模型推断预测,第一特征是在以10%的概率,所述第二特征是,用30%概率等。目标标签以这种方式解释:所有功能都关闭,除了第二个功能。注意,[1, 1, 1, 1]也是完全有效的标签,即它不是一个热点矢量,并且pred=[0.5, 0.8, 0.7, 0.1]是有效的预测,即总和不必等于1。

换句话说,您的计算是有效的,但是对于完全不同的问题:多标签非独占二进制分类。

另请参阅difference between softmax and sigmoid cross-entropy loss functions in tensorflow