機械学習に詳しくなりたいブログ

機械学習や数学について勉強した内容を中心に書きます。100%趣味です。記事は数学的に厳密でなかったり誤りを含んでいるかもしれません。ご指摘頂ければ幸いです。

ガウスカーネル

概要

カーネル法で書いたとおり、カーネル関数は特徴ベクトルの内積


k(\mathbf{x},\mathbf{x}^{\prime}) = \phi(\mathbf{x})^{T} \phi(\mathbf{x}^{\prime})  \tag{1}

として定義されます。

よく使われるカーネル関数として以下のガウスカーネルがあります。


\displaystyle k(\mathbf{x},\mathbf{x}^{\prime}) = \exp \left( \frac{-\| \mathbf{x} - \mathbf{x}^{\prime} \|^{2}}{2\sigma^{2}} \right)  \tag{2}

今回はガウスカーネルがカーネル関数の定義を満たしており、かつ無限次元の特徴ベクトルで表されることを確認します。

カーネル関数であることの確認

ガウスカーネルの\expの中の分子を展開します。ベクトルのノルムの式(5)や転置行列の定理の式(4)、(5)より、


\begin{eqnarray*}
\| \mathbf{x} - \mathbf{x}^{\prime} \|^{2} &=& (\mathbf{x} - \mathbf{x}^{\prime})^{T} (\mathbf{x} - \mathbf{x}^{\prime}) \tag{3}\\
&=&  (\mathbf{x}^{T} - (\mathbf{x}^{\prime})^{T}) (\mathbf{x} - \mathbf{x}^{\prime}) \tag{4} \\
&=& \mathbf{x}^{T}\mathbf{x}  -\mathbf{x}^{T}\mathbf{x}^{\prime} - (\mathbf{x}^{\prime})^{T} \mathbf{x}  + (\mathbf{x}^{\prime})^{T} \mathbf{x}^{\prime} \tag{5} \\
&=& \mathbf{x}^{T}\mathbf{x}  -2\mathbf{x}^{T}\mathbf{x}^{\prime}   + (\mathbf{x}^{\prime})^{T} \mathbf{x}^{\prime} \tag{6} 
\end{eqnarray*}

と展開できます。これを式(2)に代入すれば、


\begin{eqnarray*}
\displaystyle \exp \left( \frac{-\| \mathbf{x} - \mathbf{x}^{\prime} \|^{2}}{2\sigma^{2}} \right) &=& \exp\left( -\frac{ \mathbf{x}^{T}\mathbf{x}  -2\mathbf{x}^{T}\mathbf{x}^{\prime}   + (\mathbf{x}^{\prime})^{T} \mathbf{x}^{\prime}}{2\sigma^{2}} \right)  \tag{7}\\
&=& \exp \left( \frac{-\mathbf{x}^{T}\mathbf{x}}{2\sigma^{2}} \right) \exp \left( \frac{\mathbf{x}^{T}\mathbf{x}^{\prime}}{\sigma^{2}} \right) \exp \left( \frac{-(\mathbf{x}^{\prime})^{T} \mathbf{x}^{\prime}}{2\sigma^{2}} \right) \tag{8}
\end{eqnarray*}

となります。

k_1(\mathbf{x},\mathbf{x}^{\prime}) がカーネル関数ならば、\exp(k_1(\mathbf{x},\mathbf{x}^{\prime}))f(\mathbf{x}) k_1(\mathbf{x},\mathbf{x}^{\prime}) f(\mathbf{x}^{\prime})もまたカーネル関数であるという性質*1を使えば、\mathbf{x}^{T}\mathbf{x}^{\prime}は内積そのものでカーネル関数ですから、式(8)はカーネル関数であることがわかります。以上より、ガウスカーネルはカーネル関数であることが確認できました。

無限次元の特徴ベクトルで表されることの確認とカーネルトリック

e^{x}をマクローリン展開すると、


\begin{eqnarray*}
\displaystyle f(x) = e^{x} &=& \sum_{n=0}^{\infty} \frac{f^{(n)}(0) }{n!}x^{n} \tag{9}\\
&=& \sum_{n=0}^{\infty}  \frac{x^{n}}{n!} \tag{10}
\end{eqnarray*}

ですから、


\displaystyle \exp \left( \frac{\mathbf{x}^{T}\mathbf{x}^{\prime}}{\sigma^{2}} \right) = \sum_{n=0}^{\infty} \frac{1}{n!} \left( \frac{\mathbf{x}^{T}\mathbf{x}^{\prime}}{\sigma^{2}} \right)^{n} \tag{11}

となり、ガウスカーネルは無限次元の特徴ベクトルを持つことがわかります。でも無限次元の特徴ベクトルの内積を直接計算することなく、式(2)のガウスカーネルの計算をするだけで無限の特徴ベクトルを扱ったのと同義になります。うまいことできてますね。これはカーネルトリックと呼ばれるテクニックのようです。

*1:特に説明を書いていませんが、ここでは既知のものとして扱います。その他、様々な性質があるようです