※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

第六章 カーネル法

  • カーネル法(kernel methods)においては、学習パターンは学習が終了しても破棄されず、予測においても使用される。例えばカーネル密度推定においては、あるテストデータの帰属先クラスを識別するのに全ての学習パターンとその帰属先クラスを参照するが、これをメモリーベース(memory-based)な手法という。学習パターンを学習段階にのみ使用する手法と比較して、カーネル法は一般に学習は速いがテストデータに対する予測は遅いということが言える。多くのパラメトリックな線形モデルは同時に、予測が学習データ点で評価されたカーネル関数kernel functionの線形結合にも依存する双対表現に置き換えることが可能。
  • 固定的な特徴空間上の非線形写像を{\bf \phi}({\bf x})とすると、カーネル関数は特徴空間における内積
   k\left({\bf x},{\bf x}'\right) = {\bf \phi}({\bf x})^{\rm T}{\bf \phi}({\bf x}')
で、対称性k\left({\bf x},{\bf x}'\right) = k\left({\bf x}',{\bf x}\right)を有する。カーネルトリックkernel trickは、入力ベクトルがスカラー積の形式で扱われている場合にそれをカーネルに置き換えることによって、既知のアルゴリズムを拡張する手法。

6.1 双対表現(Dual Representations)

  • 多くの回帰およびクラス判別のための線形モデルはカーネル関数が自然に現れる双対表現に書き換えることが可能であり、このアイディアはSVMで重要。
  • 以下の正則化項付き二乗和誤差関数によってそのパラメータが決定される線形回帰モデルを考える。
   J({\bf w}) = \frac{1}{2}\sum_{n=1}^{N}\left\{{\bf w}^{\rm T}{\bf \phi}({\bf x}_n) - t_n\right\}^2 + \frac{\lambda}{2}{\bf w}^{\rm T}{\bf w} \hspace{2em} \left(\lambda\geq 0\right)
これを最小化する{\bf w}J({\bf w})の傾きを0と等置することで得られ、それは{\bf w}の関数を係数とする{\bf \phi}({\bf x}_n)の線形結合の形式をとる。
   {\bf w} = -\frac{1}{\lambda}\sum_{n=1}^{N}\left\{{\bf w}^{\rm T}{\bf \phi}({\bf x}_n) - t_n\right\}{\bf \phi}({\bf x}_n) = \sum_{n=1}^{N}a_n{\bf \phi}({\bf x}_n) = {\bf \Phi}^{\rm T}{\bf a} \hspace{2em} \left({\bf a} = \left(a_1,...,a_N\right)^{\rm T}, \hspace{1em} a_n = -\frac{1}{\lambda}\left\{{\bf w}^{\rm T}{\bf \phi}({\bf x}_n) - t_n\right\}\right)
ただし{\bf \Phi}はデザイン行列でその第n列は{\bf \phi}({\bf x}_n)^{\rm T}。ここでパラメータベクトル{\bf w}{\bf \Phi}{\bf a}に置き換えると
   J({\bf a}) = \frac{1}{2}{\bf a}^{\rm T}{\bf \Phi}{\bf \Phi}^{\rm T}{\bf \Phi}{\bf \Phi}^{\rm T}{\bf a} - {\bf a}^{\rm T}{\bf \Phi}{\bf \Phi}^{\rm T}{\bf t} + \frac{1}{2}{\bf t}^{\rm T}{\bf t} + \frac{\lambda}{2}{\bf a}^{\rm T}{\bf \Phi}{\bf \Phi}^{\rm T}{\bf a}
ここでグラム行列(gram matrix){\bf K} = {\bf \Phi}{\bf \Phi}^{\rm T}を定義すると、それはその要素が
   K_{nm} = {\bf \phi}({\bf x}_n)^{\rm T}{\bf \phi}({\bf x}_m) = k({\bf x}_n, {\bf x}_m)
すなわち既出のカーネル関数となる対称行列。グラム行列で二乗和誤差関数を書き換えると、
   J({\bf a}) = \frac{1}{2}{\bf a}^{\rm T}{\bf K}{\bf K}{\bf a} - {\bf a}^{\rm T}{\bf K}{\bf t} + \frac{1}{2}{\bf t}^{\rm T}{\bf t} + \frac{\lambda}{2}{\bf a}^{\rm T}{\bf K}{\bf a}
これを{\bf a}について解くと、
   {\bf a} = \left({\bf K} + \lambda{\bf I}_N\right)^{-1}{\bf t}
この結果を用いて新たな入力{\bf x}に対する予測を書き換えると、
   y({\bf x}) = {\bf w}^{\rm T}{\bf \phi}({\bf x}) = {\bf a}^{\rm T}{\bf \Phi}{\bf \phi}({\bf x}) = {\bf k}({\bf x})^{\rm T}\left({\bf K} + \lambda{\bf I}_N\right)^{-1}{\bf t} \hspace{2em} \left({\bf k}({\bf x}) = \left(k\left({\bf x}_1,{\bf x}\right), ... ,k\left({\bf x}_n,{\bf x}\right)\right)^{\rm T}\right)
となり、双対表現によって最小二乗問題の解がカーネル関数k\left({\bf x},{\bf x}'\right)のみによって表され、新たな入力に対する予測が学習パターンの目標変数の線形結合となっていることが分かる。
  • 双対表現においてパラメータベクトル{\bf a}を求めるにはN \times N行列の逆行列を求める必要があり、一方、{\bf w}を決定するにはM \times Mの逆行列を求める必要がある。一般にNMより大きいから、双対表現によることは無駄のように見えるが、双対表現の利点は特徴空間上のベクトル{\bf \phi}({\bf x})を考慮することなく直接カーネル関数だけで操作が可能であり、したがって高次の、さらには無限の次元を有する特徴空間を利用することが可能になることにある。
  • グラム行列に基づいた双対表現の存在は、パーセプトロンを含む多くの線形モデルの特徴。

6.2 カーネルの構築(Constructing Kernels)

  • カーネルトリックで利用するカーネル関数を定義する一つの方法は、特徴空間上のある関数{\bf \phi}({\bf x})を定め、これに対応するカーネル関数を
   k(x,x') = {\bf \phi}(x)^{\rm T}{\bf \phi}(x') = \sum_{n=1}^{M}\phi_i(x)\phi_i(x')
とする(1次元の場合、ただし\phi_i(x)は基底関数)。
  • 他の方法としては、カーネル関数を直接定義することもできる。この場合、カーネル関数がある特徴空間内のスカラー積に対応していなければならない。ある関数がカーネル関数の条件を満たすための必要十分条件は、グラム行列があらゆる\left\{{\bf x}_n\right\}に対して半正定値であること。
  • あるいはカーネル関数が満たす関係を用いて単純な既知のカーネル関数からより複雑なカーネル関数を実例に応じて生成することができる。(例省略)
  • 生成モデルを用いてカーネル関数を定義した後、それを判別モデルにおいて使用して判別を行う場合がある。一つの方法としては、生成モデルをp({\bf x})とすると
   k({\bf x},{\bf x}') = p({\bf x})p({\bf x}')
あるいはこれを拡張した
   k({\bf x},{\bf x}') = \sum_{n}p\left({\bf x}|i\right)p\left({\bf x}'|i\right)p(i)
という形のカーネル関数を使用する。
  • 情報幾何学的観点から見出されるフィッシャーカーネル(Fisher kernel)は、パラメータ化された生成モデルp\left({\bf x}|{\bf \theta}\right)({\bf \theta}はパラメータベクトル)とした場合に、それにより生成された2つの入力ベクトル間の類似性を測る以下のようなカーネル関数。
   k({\bf x},{\bf x}') = {\bf g}\left({\bf \theta},{\bf x}\right)^{\rm T}{\bf F}^{-1}{\bf g}\left({\bf \theta},{\bf x}'\right)
ここで{\bf g}\left({\bf \theta},{\bf x}\right) = \nabla_{\theta}\ln p({\bf x}|{\bf \theta})(フィッシャースコアFisher score)、
{\bf F} = E_x\left[{\bf g}\left({\bf \theta},{\bf x}\right){\bf g}\left({\bf \theta},{\bf x}\right)^{\rm T}\right](フィッシャー情報行列Fisher information matrix)
このカーネル関数はパラメータの非線形な置換について不変。
  • また別の例として、シグモイドカーネル関数
   k({\bf x},{\bf x}') = {\rm tanh}\left(a{\bf x}^{\rm T}{\bf x}' + b\right)
もSVMにニューラルネットワーク類似の外観を与える理由で用いられる。

6.3 動径基底関数ネットワーク(Radial basis function network)

  • 第三章で扱った線形モデルにおける基底関数の選択としてよくあるのが、中心{\bf \mu}_iからの動径距離(通常ユークリッド距離)のみに依存する基底関数\phi_j({\bf x}) = h\left(\|{\bf x} - {\bf \mu}_j\|\right)を使用する方法。歴史的には、動径基底関数は関数値の正確な補間を行うために導入されたもの。N個の入力とそれに対応する目標変数の全てを通る関数は、各データ点を中心とする動径基底関数の線形結合
   f({\bf x}) = \sum_{n=1}^{N}w_nh\left(\|{\bf x} - {\bf x}_n\|\right)
として表すことができるが、パターン認識の実例では目標変数は通常ノイズを含んでいるため、このような正確な補間を行う関数は過学習となり不適切。
  • また、そもそも入力変数にノイズが混ざっている場合の補間問題を扱う場合にも動径基底関数が有効になる。入力変数{\bf x}のノイズが分布\nu(\xi)を持つ変数\xiによって記述される場合、二乗和誤差関数は
   E = \frac{1}{2}\sum_{n=1}^{N}\int\left\{y\left({\bf x}_n + \xi\right) - t_n\right\}^2\nu(\xi){\rm d}\xi
となり、変分問題を解くと
   y({\bf x}) = \sum_{n=1}^{N}t_n h\left({\bf x} - {\bf x}_n\right) \hspace{2em} \left(h\left({\bf x} - {\bf x}_n\right) = \frac{\nu\left({\bf x} - {\bf x}_n\right)}{\sum_{n=1}^{N}\nu\left({\bf x} - {\bf x}_n\right)} \hspace{1em} (6.41)\right)
これを見ると、各データ点ごとにそれを中心とした一つの基底関数が存在していることが分かる。これはNadaraya-Watsonモデルと呼ばれ、\nu(\xi)が等方的ならそれは\|\xi\|のみに依存する関数となるので、基底関数は動径的radialとなる。(6.41)の基底関数は正規化されている、すなわち\sum_{n}h\left({\bf x} - {\bf x}_n\right) = 1。正規化された基底関数は、ある区間においてどの基底関数の値も小さすぎたりあるいは専らバイアスパラメータのみに依存したりすることを回避する効能がある。
  • 正規化された動径基底関数が有用となるもう一つの場合は、回帰問題におけるカーネル密度推定において計算量を軽減するためにデータ点よりも少ない基底関数を使用するケース。この場合、基底関数の中心はランダムに選択されたデータ点の部分集合によるのが最も簡単な方法。また、直交最小二乗法(orthogonal least squares)は各ステップにおいて誤差関数を最も減少させるデータ点を動径基底関数の中心となるように選択するもの。K平均法のようなクラスタリングアルゴリズムにおいては、基底関数の中心はもはやデータ点とは一致しない。

Nadaraya-Watsonモデル

  • 学習パターン\left\{{\bf x}_n,t_n\right\}について同時確率p({\bf x},t)をモデル化するためにパルツェン密度推定を用いると、
   p({\bf x},t) = \frac{1}{N}\sum_{n=1}^{N}f\left({\bf x} - {\bf x}_n, t - t_n\right)
f({\bf x},t)は成分密度関数で各データ点を中心とする。
ここで成分密度関数の平均が0だと仮定すると   
y({\bf x}) = \frac{\sum_{n}g\left({\bf x} - {\bf x}_n\right)t_n}{\sum_{m}g\left({\bf x} - {\bf x}_m\right)} = \sum_{n}k({\bf x},{\bf x}_n)t_n \hspace{2em} \left( g({\bf x}) = \int_{-\infty}^{\infty}f\left({\bf x},t\right){\rm d}t, \hspace{1em} k({\bf x},{\bf x}_n) = \frac{g\left({\bf x} - {\bf x}_n\right)}{\sum_{m}g\left({\bf x} - {\bf x}_m\right)} \right)
これはNadaraya-Watsonモデルないしカーネル回帰(kernel regression)と呼ばれる。局所化されたカーネル関数は{\bf x}により近い{\bf x}_nに対してより大きな重みを与える。上のカーネルは等価カーネル同様に以下の条件を満たす。
   \sum_{n=1}^{N}k({\bf x},{\bf x}_n) = 1
このモデルは条件付平均のみならず全体の条件付分布をも与える。各成分密度関数を平均が0の等方的な正規分布とした場合、全体の条件付分布は混合正規分布となる。
  • このモデルを拡張して、成分密度関数としてより柔軟な形の正規分布(例えば入力と目標変数とにそれぞれ異なった分散を持つもの)を考えることができる。

6.4 ガウス過程

  • ガウス過程(Gauss process)の考え方は、パラメトリックなモデルを使わず代わりに関数の事前確率分布を直接に定義してしまおうというもの。

線形回帰再訪

  • 一般にガウス過程は任意の点集合{\bf x}_1,...,{\bf x}_Nについて評価したy({\bf x})が同時正規分布に従うような関数y({\bf x})の確率分布を定義する。入力ベクトル{\bf x}の次元が2の場合にはガウスランダム場(Gaussian random field)とも呼ばれる。より一般的には、確率過程(stochastic process)y({\bf x})は任意の有限集合y({\bf x}_1),...,y({\bf x}_N)の同時確率分布を一貫したやり方で与えることで定義される。
  • ガウス確率過程の要点は、N個の変数y_1,...,y_Nの同時確率が完全に二次統計量すなわち平均および分散によって規定されることにある。多くの実例においては予めy({\bf x})の平均は知られていないので0と置く。これを基底関数的な見方をすれば、重み値p\left({\bf w}|\alpha\right)の事前分布の平均を0に設定することに対応する。そして次に任意の2つの{\bf x}で評価されたy({\bf x})の共分散を与えることによってガウス過程の定義は完了する。これは以下のカーネル関数によって与えられる。
   E\left[y({\bf x}_n)y({\bf x}_m)\right] = k({\bf x}_n,{\bf x}_m)
  • 線形回帰モデルによって同様にガウス過程を定義することができる。M個のベクトル{\bf \phi}({\bf x})の要素によって与えられる固定基底関数の線形結合で定義されるモデル
   y({\bf x}) = {\bf w}^{\rm T}{\bf \phi}({\bf x})
の重みが以下の等方的正規分布に従うとする。
   p({\bf w}) = {\cal N}\left({\bf w}|{\bf 0}, \alpha^{-1}{\bf I}\right)
この場合、カーネル関数(グラム行列{\bf K})は
   K_{nm} = k({\bf x_n},{\bf x}_m) = \frac{1}{\alpha}{\bf \phi}({\bf x}_n)^{\rm T}{\bf \phi}({\bf x}_m)
ここでベクトル{\bf y} \hspace{1em} \left(y_n = y({\bf x}_n)\right)の同時確率分布を考えると、その平均および分散は
   E[{\bf y}] = {\bf \Phi}E[{\bf w}] = {\bf 0}
   {\rm cov}[{\bf y}] = E\left[{\bf y}{\bf y}^{\rm T}\right] = {\bf \Phi}E\left[{\bf w}{\bf w}^{\rm T}\right]{\bf \Phi}^{\rm T} = \frac{1}{\alpha}{\bf \Phi}{\bf \Phi}^{\rm T} = {\bf K}
となり、これらによって一つのガウス過程が定義されているとみることができる。カーネル関数は基底関数の選択を経ず直接定めることもでき、その例としてはガウスカーネルや指数カーネルなどが上げられる。後者のカーネル関数に対応するオルンシュタイン-ウーレンベック過程(Ornstein-Uhlenbeck process)で、ブラウン運動を記述するために導入された。

ガウス過程による回帰

  • 学習データの目標値にデータ点ごとに独立に含まれるノイズを考慮すると、目標値の同時分布は
   p\left({\bf t}|{\bf y}\right) = {\cal N}\left({\bf t}|{\bf y},\beta^{-1}{\bf I}_N\right)
ガウス過程の定義により、周辺分布p\left({\bf y}\right)は平均0で共分散がグラム行列{\bf K}の正規分布
   p({\bf y}) = {\cal N}\left({\bf y}|{\bf 0},{\bf K}\right)
これらより、
   p({\bf t}) = \int p\left({\bf t}|{\bf y}\right)p({\bf y}){\rm d}{\bf y} = {\cal N}\left({\bf t}|{\bf 0},{\bf C}\right) \hspace{1em} \left({\bf C}_{nm} = k({\bf x_n},{\bf x}_m) + \beta^{-1}\delta_{nm}\right)
つまり、y({\bf x})のノイズと目標値自体に含まれるノイズの2つの独立なノイズの和が分散となる。
ガウス過程による回帰に広く用いられるカーネル関数は
   k({\bf x_n},{\bf x}_m) = \theta_0 \exp\left\{-\frac{\theta_1}{2}\|{\bf x}_n - {\bf x}_m\|^2\right\} + \theta_2 + \theta_3{\bf x}_n^{\rm T}{\bf x}_m
であり、第三項はパラメトリックな線形モデルに対応する。
ここから回帰問題を解く、すなわち所与のデータを用いて新たな入力に対する目標変数値を予測する。すなわちN個の学習データと目標値が観測された場合に、N+1番目の入力に対応する目標変数の値を求めるための予測分布は
   m\left({\bf x}_{N+1}\right) = {\bf k}^{\rm T}{\bf C}^{-1}_N{\bf t}
   \sigma^2\left({\bf x}_{N+1}\right) = c - {\bf k}^{\rm T}{\bf C}^{-1}_N{\bf k}
の正規分布となる。{\bf C}は正定値行列でなければならない。グラム行列{\bf K}の任意の固有値を\lambda_iとすると、これに対応する{\bf C}の固有値は\lambda_i + \beta^{-1}\beta > 0だから、{\bf C}が正定値であるためにはカーネル行列k({\bf x_n},{\bf x}_m)が任意の\left({\bf x}_n,{\bf x}_m\right)について半正定値であることが十分。
  • 上のカーネル関数が有限な基底関数の集合として定義される場合にはこれは線形回帰モデルと同等。この場合に予測分布を得るためにはパラメータ空間から見て線形回帰モデルによるか、若しくは関数空間から見てガウス過程によるかの選択がある。
  • ガウス過程モデルおよび基底関数モデルの計算はN \times Nの行列の逆行列を求めることを含むが、必要な計算量は両者で異なる。ガウス過程の場合はO(N^3)、基底関数の場合はO(M^3)が必要であり、新たなデータ点が追加される毎にそれぞれO(N^2)O(M^2)だけ計算量が増加する。もし基底関数の数MNよりも小さければ基底関数モデルの方が計算量は少なくて済むことになるが、一方、ガウス過程の有利さは無限個数の基底関数によってしか表現できない共分散関数を扱える点にある。ただし学習データ集合が巨大なものである場合にはガウス過程はそのままでは計算が不可能になるため、近似法が考案されている。
  • ガウス過程手法を複数の目標変数に拡張したものはco-krigingと呼ばれる。

ハイパーパラメータの学習

  • ガウス過程におけるハイパーパラメータを\thetaとすると、尤度関数p\left({\bf t}|\theta\right)の評価によってそれらを決定することになるが、最も簡単な方法は対数尤度関数を最大化することによって\thetaの点推定を行うこと。これは線形回帰モデルにおけるタイプ2最尤法(経験ベイズ)と同様で、対数尤度の最大化には共役勾配法(conjugate gradients)のような効率的な勾配法が使用される。

ARD

  • 最尤法でハイパーパラメータを求める際に各入力変数ごとに別個のパラメータを組み入れる拡張された手法によるときには、最尤法によるパラメータ最適化によってデータからそれぞれの入力の相対的な重要度を推測することができる。ガウス過程においてこれを採用したものがARD(automatic relevance determination)。例えば2次元の入力空間について以下のようなカーネル関数を定義する。
   k({\bf x},{\bf x}') = \theta_0\exp\left\{-\frac{1}{2}\sum_{i=1}^{2}\eta_i\left(x_i - x'_i\right)^2\right\}
\eta_iを小さく設定するとカーネル関数はそのパラメータに対応する入力に対して鈍感になる。この方法で予測分布に対して少ない影響しか与えていない入力変数を検知することが可能になる。

ガウス過程によるクラス判別

  • ガウス過程の予測は確率分布による手法のように区間(1,0)に収まるような事後確率を求めるものではなく、その予測値は実座標軸全体に及ぶ。しかしガウス過程の予測に対して適切な非線形活性化関数を適用することによってこれをクラス判別問題に使用することができる。
  • 2クラス判別問題を考え、ある関数a({\bf x})についてのガウス過程を定義し、この関数をロジスティックシグモイド関数y = \sigma(a)で変換すると、y \in (0,1)となるy({\bf x})上の非ガウス過程を得ることができる。この場合、目標変数tの確率分布は以下のベルヌーイ分布に従う。
   p\left(t|a\right) = \sigma\left(a\right)^t\left(a - \sigma\left(a\right)\right)^{1-t}
予測分布を導くには、a_{N+1}についてのガウス過程事前分布を定義し、さらにt_Nについて非ガウス過程を定義して学習データt_{N+1}で条件付ける。a__{N+1}についてのガウス過程事前分布は
   p\left({\bf a}_{N+1}\right) = {\cal N}\left({\bf a}_{N+1}|{\bf 0},{\bf C}_{N+1}\right)
この場合回帰問題の場合とは異なり共分散行列はノイズ項を含んでいないが、共分散行列が正定値であることを保証するためにパラメータ\nuによって制御されるノイズ項に類似する項を導入するのが便宜。従って共分散行列{\bf C}_{N+1}の要素は以下のようになる。
   {\bf C}_{nm} = k({\bf x}_n,{\bf x}_m) + \nu\delta_{nm}
ただしk({\bf x}_n,{\bf x}_m)はパラメータベクトル{\bf \theta}に依存する半正定値なカーネル関数で\nuの値は通常予め決められている。
  • 2クラス判別問題については目標変数が1となる確率のみを決めればよいから、求める予測分布は以下のようになる。
   p\left(t_{N+1} = 1|{\bf t}_N\right) = \int p\left(t_{N+1} = 1|a_{N+1}\right)p\left(a_{N+1}|{\bf t}_N\right){\rm d}a_{N+1} \hspace{2em} \left(p\left(t_{N+1} = 1|a_{N+1}\right) = \sigma\left(a_{N+1}\right)\right)
この積分は不可能なのでサンプリング法や数値解析的手法によって近似される。正規分布についてのロジスティックシグモイド関数の畳み込み近似を使うことも可能。正規分布の近似を得るための手法には、変分推定(variational inference)(第十章)、期待値伝播(expectation propagation)、ラプラス近似がある。
  • ラプラス近似による計算例(省略)

ニューラルネットワークとの関係

  • ニューラルネットワークが表現しうる関数の範囲はその中間ユニット数Mに依存し、十分大きなMについてはニューラルネットワークは任意の関数を任意の精度で近似しうることを既に見た。最尤法による場合には過学習を回避するために学習データの大きさに応じてMは制限を受けることになるが、ベイズ的手法によるときはそのような必要はない。
  • M \rightarrow \inftyのときニューラルネットワークによって生成される関数はガウス過程と同等になることが知られている。(詳細略)