keisukeのブログ

***乱雑です!自分用のメモです!*** 統計や機械学習の勉強と、読み物を書く練習と、備忘録用のブログ

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

2015-06-01追記:はてなの TeX のレンダリングに難があるため Qiita に移行しました
追記ここまで


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 について、単純な多項式カーネル [tex: 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) とおいて、上の式を展開してみます: [tex:{ \displaystyle k(\boldsymbol{x}, \boldsymbol{y}) = (1+\boldsymbol{x}^\top\boldsymbol{y})2 = (1+x_1 y_1 +x_2 y_2 )2 = 1+x_12 y_12 +x_22 y_22 +2x_1 y_1 +2x_2 y_2 +2x_1 x_2 y_1 y_2 }] これは次のふたつのベクトルの内積以外の何者でもないことに注意してください: [tex: (1, x{1}^2, x{2}^2, \sqrt(2)x{1}, \sqrt(2)x{2}, \sqrt(2)x{1}x{2}] と [tex: (1, y_12, y_22, \sqrt(2)y_1, \sqrt(2)y_2, \sqrt(2)y_1y_2] 、そして [tex: \varphi(\boldsymbol{x}) = \varphi(x_1, x_2) = (1, x_12, x_22, \sqrt(2)x_1, \sqrt(2)x_2, \sqrt(2)x_1x_2) 。だから、カーネル [tex: 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"カーネルについてのレクチャーとなっています。