59
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

カーネル関数

パラメトリックな線形モデルの多くは同値の双対表現の形に表すことができます。予測も訓練データ点を中心として定義される カーネル関数 (kernel function) の線形結合を用いて行われます。

あらかじめ定義された非線型の 特徴空間 (feature space) への写像 Φ(x) に基づくモデルにおけるカーネル関数は次の関係になります。

k(x, x') = \phi(x)^T \phi(x')

以前のサポートベクトルマシンの話ではグリッドサーチで最適なカーネル関数を導出しました。カーネル関数には多くの種類があります。このうち引数の差のみに注目したのは 不変カーネル (stationary kernel) と言われます。これに対し 2 つのベクトルの距離にのみ依存するのは 均一カーネル (homogeneous kernel) と言われます。

カーネル関数の制約
* 共分散行列が正定値である
* グラム行列が半正定値である
(シグモイドカーネルについては例外的です)

ガウシアンカーネル

ガウスカーネルに対応する特徴ベクトルは無限次元であり、カーネル置換を用いることで変換できます。

k(x, x') = \exp(-\frac {||x - x'||^2} {2\sigma^2} )

元の空間上で孤立した点は、カーネル特徴空間上では原点付近に分布します。

生成モデルとフィッシャーカーネル

確率的生成モデルからカーネル関数を構成する方法があり、生成モデルを分類に用いることができるようになります。これに対し識別モデルでは分類問題において性能が優れることが知られています。生成モデルでカーネルを定義、このカーネルを用いて識別アプローチを取るといった方法は、これら 2 つのアプローチを組み合わせる方法のひとつです。

パラメータベクトル θ を持つパラメトリックな生成モデル p(x|θ) において、生成モデルから 2 つの入力ベクトル x と x' の間の類似度を測るカーネルを見つける方法があります。

k(x, x') = g(\theta, x)^TF^{-1}g(\theta,x')

ここで F はフィッシャー情報量行列です。

実際の利用においてはフィッシャースコアの共分散行列を利用し、不変ではなくなるもののより簡単に次のように定義します。

k(x, x') = g(\theta, x)^Tg(\theta,x')

シグモイドカーネル

シグモイドカーネルグラム行列は必ずしも半正定値にはなりません。しかしこのカーネル関数を利用したサポートベクトルマシンはニューラルネットワークと表層的に類似したものになります。

k(x, x') = \tanh(ax^Tx' + b)

なお、基底関数が無限にある場合、適当な事前分布を持つベイズニューラルネットワークはガウス過程に一致すると言われています。

まとめ

カーネル関数についてざっくりと説明しました。
次回は RBF ネットワークとガウス過程を取り上げたいと思います。

参考

パターン認識と機械学習 下 (ベイズ理論による統計的予測)
http://www.amazon.co.jp/dp/4621061240/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
59
Help us understand the problem. What are the problem?