ニューラルネットワークのライブラリ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人でも多くの人々がディープラーニングを利用できるよう実践解説します。
コメント