交差エントロピー(クロスエントロピー)とは?
交差エントロピーとは、
です。
交差エントロピーは、以下のように定義されています。
\(p(x)\)が真の分布(正解データ)であり、\(q(x)\)がモデルの分布(推論したデータ)です。
交差エントロピーは2つの確率分布\(p(x),q(x)\)が似ているほど小さな値となり、
2つの確率分布が全く同じ時に交差エントロピーは最小となる性質があります。
交差エントロピーの具体例
一般式だけでなく、具体例もみてみましょう。
次のようなデータを例に、交差エントロピーを計算してみます。
$$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つの確率分布がどれくらい「離れているか」を表す指標です。
交差エントロピーは、分類問題を解くための損失関数としてよく用いられます。
コメント
>2つの確率分布が全く同じ時には、交差エントロピーは0となります。
確率分布が同じときは交差エントロピーp(x)*log2q(x)=真の平均情報量p(x)*log2p(x)となるだけではないでしょうか。(KLダイバージェンスが0になるの間違いでは、、)
おっしゃる通りです。
確率分布が同じときは最小値をとるだけでした。
間違い部分は修正しておきました。
教えていただき、ありがとうございました。