gpt4 book ai didi

machine-learning - 二元交叉熵惩罚 one-hot 向量的所有分量

转载 作者:行者123 更新时间:2023-11-30 08:28:56 32 4
gpt4 key购买 nike

我知道,在两个类别的情况下,二元交叉熵与分类交叉熵相同。

此外,我很清楚什么是softmax。
因此,我发现分类交叉熵只是惩罚了应该为 1 的一个分量(概率)。

但是为什么我不能或不应该在 one-hot 向量上使用二元交叉熵?

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

我发现在二进制交叉熵中,是一个目标类,并且对应于以下one-hot编码:

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

总结:为什么我们只计算/总结预测类别的负对数似然。为什么我们不惩罚其他应该为零/不是那个类的类?

万一对 one-hot 向量使用二元交叉熵。预期零标签的概率也会受到惩罚。

最佳答案

参见my answer关于类似的问题。简而言之,二元交叉熵公式对于 one-hot 向量没有意义。可以对两个或多个类应用 softmax 交叉熵,也可以在标签中使用(独立)概率向量,具体取决于任务。

But why, can't or shouldn't I use binary crossentropy on a one-hot vector?

您计算的是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 .

关于machine-learning - 二元交叉熵惩罚 one-hot 向量的所有分量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44138324/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com