ホーム » 機械学習 » KLとNLLの関係とか

KLとNLLの関係とか

こんにちは。
本日はカルバックライブラーを噛み砕いてみて行こうと思います。前回エントロピーについての記事を書いたのでそっちを一読してからまたはこっちを読んでからあっちを読めば理解が深まるかと思います。ひとまず、定義を、Qから見たPのKL距離は

    \[ K L(P | Q)=\sum_{x} P(x) \log \frac{P(x)}{Q(x)}\]

対数の部分を分けると

    \[ K L(P | Q)=\sum_{x} P(x) \log{P(x)} -  P(x) \log{Q(x)}\]

初項がシャノンのエントロピー、第二項がクロスエントロピーです。ここで、Q(x)を私たちのパラメータ\thetaを持つモデルの分布、P(x)を真の分布、つまりデータの分布とします。すると、初項は\thetaに依存しません、つまり定数になります。私たちは本当の分布に自分のモデルが似るように学習を行います。つまりKLの最小化が目的になります。次に、x\sim P(x)のデータ数をNとします。すると対数の法則より、(大数の法則はデータ数が多ければ期待値が平均と一致するという定理)

    \[ -E_{x \sim P\left(X\right)}[\log Q(X)] \approx -\frac{1}{N} \sum_{i}^{N} \log P\left(x_{i}) \]

とできます、つまり、P(x)に関する期待値として第二項を置き換えたのち対数の法則により平均に置き換えることができます。そして

    \[\frac{1}{N} NLL =  - \frac{1}{N} \sum_{i}^{N} \log P\left(x_{i}) \]

と書きます。一般的にnegative-log-likelihoodと言います、つまり、KLの最小化はNLLの最小化と同値であることがわかりました。
では、ここで出るであろう疑問として、
  • KL minimization
  • NLL minimization
のどちらも同じなんじゃないのか?どう違うのか?などがあります。計算コストを考えるとNLLを計算すればいいと思うのですがより深く知るには情報理論が密接に関わってくるようです。この話は機械学習を数式の方から読むときに必要となる知識なのであまり身近ではないかもしれません。
では、KLとNLLはこのくらいにしてKLの上位互換のような距離について軽く見てみましょう。振り返ると、KLは厳密な距離ではないのでした。それは距離の定義を満たさないからです、具体的には以下の

    \[ d(x, y)=d(y, x)\]

対称性を満たさないからでした。さらには三角不等式も満たしません。よって、数学の世界ではあまり好ましくないこのKL、どうにか距離として扱えないのか、といういことでひとまず、

    \[ SKL(P, Q) :=KL(P | Q)+K L(Q | P)\]

とします、こうすることで対称性は解決しました。しかし、三角不等式は解決されません、、そこで生み出されたのがBhattacharyya distanceというものです。

    \[ \begin{array}{c}{D_{B}(p, q)=-\ln (B C(p, q))} \end{array}  \begin{array}{c}{B C(p, q)=\sum_{x \in X} \sqrt{p(x) q(x)}}\end{array}\]

しかし、これが実際に使われているところはまだみたことないんですよね。。調べてみました。すると では音素分布間の距離を測るときに使われていました。他にはOpenCVでヒストグラムの似通いを計算する際に使われていました。
では最後にベーシックなKLの計算を確認して終わりましょう。まずは記号についての説明から
  • p(x) = N(\mu_1,\sigma_1)
  • q(x) = N(\mu_2,\sigma_2)

    \[KL(p | q) = \overbrace{- \int p(x)\log q(x) dx}^{A} + \overbrace{\int p(x)\log p(x) dx}^{B}\]

ではBの計算から

    \[B = \int_{-\infty}^\infty \frac{1}{(2\pi\sigma_1^2)^{1/2}}\exp(-\frac{(x-\mu_1)^2}{2\sigma_1^2}) \log \left[  \frac{1}{(2\pi\sigma_1^2)^{1/2}}\exp(-\frac{(x-\mu_1)^2}{2\sigma_1^2}) \right] dx\]


    \[= -\frac{1}{2}\log(2\pi\sigma_1^2)\int_{-\infty}^\infty  \frac{1}{(2\pi\sigma_1^2)^{1/2}}\exp(-\frac{(x-\mu_1)^2}{2\sigma_1^2})dx <div>-\frac{1}{2\sigma_1^2} \int_{-\infty}^\infty \frac{1}{(2\pi\sigma_1^2)^{1/2}}(x-\mu_1)^2\exp(-\frac{(x-\mu_1)^2}{2\sigma_1^2}) dx\]

期待値と分散の定義を用いると

    \[E[x] = \int_{-\infty}^\infty x N(x;\mu,\sigma)dx = \mu\]


    \[E[(x-\mu)^2] &= \int_{-\infty}^\infty (x-\mu)^2 N(x;\mu,\sigma)dx = \sigma^2 }\]

よってBは

    \[B = -\frac{1}{2}\log(2\pi\sigma_1^2) - \frac{1}{2} = -\frac{1}{2}(\log(2\pi\sigma_1^2)+1)\]

では次にAの計算

    \[\int p(x)\log q(x) dx = \int p(x) \log \frac{1}{(2\pi\sigma_2^2)^{1/2}}\exp(-\frac{(x-\mu_2)^2}{2\sigma_2^2})dx\]


    \[= \frac{1}{2}\log (2\pi\sigma_2^2) - \int p(x)\log \exp(-\frac{(x-\mu_2)^2}{2\sigma_2^2})dx\]


    \[= \frac{1}{2}\log (2\pi\sigma_2^2) - \int p(x)\left{-\frac{(x-\mu_2)^2}{2\sigma_2^2} \right} dx\]


    \[= \frac{1}{2}\log (2\pi\sigma_2^2) - \frac{1}{2\sigma_2^2}\left{\int p(x)x^2 dx - \int p(x)2x\mu_2 dx + \int p(x)\mu_2^2 dx \right}\]

ここで次を使うと

    \[Var[x] = E[x^2] - E[x]^2\]

Aは次のようになります

    \[\frac{1}{2}\log (2\pi\sigma_2^2) - \frac{\sigma_1^2 + \mu_1^2 -2\mu_1\mu_2 + \mu_2^2}{2\sigma_2^2}\]

ではAとBをまとめると

    \[KL(p|q) &= \frac{1}{2}\log (2\pi\sigma_2^2) - \frac{\sigma_1^2 + \mu_1^2 -2\mu_1\mu_2 + \mu_2^2}{2\sigma_2^2}  - \frac{1}{2}(\log(2\pi\sigma_1^2)+1)\]


    \[= \log\frac{\sigma_2}{\sigma_1} + \frac{\sigma_1^2 + (\mu_1-\mu_2)^2}{2\sigma_2^2} -\frac{1}{2}\]

これは\mu_1 = \mu_2 かつ \sigma_1 = \sigma_2 の時ゼロになります。 多変数バージョンは希望があればまた書きます。でわ

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です