交差エントロピーについて

# はじめに

機械学習の損失関数として使用される交差エントロピーについて、情報理論の簡単な背景からまとめる。自分が期待値の計算について勘違いしていた部分を始めにまとめた後に、情報量〜交差エントロピーまでをまとめる。

## 期待値

ある関数 $f(x)$ の確率分布 $P(x)$ での平均値を期待値と呼び、離散確率変数に対しては
$$
E_{x\sim p(x)}[f(x)] = \sum_x p(x)f(x)
$$
で与えられる。確率変数が明確である場合、単純に $E[f(x)]$ とも記述する。

### 自分が勘違いしていたこと

自分は $\sum_x$ の $x$ での総和を、「取得したデータ全体での総和」と勘違いしていた。期待値の定義をちゃんと理解していなくて（期待値が平均値で近似できる話とごっちゃになっていた）、期待値の定義に帰って考えて $x$ の取りうる値全体での総和（データは関係ない）であったことを思い出すこと。


# 情報量

情報理論（information theor）は応用数学の分野の学問であり、もともとはノイズが載っているような環境で行う通信（ex. 無線通信）において情報について議論するために発展してきたもの。

基本的な考えは、珍しい事象（発生確率が小さい事象）を観測したときには得る情報（情報量）が大きいというものである（例として、"the sun rose this morning"という情報はありきたりであるため情報量は無いが、"there was a solar eclipse this morning" はめったに起こらない事象についての情報であるため情報量が大きい。）。つまり情報量とは $x$ を得た際の「驚きの度合い（surprise）」として表すことができ、起こる確率が低い場合ほど多くの情報量を得たと言える。

## 情報を数値化する

情報量について次のような性質を要求することとする：

- 小さい確率の事象が起きた：驚きの度合いが大きい、情報量「大」
- よく起きる事象が起きた：驚きの度合いが小さい、情報量「小」
- 独立している事象が持つ情報量は加法的である

これらを満たすように、離散確率変数 $x$ に対しての「情報量」を定義する。事象が起きる確率を $p(x)$ とした場合情報量は
$$
h(x) = -\log p(x) = \log \frac{1}{p(x)}
$$
で定義される。

## なぜ対数か

独立している事象がそれぞれ $p(x), q(x)$ で発生するとき、同時確率は $p(x)q(x)$ である。このときの情報量は
$$
-\log p(x)q(x) = -\log p(x) - \log q(x)
$$
と加法性を満たしている。対数の性質を使うことでうまく情報量の加法性が担保できている。

# エントロピー

情報量は単一の事象を扱うものであった。確率分布全体の情報を扱うものとして、エントロピー（シャノンエントロピー、平均情報量、シャノン情報量）を
$$
H(x) = E_{x\sim p(x)}[-\log p(X)] = - \sum_x p(x)\log p(x)
$$
で定義する。


## ex. コイン投げ

ベルヌーイ試行であるコイン投げに関するエントロピーを計算してみる。コインを投げて表 $x=1$ が出る確率を $p(x)=p$ とすると、裏 $x=0$ が出る確率を $p(x) = 1-p$ になる。ゆえにエントロピーは
$$
H(X) = - \sum_x p(x)\log p(x) = -p\log p - (1-p)\log (1-p)
$$
である。ベルヌーイ試行の成功確率（=コインの表が出る確率）を変数として、エントロピーの値をプロットしてみたものが次図になる。

![20221017-164603.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137120/65c13c3b-96fe-2f9f-a6e1-bdc5d760aff9.png)

横軸が確率 $p$、縦軸がエントロピーの値である。$p=0$ や $p=1$ 付近ではエントロピーが小さくなっていることが分かる。これは$p=0$（表は絶対に出ない）といった deterministic（決定論的？）な事象に対しては「驚き」がないためエントロピーが小さいと解釈することができる。その逆で、$p=0.5$では何が起きるかわからないため、エントロピーとしては大きな値を持っていることが分かる。

# カルバック-ライブラーダイバージェンス

ある未知の分布 $p(x)$ を近似的に $q(x)$ でモデル化するような場合を考える。同一の確率変数 $X$ に対して二種類の確率分布を考え、これらの確率分布がどれくらい近しいのかを測る量として
$$
D_{KL}(P||Q) = E_{x\sim p(x)} \left[ \log\frac{p(x)}{q(x)}\right] 
$$
の Kullback-Leibler（KL）divergence を考える。


## イェンセンの不等式

KLダイバージェンスの特徴の１つとして、非負の値であるということがある。これを示すためには色々と計算する必要がある（らしい）が、ちゃんと証明することができる。

イェンセンの不等式をKLダイバージェンスに適用し、$-\ln x$ が凸関数であること、規格化条件を用いると、
$$
D_{KL}(P||Q) \geq 0
$$
が示せ、等号はすべての $x$ について $p(x)=q(x)$ のときに限り成り立つ。そのため、KLダイバージェンスを２つの分布 $p(x)$ と $q(x)$ の間の隔たりを表す尺度として用いることができる。

## 性質

KLダイバージェンスは非負の値を持っていて、$p(x)=q(x)$のときにのみ $0$ となる。そのため $D_{KL}=0$ であれば未知の分布とモデル化した分布が等しい、という解釈ができる（モデルが正しい、といえる）。そのため、KLダイバージェンスは最小化したい量である。 

# 交差エントロピー

KLダイバージェンスに近い概念として、交差エントロピー（cross-entropy）があり
$$
H(p,q) = E_{x\sim p(x)} \left[- \log q(x)\right] = - \sum_x p(x)\log q(x)
$$
で与えられる。
KLダイバージェンスとは
$$
H(p,q) = E_{x\sim p(x)} \left[- \log q(x)\right] \\
= E_{x\sim p(x)}[-\log p(x)] + E_{x\sim p(x)}[\log p(x) - \log q(x)] \\
= H(p) + D_{KL}(p||q) 
$$
という関係性を持っている。$H(p)$ は $p$ のエントロピーである。つまり、交差エントロピーはKLダイバージェンスの $q(x)$ に関する部分だけを抜き出してきた量であると言える。
そのため交差エントロピーを $q(x)$について最小化することは、KLダイバージェンスを最小化することに等しい。

## 損失関数として

分類タスクで使用する損失関数として、binary cross-entropy、cross entropy があり、以上で導入した関数を使用している。関数の形はどちらも同じで（機械学習の分野でよく使用される文字に置き換えた）
$$
L = - \sum_i t_i \log y_i
$$
であり、ここで $t_i$ は正解ラベル（教師データ）、$y_i$ は予測値である。

### Binary Cross Entorpy

二値分類の場合は、成功確率が $t$ の場合、失敗確率が $1-t$ と表されるので
$$
L = - \sum_i t_i \log y_i = - t \log y - (1-t) \log (1-y)
$$
と書き直すことができる（あくまでも和は確率変数の取りうる値について取っている）。

### Cross Entorpy

多値分類の場合はそれぞれの生起確率が $t_i$ で表されるため、二値分類と違って
$$
L = - \sum_i t_i \log y_i
$$
の表式より簡単になることはない。

例えば３クラス分類の場合として、正解ラベルが one-hot ベクトルの形で $[1,0,0]$ として与えられ、予測値が $[0.1, 0.3, 0.6]$ といった状況を想定する（予測値は softmax 関数で確率に変換されているものとする）。この場合の cross-entropy の値は
$$
L = - \sum_i t_i \log y_i = -t_1\log y_1 - t_2 \log y_2 - t_3\log y_3
$$
にそれぞれの値を当てはめればよい。

## 確率的勾配降下法

交差エントロピーを損失関数として用いて、かつ確率的勾配降下法を用いて学習を進める場合に、データ数での総和が登場する。以上の表式の $\sum_x$ はあくまでも確率変数の取りうる値についてであることに留意しておく。

# Reference

- Deep Learning, Chapter3, Probability and Information Theory
- パターン認識と機械学習（上）, Sec1.6 情報理論