[ディープラーニング]交差エントロピー誤差とは

AI

ディープラーニングを学習していくと、交差エントロピー誤差というのに出会うと思います。

交差エントロピー誤差って何?ってなって、手が止まった人もいると思います。

今回は、そういう人に向けて交差エントロピー誤差とディープラーニングでの使い方について解説します。

スポンサーリンク

交差エントロピー誤差とは

まず、交差エントロピー誤差とは、何かですがざっくり言えば、出力と正解との差(誤差)を表わす関数です。

交差エントロピー誤差の式は、以下の通りです。

\mathrm{H}(p, q) = -\sum_x p(x)\, \log q(x) \!

数式見ても意味わかんないという方ほとんどだと思うので、簡単に説明します。

まず、機械学習ではone-hot表現(1つだけ1にしそれ以外を0とする)というので、データにラベル付けします。

one-hot表現でラベル付けされた時、0を掛けたら0になるので、1つだけ設定されている1の時だけeを底とする自然対数log(出力値)を出力する式になるのです。

この式が何故誤差を表わすのかは、グラフを見ると分かりやすいです。

y=logx

これは、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に近い値にならないようにしなければならない

のようになります。

少しでも参考になれば幸いです。

コメント

タイトルとURLをコピーしました