カーネル法?KL divergence?

  • メモ的なRmdファイル
---
title: "カーネル法?KL divergence?"
author: "ryamada"
date: "2018年1月17日"
output: 
  html_document:
    toc: true
    toc_depth: 6
    number_section: true
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

# 分布の違いを定量する

分布の違いを定量する方法として、カルバック-ライブラー ダイバージェンス(KLd)が知られている。

また、カーネル法に基づく定量法も知られている。

これらの関係を考えてみることにする。

# KLd と JSd

確率変数 $X,Y$ が台 $\Omega$に定められており、その確率密度関数が$P_X,P_Y$であるとする。

このとき、
$$
KLd(X|Y) = \int_\Omega \log{\frac{P_X}{P_Y}} d P_X
$$
## 対称性・非対称性

KLdは非対称である。
KLdを基礎として対称化したものにJSdがある。

$$
JSd(X,Y) = JSd(Y,X) = \frac{1}{2}(KLd(X|Y)+KLd(Y|X)) = \frac{1}{2} (\int_\Omega \log{\frac{P_X}{P_Y}} d P_X + \int_\Omega \log{\frac{P_Y}{P_X}} d P_Y)
$$
整理して書き直すと

$$
JSd(X,Y) = \frac{1}{2} \int_\Omega (\log{P_X}-\log{P_Y}) d(P_X - P_Y) = \frac{1}{2} \int_\Omega (\log{P_X}-\log{P_Y}) (P_X - P_Y) dw
$$
# カーネル平均に基づく定量

$X$$Y$とからのランダム標本が$Z_X,Z_Y$とが得られているときに

$$
<f_X,f_Y>_H = \frac{1}{|Z_X||Z_Y|}\sum_{u \in Z_X}^{|Z_X|} \sum_{v \in Z_Y}^{|Z_Y|} K(u,v)
$$
を持って、$X$$Y$との違いの定量値とすることもある。

これは、$X,Y$をカーネル$K(u,v)$が定めるReproducing Kernel Hilbert Space関数($f_X=E[K(.,X)],f_Y=E[K(.,Y]$)に対応付け、その2つの関数のヒルベルト空間($H$)での内積である。

ただし、$K(u,v)$はカーネル関数であって、$K(u,v)=K(v,u)$であり、正定値性を持つなど、制約はあるが、おおざっぱに言うと「近ければ大きく、遠ければ小さい値を返す対称性関数」のことと思っておけばよい。

良く用いられるものにガウシアン・カーネルがあり、
$$
K(u,v) = e^{-\gamma |u-v|^2}; \gamma > 0
$$
と表される。

## 分布関数既知の場合

上記は、標本から定量しているが、分布関数が知られているときには以下のようになる。

$$
<f_X,f_Y>_H = \int_{\Omega_X} \int_{\Omega_Y} K(P_X,P_Y) d P_X d P_Y = \int_{\Omega_X} \int_{\Omega_Y} K(P_X,P_Y) P_X P_Y dw_x dw_y
$$

# JSdとカーネル平均内積との比較

JSdの定義式は分布関数が知られているものとして定義されているので、両者を比較するには、以下の2式を比較することが適切である。

$$
JSd(X,Y) =  \frac{1}{2} \int_\Omega (\log{P_X}-\log{P_Y}) (P_X - P_Y) dw
$$

$$
<f_X,f_Y>_H = \int_{\Omega_X} \int_{\Omega_Y} K(P_X,P_Y) P_X P_Y dw_x dw_y
$$

両者の大きな違いは、JSdが1重積分、カーネル平均内積が2重積分であることである。

## 2重積分を1重積分にする

カーネルが
$$
K'(x,y) = 0; if x \ne y
$$
であるときには、$X,Y$に関する2重積分は1重積分となる。

$$
<f_X,f_Y>_H = \int_{\Omega_X} K'(P_X,P_Y) P_X P_Y dw_x
$$

したがって、JSdというのは、カーネル関数が$K'(x,y) = 1 (x=y), K'(x,y)= 0 (x \ne 0)$
であるとき

$(\log{P_X}-\log{P_Y}) (P_X - P_Y)$$\Omega$に関して積分するのがJSdであり、
$P_X P_Y$ を積分するのがカーネル平均内積である、という違いであることがわかる。

# 平滑化・分布推定の道具としてのカーネル関数

ガウシアン・カーネルは、分布推定の用に用いることがある。

ある地点の密度を推定するにあたり、近傍の情報を使う方法に相当する。

$\gamma$が小さければ小さいほど、より広い範囲の情報を使うことに相当し、$\gamma$が大きければ大きいほど狭い範囲の情報のみを使うことに相当する。

また、有限個の標本情報に基づいて分布推定する場合には、$\gamma$が小さければ小さいほど、推定分布はなめらかになり、大きければ大きいほど推定分布は複雑になる。


推定においては、標本数が多ければ多いほど、$\gamma$を大きくすることが適切になる。

逆に言うと、KLd, JSdの場合には、分布関数が既知であるときに定義されているが、標本が得られているときには、その標本にカーネルを適用するなどして、分布を推定し、その推定分布についてKLd,JSdを計算するという手順を踏むことになる点で、KLd,JSdもカーネルと無縁ではない。