categorical_crossentropyとsparse_categorical_crossentropyの違い【Keras】

Python

ニューラルネットワークのライブラリKerasにはいくつかの損失関数が実装されています。

その中に、categorical_crossentropyとsparse_categorical_crossentropyという名前のよく似たものがあります。
今日のお題は、この2つの関数の違いは何かというお話です。

公式のドキュメント*1には、

sparse_categorical_crossentropy: categorical_crossentropyと同じですが,スパースラベルを取る点で違います。

と書かれているのですが、なんのこっちゃよく分かりません。

そこでKerasの作者の著書PythonとKerasによるディープラーニングを見てみると、

ラベルがone-hot エンコーディングで表現されている場合は、損失関数としてcategorical_crossentropy を使用します。
ラベルが整数の場合は、損失関数としてsparse_categorical_crossentropy を使用します。

要はラベルの形式によってこの2つの損失関数を使い分ければ良いようです。この説明だとすんなりと納得できますね。

本書を読むことで、「ディープラーニングとは何か」「適用可能な問題とは」「その限界はどこにある?」を理解できます。PythonベースのディープラーニングフレームワークKerasの開発者である筆者が、1人でも多くの人々がディープラーニングを利用できるよう実践解説します。

コメント