1. Qiita
  2. 投稿
  3. 機械学習

カーネルとは直感的に説明するとなんなのか?

  • 74
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

How to intuitively explain what a kernel is?に対する回答がわかりやすかったので和訳


まずは質問の意図から。
質問者は、「カーネルとは直感的に説明するとなんなのか?」を聞いています。それに対する回答のひとつが、上記のリンク先です。

和訳

カーネルとはふたつのベクトル $\boldsymbol{x}$ と $\boldsymbol{y}$ の内積を(たいていはとても高次元の)特徴空間で計算する方法であり、これがカーネル関数が時々「一般化内積」と呼ばれる理由です。

$\mathbb{R}^n$ 上にあるベクトルをなんらかの特徴空間 $\mathbb{R}^m$ へ写す写像 $\varphi:\mathbb{R}^n \rightarrow \mathbb{R}^m$ があるとします。すると、その空間での $\boldsymbol{x}$ と $\boldsymbol{y}$ の内積は $\varphi(\boldsymbol{x})^\top\varphi(\boldsymbol{y})$ です。カーネルとはこの内積に対応する関数 $k$ で、つまり $k(\boldsymbol{x}, \boldsymbol{y}) = \varphi(\boldsymbol{x})^\top\varphi(\boldsymbol{y})$ です。

どうしてこれが便利なのか?カーネルは、特徴空間が何なのか、そして $\varphi$ が何なのかを知ることなしに、その特徴空間上で内積を計算する方法を提供します。

例えば、$\boldsymbol{x}, \boldsymbol{y}\in\mathbb{R}^2$ について、単純な多項式カーネル $k(\boldsymbol{x}, \boldsymbol{y}) = (1 + \boldsymbol{x}^\top \boldsymbol{y})^2$ を考えます。これはどんな写像 $\varphi$ にも対応しているようには見えず、単に実数を返す関数です。
$\boldsymbol{x} = (x_1, x_2), \boldsymbol{y} = (y_1, y_2)$ とおいて、上の式を展開してみます:
$$
\begin{align*}
k(\boldsymbol{x}, \boldsymbol{y}) &= (1+\boldsymbol{x}^\top\boldsymbol{y})^2 \\
&= (1+x_1 y_1 +x_2 y_2 )^2 \\
&= 1+x_1^2 y_1^2 +x_2^2 y_2^2 +2x_1 y_1 +2x_2 y_2 +2x_1 x_2 y_1 y_2
\end{align*}
$$
これは次のふたつのベクトルの内積以外の何者でもないことに注意してください:
$(1, x_{1}^2, x_{2}^2, \sqrt{2}x_{1}, \sqrt{2}x_{2}, \sqrt{2}x_{1}x_{2})$ と
$(1, y_1^2, y_2^2, \sqrt{2}y_1, \sqrt{2}y_2, \sqrt{2}y_1y_2)$、そしてこのとき、
$\varphi(\boldsymbol{x}) = \varphi(x_1, x_2) = (1, x_1^2, x_2^2, \sqrt{2}x_1, \sqrt{2}x_2, \sqrt{2}x_1x_2)$ です。
だから、カーネル $k(\boldsymbol{x}, \boldsymbol{y}) = (1+\boldsymbol{x}^\top\boldsymbol{y})^2 = \varphi(\boldsymbol{x})^\top\varphi(\boldsymbol{y})$ は、6次元空間での内積を計算していることになります。明示的にその空間を訪れずに。

もうひとつの例はガウシアンカーネル $k(\boldsymbol{x}, \boldsymbol{y}) = \exp(-\gamma||\boldsymbol{x}-\boldsymbol{y}||^2)$ です。この関数をテイラー展開すると、これが無限次元への写像 $\varphi$ に対応することがわかるでしょう。

最後に、カーネルに基づいた手法のよい導入として、Yaser Abu-Mostafa教授のオンライン講義"Learing from Data"をおすすめします。特に、"Support Vector Machines", "Kernel Methods", "Radial Basis Functions"がカーネルについてのレクチャーとなっています。

Comments Loading...