カーネル法とは

/機械学習

カーネル法

カーネル法とは、データ間の似ている度合いで学習する方法です。サポートベクトルマシンなどの判別分析と組み合わせて利用されます。カーネル法では、線形手法(直線や平面)で分離できない非線形なデータを、高次元の空間(特徴空間)に写像(特徴写像)することで線形分離が可能になります。

深層学習もデータを高次元特徴空間へ写像する方法と見なせますが、両者の違いは、カーネル法では特徴写像を暗黙的に固定して扱うのに対し、深層学習では特徴写像そのものを学習という点です。尚、カーネルという名前は、積分変換の核から来ています。

特徴写像

特徴写像の例として、非線形な回帰分析である以下のような予測関数について、

$$y=ax^2+bx+c$$

以下のような写像 $\phi$ を用いれば、線形な回帰分析の問題として扱うことができます。

$$y=\sum_{i=1}^3w_i\phi_i(x)={\bf w}^t\vec{\phi}(x)  -①$$$${\bf w}=\left(\begin{array}{ccc} a \\ b \\ c \end{array}\right) , \vec{\phi}(x)=\left(\begin{array}{ccc} x^2 \\ x \\ 1 \end{array}\right)$$

これを図で表すと以下のようなイメージになります。元の次元では非線形(2次関数)の判別問題を、高次元の特徴空間に写像することにより線形(平面)の判別問題に置き替えることができます。

収束条件

一般に、$d$ 次元の入力変数を ${\bf x}=(x_1,\cdots,x_d)$ 、${\bf x}_n$ を $n$ 番目の入力変数のセットとして、予測関数①を②のように書き替えます。尚、${\bf w}$ は重みベクトル、$\phi(x)$ は $M$ 次元(特徴空間)の基底関数です。

$$y({\bf x}_n)=\sum_{j=1}^Mw_j\phi_j({\bf x}_n)={\bf w}^t\vec{\phi}({\bf x}_n)  -②$$$${\bf w}=\left(\begin{array}{ccc} w_1 \\ \vdots \\ w_M \end{array}\right) , \vec{\phi}({\bf x}_n)=\left(\begin{array}{ccc} \phi_1({\bf x}_n) \\ \vdots \\ \phi_M({\bf x}_n) \end{array}\right)$$

${\bf w}$ が収束するための条件として、次の二乗和誤差関数 $J$ を考えます。第2項は、過学習を防ぐための正則化項で、$\lambda$ は正則化項の影響度を制御するための正の係数です。ここで、$N$ は入力変数のセットの数、$t_n$ は各目標変数です。

$$J({\bf w})=\frac{1}{2}\sum_{n=1}^N\big({\bf w}^t\vec{\phi}({\bf x}_n)-t_n\big)^2+\frac{\lambda}{2}{\bf w}^t{\bf w}  -③$$

③が停留点を持つ条件は、

$$\frac{\partial J({\bf w})}{\partial{\bf w}}=0$$

であるから、これより ${\bf w}$ を求めると、

$${\bf w}=-\frac{1}{\lambda}\sum_{n=1}^N\big({\bf w}^t\vec{\phi}({\bf x}_n)-t_n\big)\vec{\phi}({\bf x}_n)  -⓸$$

ここで、以下のようなパラメタ $a_n$ を導入すると、

$$\alpha_n\equiv-\frac{1}{\lambda}\big({\bf w}^t\vec{\phi}({\bf x}_n)-t_n\big)$$

⓸と③は以下のように書き替えられます。

$${\bf w}=\sum_{n=1}^N\alpha_n\vec{\phi}({\bf x}_n)={\bf\Phi}^t\vec{\alpha}  -⑤$$$$J(\vec{\alpha})=\frac{1}{2}\vec{\alpha}^t{\bf\Phi}{\bf\Phi}^t{\bf\Phi}{\bf\Phi}^t\vec{\alpha}-\vec{\alpha}^t{\bf\Phi}{\bf\Phi}^t{\bf t}+\frac{1}{2}{\bf t}^t{\bf t}+\frac{\lambda}{2}\vec{\alpha}^t{\bf\Phi}{\bf\Phi}^t\vec{\alpha}  -⑥$$$${\bf\Phi}=\left(\begin{array}{ccc} \vec{\phi}^t({\bf x}_1) \\ \vdots \\ \vec{\phi}^t({\bf x}_N) \end{array}\right)$$$$\vec{\alpha}=\left(\begin{array}{ccc} \alpha_1 \\ \vdots \\ \alpha_N \end{array}\right) , {\bf t}=\left(\begin{array}{ccc} t_1 \\ \vdots \\ t_N \end{array}\right)$$

⑥の導出

③を展開して⑤を代入すると、

$$J({\bf w})=\frac{1}{2}\sum_{n=1}^N\Big({\bf w}^t\vec{\phi}({\bf x}_n)\big({\bf w}^t\vec{\phi}({\bf x}_n)\big)^t-2{\bf w}^t\vec{\phi}({\bf x}_n)t_n+t_n^2\Big)+\frac{\lambda}{2}{\bf w}^t{\bf w}$$$$=\frac{1}{2}\sum_{n=1}^N\Big(({\bf\Phi}^t\vec{\alpha})^t\vec{\phi}({\bf x}_n)\vec{\phi}^t({\bf x}_n){\bf\Phi}^t\vec{\alpha}-2({\bf\Phi}^t\vec{\alpha})^t\vec{\phi}({\bf x}_n)t_n+t_n^2\Big)+\frac{\lambda}{2}({\bf\Phi}^t\vec{\alpha})^t{\bf\Phi}^t\vec{\alpha}$$

ここで和を以下のように置き換えると、

$$\sum_{n=1}^N\vec{\phi}({\bf x}_n)\vec{\phi}^t({\bf x}_n)={\bf\Phi}^t{\bf\Phi}$$$$\sum_{n=1}^N\vec{\phi}({\bf x}_n)t_n={\bf\Phi}^t{\bf t}$$$$\sum_{n=1}^Nt_n^2={\bf t}^t{\bf t}$$

⑥が得られます。

$$J({\bf a})=\frac{1}{2}\vec{\alpha}^t{\bf\Phi}{\bf\Phi}^t{\bf\Phi}{\bf\Phi}^t\vec{\alpha}-\vec{\alpha}^t{\bf\Phi}{\bf\Phi}^t{\bf t}+\frac{1}{2}{\bf t}^t{\bf t}+\frac{\lambda}{2}\vec{\alpha}^t{\bf\Phi}{\bf\Phi}^t\vec{\alpha} \to⑥$$

カーネル関数

カーネル関数は、高次元の特徴空間におけるベクトル(基底関数)の内積として定義されます。カーネル関数により、特徴空間に変換されたデータ間の内積を直接計算し、データ間の類似性を高次元空間で計算することができます。

$$k({\bf x}_n,{\bf x}_m)=\vec{\phi}^t({\bf x}_n)\vec{\phi}({\bf x}_m)=\sum_{j=1}^M\phi_j({\bf x}_n)\phi_j({\bf x}_m)$$

ここで以下のようなグラム行列 ${\bf K}$ を定義すると、

$${\bf K}={\bf\Phi}{\bf\Phi}^t=\left(\begin{array}{ccc} \vec{\phi}^t({\bf x}_1) \\ \vdots \\ \vec{\phi}^t({\bf x}_N) \end{array}\right)\big(\vec{\phi}({\bf x}_1)\,\cdots\,\vec{\phi}({\bf x}_N)\big)$$$$K_{nm}=k({\bf x}_n,{\bf x}_m)$$

これにより⑥は以下のように表わせます。

$$J({\bf a})=\frac{1}{2}\vec{\alpha}^t{\bf K}{\bf K}\vec{\alpha}-\vec{\alpha}^t{\bf K}{\bf t}+\frac{1}{2}{\bf t}^t{\bf t}+\frac{\lambda}{2}\vec{\alpha}^t{\bf K}\vec{\alpha}  -⑦$$

代表的なカーネル

カーネル関数にはいくつかの種類があり、用途やデータに応じて使い分けられます。代表的なカーネル関数は以下になります。

  • 線形カーネル
    普通の線形分類です。$$k({\bf x},{\bf y})={\bf x}\cdot{\bf y}$$
  • 多項式カーネル
    高次の多項式特徴を暗黙に扱えます。$$k({\bf x},{\bf y})=({\bf x}\cdot{\bf y}+c)^r$$例えば、$r=2$ なら以下のような写像(基底関数)が含まれます。$$\vec{\phi}\sim(x_1^2,x_1x_2,x_2^2)$$
  • ガウスカーネル
    実質的に無限次元特徴空間に対応します。$$k({\bf x},{\bf y})=\exp{\Big(-\frac{|{\bf x}-{\bf y}|^2}{2\sigma^2}\Big)}$$

カーネルトリック

カーネルトリックとは、カーネル関数により、複雑な高次元の特徴空間 $\phi(x)$ への写像を直接計算することなく、予測関数を求められることです。通常、データを高次元に写像すると計算量が増大し、処理が困難(次元爆発)になります。

例えば、元のデータの次元が100($d=100$)、10次多項式特徴($c=10$)を明示的に作ると、特徴数は天文学的になります。一方、多項式カーネルであれば、$(x\cdot y+c)^{10}$ だけになり、劇的に計算コストを抑えることが可能になります。

予測関数は、⑤を②に代入することで得られます。

$$y({\bf x}_n)=({\bf\Phi}^t\vec{\alpha})^t\vec{\phi}({\bf x}_n)=\vec{\alpha}^t{\bf\Phi}\vec{\phi}({\bf x}_n)$$

これをグラム行列を使って書くと以下のようになります。

$${\bf y}^t=\vec{\alpha}^t{\bf\Phi}{\bf\Phi}^t=\vec{\alpha}^t{\bf K}  -⑧$$$$\big(y({\bf x}_1)\,\cdots\,y({\bf x}_N)\big)=(\alpha_1\,\cdots\,\alpha_N){\bf K}$$

マーサーの条件

マーサーの条件とは、関数が有効なカーネル(特徴空間の内積)であるための必要十分条件です。有効なカーネルであることと、グラム行列が半正定値(固有値が全部非負)であることは同値になります。

  1. 関数 $k({\bf x},{\bf y})$ が有効なカーネル(特徴空間の内積)である。
    基底関数の内積の性質は、$$\Big|\sum_nc_n\phi({\bf x}_n)\Big|^2\ge0  -⑨$$
  2. グラム行列 ${\bf K}$ が半正定値(固有値が全部非負)である。
    ${\bf K}$ の固有値を $\lambda$ とすると、$$\lambda\ge0  -⑩$$
マーサーの条件の導出

⑨を展開すると、

$$0\le\Big(\sum_nc_n\phi({\bf x}_n)\Big)\cdot\Big(\sum_mc_m\phi({\bf x}_m)\Big)$$$$=\sum_{n,m}c_nc_mk({\bf x},{\bf y})={\bf c}^t{\bf K}{\bf c}$$

ここで ${\bf K}$ の固有値を $\lambda$ 、固有関数を ${\bf v}$ とすると、${\bf K}{\bf v}=\lambda{\bf v}$ であるから、${\bf c}={\bf v}$ と置くと、

$$0\le{\bf v}^t{\bf K}{\bf v}={\bf v}^t\lambda{\bf v}=\lambda|{\bf v}|^2$$

これより、固有値が非負(=⑩)であることが分かります。

 

数学
解析学、代数学、幾何学、統計学、論理学、基礎論、特殊関数、物理数学、情報理論、暗号理論、機械学習、金融理論、ゲーム理論、数値計算
散策路TOP
物理学、数学、力学、電磁気学、連続体力学、相対論、熱・統計力学、量子力学、解析学、代数学、幾何学、統計学、論理学、物性論、プラズマ物理、電子工学、情報・暗号、機械学習、金融・ゲーム理論、IT、FP、宗教・思想

 

タイトルとURLをコピーしました