1. ホーム
  2. python

[解決済み] sparse_categorical_crossentropyとcategorical_crossentropyの違いは何ですか?

2022-03-01 07:25:27

質問

とはどのような違いがあるのでしょうか? sparse_categorical_crossentropycategorical_crossentropy ? どのような場合に、一方の損失を他方の損失と比較して使用する必要がありますか?例えば、これらの損失は線形回帰に適しているのでしょうか?

どのように解決するのですか?

単純に

  • categorical_crossentropy ( cce ) は、各カテゴリーにマッチする可能性が高いものを含むワンショット配列を生成します。
  • sparse_categorical_crossentropy ( scce のカテゴリインデックスを生成します。 最も可能性が高い にマッチするカテゴリを指定します。

5つのカテゴリ(クラス)がある分類問題を考えてみましょう。

  • の場合 cce の場合、一発逆転のターゲットは [0, 1, 0, 0, 0] を予測し、モデルは [.2, .5, .1, .1, .1] (おそらく正しい)

  • の場合 scce ターゲットインデックスは[1]であり、モデルはそれを予測します。[.5].

ここで、3つのクラスを持つ分類問題を考えてみましょう。

  • の場合 cce であれば、一発逆転のターゲットは [0, 0, 1] で、モデルが予測するのは [.5, .1, .4] (最初のクラスにより多くの確率を与えていることから、おそらく不正確)
  • の場合 scce である場合、ターゲットインデックスは [0] を予測し、モデルは [.5]

多くのカテゴリカルモデルでは scce を出力すると、スペースは節約できますが、多くの情報が失われます(たとえば、2番目の例では、指数2も非常に接近していました)。 cce の出力は、モデルの信頼性を高めるために必要です。

を使う場面はいくつもあります。 scce を含む。

  • クラスが相互に排他的である場合、つまり、他の近い予測に全く関心がない場合。
  • カテゴリ数が多く、予測出力が過大になる場合。