オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【深層学習】Sparse Categorical Cross Entropy

この記事の読者

Loss Function のひとつとなる
Sparse Categorical Cross-entropy」について知りたい.



キーワード・知ってると理解がしやすい

  • Loss Function
  • Cross Entropy
  • one-hot
  • Tensorflow

Index

Sparse Categorical Cross Entropy

深層学習で用いられる、誤差関数の一つ.

直訳すると「スパース(疎)」な「カテゴリカル」な「Cross Entropy」となり、Cross Entropy の一種. Tensorflow で使用できる ロス関数の一つ.

Tensorflow での Cross Entropy

Tensorflow (v.2.5時点) で、Cross Entropy を使用するときは、 以下の関数のどれかを使うことになる.

  • tensorflow.nn

    • softmax_cross_entropy_with_logits
    • sigmoid_cross_entropy_with_logits
    • weighted_cross_entropy_with_logits

  • tf.keras.losses

    • CategoricalCrossentropy
    • BinaryCrossentropy
    • SparseCategoricalCrossentropy

Cross Entropy との違い

Tensorflow で通常の Cross Entropy というと、Categorical Crossentropy が使われるが、違いを確認する.

ある分類問題において、3分類を行うとする.

Categorical Cross Entropy

ラベルデータは以下のような one-hot 表現でかくことができる.

y_true = [[0, 1, 0], [0, 0, 1]]

そして、分類器が以下のように推定したとする.

y_pred = [[0.05, 0.95, 0], [0.1, 0.8, 0.1]]

この場合の Loss は以下にのように計算できる.

cce = tf.keras.losses.CategoricalCrossentropy()
cce(y_true, y_pred)

SparseCategoricalCrossentropy

ラベルデータは以下のような 整数ラベルでかくこともできる.

y_true = [1, 2]

そして、このようなラベルでも Cross Entropy を計算することができる.

scce = tf.keras.losses.SparseCategoricalCrossentropy()
scce(y_true, y_pred)

まとめ

  • one-hot 表現でラベルが作成されている場合は CategoricalCrossentropy を利用する
  • 整数でラベルが作成されている場合は、SparseCategoricalCrossentropy を利用する

参考