ディープラーニングを学習していくと、交差エントロピー誤差というのに出会うと思います。
交差エントロピー誤差って何?ってなって、手が止まった人もいると思います。
今回は、そういう人に向けて交差エントロピー誤差とディープラーニングでの使い方について解説します。
交差エントロピー誤差とは
まず、交差エントロピー誤差とは、何かですがざっくり言えば、出力と正解との差(誤差)を表わす関数です。
交差エントロピー誤差の式は、以下の通りです。
数式見ても意味わかんないという方ほとんどだと思うので、簡単に説明します。
まず、機械学習ではone-hot表現(1つだけ1にしそれ以外を0とする)というので、データにラベル付けします。
one-hot表現でラベル付けされた時、0を掛けたら0になるので、1つだけ設定されている1の時だけeを底とする自然対数log(出力値)を出力する式になるのです。
この式が何故誤差を表わすのかは、グラフを見ると分かりやすいです。

これは、y=logxのグラフなのですが、正解の出力xを1とすれば、1に近づけば近づく程yが0に近づきます。
逆に、正解1より小さくなればなるほどyが大きくなっていきます。
ここで、出力yを誤差と考えます。
そうすると、正解1に近づく程誤差が小さくなり、正解と異なるほど誤差が大きくなるということになのです。
つまり、交差エントロピー誤差は、出力と正解からの誤差を表わしているということになります。
使い方
ディープラーニングでの実際の使い方を見ていきます。
Pythonのコードで実装する場合の例は次のようになります。
def entropy(y, t):
#小さい値デルタ
delta = 1e-7
#式
return -np.sum(t * np.log(y + delta))
引数のyが出力値の配列、tがone-hot表現の配列となっています。
後は、上記の式に当てはめればいいだけなのですが、コンピュータでの実装になるとlogの進数が0もしくは0に限りなく近い値で無限大となる可能性があります。
そこで、あらかじめコンピュータで解釈できるレベルの小さい値deltaを足します。
実装では、デルタを足すことだけ気を付けてください。
まとめ
ここでは、交差エントロピー誤差について解説しました。
まとめると、
- 出力値から正解との誤差を表わせる
- 実装では、出力が0、もしくは0に近い値にならないようにしなければならない
のようになります。
少しでも参考になれば幸いです。
コメント