この記事の読者
Loss Function のひとつとなる
「Sparse Categorical Cross-entropy」について知りたい.
「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 表現でかくことができる.
- One-Hot Encoding
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 を利用する