Parabola JournalMachine Learning

ガウス過程に関して

この記事は Machine Learning Advent Calendar 2015 – Qiita に併せて書かれたものです.以下の文章は元々自分の研究でガウス過程を使うためにまとめておこうと思い書いているもので,このアドベントカレンダー後にも適宜修正する予定です.

過程とは元々時間tに関連した関数  f(t) に関して議論をするための言葉らしいですが,確率過程とは(インターネット上の情報源をまとめると)確率変数の集合 \{X(t) \mid t \in\mathcal{T}\} に関して議論するための手法群のようです.適当にi.i.d.なものを取ってきてもいいですが,確率変数同士に何らかの構造があるとき,より価値のあるものになるのでしょう(例; マルコフ連鎖;  X(t)  X(t-1) のみに依存し, \mathcal{T} は時間のインデクスである).

一般的な教師あり機械学習 (supervised machine learning) の 回帰問題 (regression problem) では訓練データの集合 \mathcal{D} = \{x^{(i)}, y^{(i)} \}_{i=1}^n が与えられた時に,モデル  f(\cdot) が持つパラメータを学習し,未知の入力  x^{(n+1)} に対して値  f(x) を計算し,その性能を議論します. PRML§3/§6で扱っている線形回帰モデルでは,シンプルな形であれば  y = w^{\mathrm{T}} x や基底関数を用いて  y = w^{\mathrm{T}} \phi (x) の形をモデルとして,パラメータ  w を求めます.以降では  \phi(x) = (\phi_1(x), \phi_2(x), \cdots, \phi_H(x)) とします.

ガウス過程は訓練データ  y^{(1)}, y^{(2)}, \cdots, y^{(n)} に関して構造として,ガウス分布を与えます.前提として事前知識として  p(\mathbf{w}) = \mathcal{N}(w \mid 0, \alpha^{-1} I) を重みの事前分布に与えると, 基底関数 (とその個数H) がfixされているため,上の  \mathbf{y}^\mathrm{T} = (y^{(1)}, y^{(2)}, \cdots, y^{(n)}) に関する議論はそのままパラメータの事前分布から特徴付けされます.平均は0になり(事前分布より),共分散行列は  \mathrm{cov}[\mathbf{y}] = \alpha^{-1} \mathbf{\Phi} \mathbf{\Phi}^\mathrm{T} . これが どんな入力と出力 (→ これ \mathcal{D} = \{x^{(i)}, y^{(i)} \}_{i=1}^n ) に対しても成り立つとき,  \mathbf{y} はガウス過程に従うと呼ぶ(定義).ガウス過程をベイズ的な回帰モデルの特徴付けとして説明する以外の説明方法としてはGPML(Gaussian Process for Machine Learning)にいろいろと書かれています (Weight-space view と Function-space view,あまり意味がわからなかった).

GPy

使うぞい.

import numpy as np
import matplotlib.pyplot as plt
import GPy

X = np.linspace(0.05,0.95,10)[:,None]
Y = -np.cos(np.pi*X) + np.sin(4*np.pi*X) + np.random.normal(loc=0.0, scale=0.1, size=(10,1)) 
plt.figure()
plt.plot(X,Y,'kx',mew=1.5)


figure_0

k = GPy.kern.RBF(input_dim=1, variance=1., lengthscale=0.2)
model = GPy.models.GPRegression(X, Y, k)
model.plot()


figure_00

model.optimize()
model.plot()


figure_1

ガウス過程回帰

予測分布の真面目な導出は機械学習プロフェッショナルシリーズ「異常検知と変化検知」の§8.3と§8.4にあります.

“ガウス過程回帰の完全な導出と、実験計画法への応用。 ガウス過程回帰は工学のいろんなところに顔を出しますが、 ミステリアスな方法だと思われているようなので、完備された解説を書きました。”


異常検知と変化検知 (機械学習プロフェッショナルシリーズ)
井手 剛 杉山 将
講談社
売り上げランキング: 11,821


カーネル

ガウス過程回帰(GPR)がカーネルに関する章PRML§6に出てくる理由は,ガウス過程における  \mathbf{y}^\mathrm{T} = (y^{(1)}, y^{(2)}, \cdots, y^{(n)}) に関する同時分布が平均0であり共分散行列 \alpha^{-1} \mathbf{\Phi} \mathbf{\Phi}^\mathrm{T} = K, K_{i,j} = k(x_i, x_j) = \alpha^{-1} \phi(x_i)^{\mathrm{T}} \phi(x_j) で特徴付けられるからでしょうが,(無限次元とか言い出すのもこのあたりから),
あまりカーネル法との話は説明されていないと感じました (最初にPRMLを読んだ時も,今回読んでたときも).

こういった部分に関しては「カーネル多変量解析」という本の§2.カーネル多変量解析の仕組み > §2.3.確率モデルからの導入 (b) 正規過程からカーネルへ)という部分と,§7.汎化と正則化の理論; 7.2.正則化とカーネル法 (c) 正規過程(正則化と確率モデル)という部分にガウス過程の話があります.ここでは上で話していた「同時分布が平均0,行列Kを共分散行列としたガウス分布」といった話とは別として,関数自体に注目した場合の話もあります.自分の場合は両方読んでなんとなくイメージがつかめた気分になりました.



リンク


– PRMLの§3(線形回帰),§6.1&6.4(カーネル法,ガウス過程)あたりが参考になります
@naoya_t さんのグラフ再現: http://naoyat.hatenablog.jp/entry/2012/11/13/220933
– GPMM; Gaussian Processes for Machine Learning: Book webpage
– 統数研の持橋先生の資料1: http://www.ism.ac.jp/~daichi/paper/svm2009advgp.pdf
– 統数研の持橋先生の資料2: http://www.ism.ac.jp/~daichi/lectures/H26-GaussianProcess/gp-lecture2-daichi.pdf
– 集中講義 Gaussian Process Summer/Winter School; Gaussian Process Summer Schools
– 集中講義 Gaussian Process Winter School 2015のipython notebook; Jupyter Notebook Viewer

他のブログ記事
ガウス過程シリーズ 1 概要

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です