雑記(2)

前回の情報エントロピーの計算は、 記号  i が文字として単語に使われる確率  p_{i} ( \sum_{i = 1}^{k}p_{i} = 1 ) を使って、記号  i が、  N_i = Np_{i} 回使われる確率

  \prod_{i=1}^{k} (p_i)^{N_i}

を求め、この逆数をとった対数を求めることと同じである。

  - \sum_{i = 1}^{k} N_i\log { p_i} =  - N\sum_{i = 1}^{k} p_i\log { p_i}

最後に文字数  N で割り、対数の底を 2 に変えたものが情報エントロピー (平均情報量)  H であるのも同じである。

ところで、機械学習でも何でも良いが、いまなにか予測モデルを作って、記号  i が文字として単語に使われる確率が  q_{i} ( \sum_{i = 1}^{k}q_{i} = 1 ) になったとしよう。実際にテストしてみると、記号  i N_i = Np_{i} 回出現したので、モデルから予測できる確率は、

  \prod_{i=1}^{k} (q_i)^{N_i}

である。これの逆数をとって、対数を求めると、

  - \sum_{i = 1}^{k} N_i\log { q_i} =  - N\sum_{i = 1}^{k} p_i\log {q_i}

という風になる。そうすると、

  - N\sum_{i = 1}^{k} p_i\log {q_i} + N\sum_{i = 1}^{k} p_i\log {p_i} \\
= N \sum_{i = 1}^{k} p_i\log {\frac{p_i}{q_i}}

は、予測の精度を評価するのに使えそうである。これを  N で割り、対数の底を 2 に変えたものを「相対エントロピー」と呼ぶことになっている。

  B(p, q) = \sum_{i = 1}^{k} p_i\log_{2} {\frac{p_i}{q_i}}

まず、モデルから求めた確率が、真の確率と一致すれば   B(p, p) = 0 となるのはあたり前である。いま、  q_i= p_i + \epsilon_i とすると、確率の総和は 1 なので、当然、  \sum_{i=1}^{k}\epsilon_i = 0 でないといけない。

  p_i (\log{p_i} - \log{(p_i + \epsilon_i)}) \approx - \epsilon_i +\frac{1}{2} p_i( \frac {\epsilon_i}{p_i})^2

から、

  B(p, q) \approx  \frac{1}{2\log_{2}{e}}\sum_{i = 1}^{k} p_i( \frac {\epsilon_i}{p_i})^2

実際には、  p_i は真の確率で、観測者からは不明なので、

  B(p, q) \approx  \frac{1}{2\log_{2}{e}}\sum_{i = 1}^{k} q_i( \frac {\epsilon_i}{q_i})^2

として、モデルの誤差を評価するのだろう。なお、  B(p, q)は、常に0 以上となる。

注: 常に 0 以上になることを示すには、

 \sum_{i = 1}^{k} p_i(\log{p_i} - \log {q_i}) \geq \sum_{i = 1}^{k} (p_i - q_i) = 0

が言えれば良い。それには、 f(s)= \log{s}  - 1  + s^{-1} \geq 0  s > 0 で成立することを示せばよい。 \frac{df(s)}{ds}= (s -1)/s^2 である。//


モデルの誤差を最小化するには、  B(p, q)を最小化して ゼロに近づけることである。ところが、

  B(p, q) = \sum_{i = 1}^{k} p_i(\log_{2} {p_i} - \log_{2} {q_i})

ということは、最初の項は真の確率で不変なので、  B(p, q)を最小化するということは、2番目の項を最大化することと同じである。最小二乗法などの統計に「対数尤度」というモデルの「尤もらしさ」を示す尺度が出てくるが、これはその意味だと思われる。