ガウス過程についてのメモ

ガウス過程の定義

関数f(\mathbf{x})上の確率分布で、任意の点集合\mathbf{x}_1, \cdots, \mathbf{x}_nに対するf(\mathbf{x})の値の同時分布が正規分布になるものをガウス過程と呼ぶ。

ガウス分布との違い

  • ガウス分布というのは、平均ベクトル\muと共分散行列\Sigmaを使って完全に記述される
    • \mathbf{f} = (f_1, \cdots, f_n)^T \sim \mathcal{N}(\mu, \Sigma) (i = 1, \cdots, n)
  • 一方、ガウス過程f(\mathbf{x})は平均関数m(\mathbf{x})と共分散関数k(\mathbf{x}, \mathbf{x}^\prime)によって完全に記述される

普通のやり方

 f(\mathbf{x}) = \phi(\mathbf{x})^T \mathbf{w}として、これにガウスノイズを加えたy = f(\mathbf{x}) + \epsilonについて考える。これで、yも正規分布に従う確率変数となるので、y_1, \cdots, y_nについての尤度関数を考えることができる(ここまで普通の頻度論)。

で、ベイズ流にパラメータ\mathbf{w}について事前分布を考えることができるし、それを使って\mathbf{w}についての事後分布を考えることができるよね。もちろんこれもガウス分布になる。この事後平均のことをMAP推定量と呼びます(ここまで普通のベイジアン)。

関数空間から見た視点

この辺分かりやすそう。ここのp535。

The idea of Gaussian process modelling is to place a prior p(y(x)) directly on the space of functions, without parameterizing y(x). The simplest tyep of prior over functions is called a Gaussian process. It can be thought of as the generalizaiton of a Gaussian distribution over a finite vector space to a function space of infinite dimention.

ガウス過程は(f(\mathbf{x}) = \mathbf{w}^T \phi(\mathbf{x})なとという形で)パラメタライズせずに、f(x)の事前分布を置くというのが基本的な考え方。\mathbf{w}の事前分布、というのを考えるとしたら、それは特徴空間の次元数で考えていることになる。しかし、f(x)の次元というのはいうとすれば無限次元での事前分布を考えているということになる!!これは有限次元のガウス分布を無限次元へ一般化したものと考えるとことができる、とある。

さて、無限次元に対応するような事前分布を考えているとしたら、それはそれですごいことだが、どうやって考えるかという問題は残っている。f(x)の事前分布として、正規分布をおく、としてもまあ悪くはない*1。でも、いきなりこうやられてもちょっと受け入れがたいように思う*2ので、違うアプローチを取ろう。

どういうアプローチかというと、こういうアプローチ。まず以下のことを思い出す。

  • ベイズ流の線形回帰を思い出す
  • パラメータについての事前分布を平均0で等方性のガウス分布とする
  • f(x)はパラメータについての線形和で書け、それぞれはガウス分布に従っているので正規分布の再生性よりf(x)もガウス分布に従う
  • これの同時分布である(f(\mathbf{x}_1), \cdots, f(\mathbf{x}_N))^TはN次元の正規分布に従う
  • そして、この同時分布の共分散は内積の形で書くことができる
    • よって、カーネルの形で記述することが可能!!

このように、ベイズ流の線形回帰の例を考えると、f(x)の事前分布としてガウス分布を考えることができる。まあ、このような例があるので、f(x)の事前分布をガウス分布として持ってくるのはある程度妥当でしょう。そして、今度はベイズ流の線形回帰だったことを忘れたかのように扱いましょう。なぜ忘れてよいかというと、上の結果から僕らが知っていればいいのは、共分散関数がカーネルの形で記述できる(例がある)と知ってしまったから。そして、さらに重要なこと。先程までは、カーネルカーネル関数として
K_{nm} = k(\mathbf{x}_n, \mathbf{x}_m) = \frac{1}{\alpha} \phi(\mathbf{x}_n)^T \phi(\mathbf{x}_m)
を使っていた。なぜならばベイズ流の線形回帰の結果を利用して考えていたので。しかし、もう我々はベイズ流の線形回帰のことを忘れてよい。カーネルの形で記述できればよいのだから。つまり使うカーネルは上のカーネルにしばられる必要はないということである。ガウスカーネルでも
k(\mathbf{x}_n, \mathbf{x}_m) = \theta_0 \exp\{- \frac{\theta_1}{2} ||\mathbf{x}_n - \mathbf{x}_m||^2\} + \theta_2 + \theta_3 \mathbf{x}_n^T \mathbf{x}_m
のようなカーネルでも(正定値対称性を満たす限り)自由に使ってよい。

ここまでくれば、PRML下巻にあるように予測分布p(t_{N+1}|\mathbf{t}_N)が導出でき、これはガウス分布となる。k(\mathbf{x}_n, \mathbf{x}_m)が有限の基底関数で定義される場合(例えばk(\mathbf{x}_n, \mathbf{x}_m) = \frac{1}{\alpha} \phi(\mathbf{x}_n)^T \phi(\mathbf{x}_m))、ベイズ流の線形回帰と同じ結果を得ることができる。

ガウス過程のメリットデメリット

あれ、デメリットのほうが大きく見えてしまうのだが。。。

ガウス過程のメリット

  • 特徴空間のことをぶっとばして考えることができて、カーネルのみを考えればよい
    • 正定値対称なカーネルならばなんでもよいかというと、もちろんそうではなく、データに適した形のカーネルを考える必要はある
  • 特徴ベクトルを使った表記だと無限個の特徴ベクトルが必要になるものを、カーネル関数一つで表わすことができたりする
    • ガウシアンカーネルは無限次元の内積に相当
    • 無限次元に対応するものは特徴ベクトルのほうでは逆立ちしても作れないので、ここはカーネルがプッシュできるポイント

ガウス過程のデメリット

  • 新しくきたデータとの類似度を(カーネル関数を通して)はかるために、今までのデータを全て持っておく必要がある
    • ベイズ流の線形回帰ならパラメータのみ保持しておけばよい
  • 通常の方法だと計算量がO(N^3)かかる。ベイズ流の線形回帰ならO(M^3)
    • オーダーとしては同じだが、一般にN > Mであるので、ガウス過程のほうが計算量は一般的に大きくなりがち
    • 小さくする方法は色々研究されている

まだよく分かってない付近

ここの14pにある

The specification of the covariance function implies a distribution over functions.

とかPRML下巻のp21の

したがって、そのようなモデルに対して、予測分布は、線形回帰のパラメータ空間で考えることができる一方、関数の空間でガウス過程を考えることによっても得ることができる。

後半部分とかがよく分からない。

パターン認識と機械学習 下 (ベイズ理論による統計的予測)

パターン認識と機械学習 下 (ベイズ理論による統計的予測)

  • 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇
  • 出版社/メーカー: 丸善出版
  • 発売日: 2012/02/29
  • メディア: 単行本
  • 購入: 6人 クリック: 14回
  • この商品を含むブログを見る

*1:ベイズはあなたの主観を表わすものだし、カーネル本ではいきなりそんな感じで書いてあるように思う

*2:僕はそうだった