5

2つのクラスの場合、バイナリクロスエントロピーはカテゴリカルクロスエントロピーと同じであることを理解しています。

さらに、ソフトマックスとは何かは明らかです。
したがって、カテゴリクロスエントロピーは、1 であるべき 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]

要約すると、予測されたクラスの負の対数尤度を計算/要約するのはなぜですか。他の SHOULD-BE-ZERO-/NOT-THAT-CLASS クラスにペナルティを課さないのはなぜですか?

バイナリクロスエントロピーをワンホットベクトルに使用する場合。予想されるゼロ ラベルの確率にもペナルティが課せられます。

4

1 に答える 1

5

同様の質問に対する私の回答を参照してください。つまり、バイナリクロス エントロピー式は、ワンホット ベクトルには意味がありません。タスクに応じて、2 つ以上のクラスにソフトマックスクロスエントロピーを適用するか、 で (独立した) 確率のベクトルを使用することができます。label

しかし、ワンホット ベクトルでバイナリ クロスエントロピーを使用できない、または使用すべきではないのはなぜですか?

計算するのは、 4 つの独立した機能のバイナリ クロス エントロピーです。

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

モデルの推論では、最初の機能が 10% の確率でオンになり、2 番目の機能が 30% の確率でオンになる、というように予測されました。ターゲット ラベルは次のように解釈されます。2 番目の機能を除いて、すべての機能がオフになっています。[1, 1, 1, 1]も完全に有効なラベルであることに注意してください。つまり、これはワンホット ベクトルでpred=[0.5, 0.8, 0.7, 0.1]はなく、有効な予測です。つまり、合計が 1 になる必要はありません。

言い換えれば、あなたの計算は有効ですが、まったく別の問題、つまりマルチラベルの非排他的なバイナリ分類です。

tensorflow のソフトマックスとシグモイド クロスエントロピー損失関数の違いも参照してください。

于 2017-11-13T13:53:51.340 に答える