【情報理論】交差エントロピー(クロスエントロピー)とは?分かりやすく解説

スポンサーリンク
【情報理論】交差エントロピー(クロスエントロピー)とは分かりやすく解説ディープラーニング
この記事を読んで分かること
  • 交差エントロピー(クロスエントロピー)とは何か
  • 交差エントロピーの実装例(python)

交差エントロピー(クロスエントロピー)とは?

交差エントロピーとは、

2つの確率分布がどれくらい「離れているか」を表す指標

です。

 

交差エントロピーは、以下のように定義されています。

交差エントロピーの定義

$$ H(p,q) = -\sum _{x}p\left( x\right) \log _{2}q(x) $$

 

\(p(x)\)が真の分布(正解データ)であり、\(q(x)\)がモデルの分布(推論したデータ)です。

交差エントロピーは2つの確率分布\(p(x),q(x)\)が似ているほど小さな値となり、

2つの確率分布が全く同じ時に交差エントロピーは最小となる性質があります。

 

情報理論では対数の底には2を採用することが一般的ですが、1より大きな実数であれば他の数値を用いても本質的な影響はありません。

 

交差エントロピーの具体例

一般式だけでなく、具体例もみてみましょう。

次のようなデータを例に、交差エントロピーを計算してみます。

$$p=\left[ 1,  0,  0\right]$$

$$q=\left[ 0.7,  0.1,  0.2\right]$$

定義式に代入すると、

$$E=-1 * \log 0.7=0.35$$

となります。

 

交差エントロピーは、分類問題を解くための損失関数としてよく用いられます。

分類問題はone-hotエンコーディングされていることが一般的なので、実質的に正解ラベルの確信度の対数を計算するだけになります。

 

交差エントロピーをpythonで実装

交差エントロピーをpythonのコードで実装すると以下のようになります。

def cross_entropy_error(y, t):
    delta = 1e-7
    return -np.sum(t * np.log(y + delta))

y = [0.7, 0.1, 0.2]
t = [1, 0, 0]

cross_entropy_error(np.array(y), np.array(t))

 

まとめ

交差エントロピーとは、2つの確率分布がどれくらい「離れているか」を表す指標です。

交差エントロピーは、分類問題を解くための損失関数としてよく用いられます。

 

参考文献

コメント

  1. kent t より:

    >2つの確率分布が全く同じ時には、交差エントロピーは0となります。

    確率分布が同じときは交差エントロピーp(x)*log2q(x)=真の平均情報量p(x)*log2p(x)となるだけではないでしょうか。(KLダイバージェンスが0になるの間違いでは、、)

    • シャイニングシャイニング より:

      おっしゃる通りです。

      確率分布が同じときは最小値をとるだけでした。
      間違い部分は修正しておきました。

      教えていただき、ありがとうございました。

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