1. ガウス過程(Gaussian processes)に関するメモ(1)
正田 備也
平成 19 年 7 月 15 日
本稿の参考文献は [1] です.その第 2 章を縮めて紹介しますが,直接読むほうが分かりやすいかもしれません.
1 雑音をともなう線形回帰モデル
あるブラックボックスがあって,p 次元のベクトル x が入力として与えられると,ひとつの数値 y を出力すると
します.このブラックボックスの中身がどうなっているのかを説明するために,モデルをつくることにします.本
稿では,ガウス雑音をともなう線形回帰モデルを考えます.これは
f(x) = x w, y = f(x) + ε (1)
という式で書くことのできるモデルです.まず,入力ベクトル x と,モデルのパラメータであるベクトル w との内
積が求められます.これでひとつの数値 f(x) が得られますが,さらにガウス雑音 ε が加わります.ガウス雑音とは,
ガウス分布(=正規分布)で表される雑音で,本稿では平均が 0,分散が σ2
n とします.つまり ε ∼ N(0, σ2
n) です.
なお,このノイズは,別々の入力ベクトルに対して独立に定まるとします.また,ブラックボックスに与えられる
個々の入力ベクトルも互いに独立とします.
たくさんの入力ベクトルを,まとめて X と行列で書くことにします.入力ベクトルの個数を n とします.X は
p × n 行列で,n 個の列のそれぞれが,別々の入力ベクトルに対応しています.そして,これら n 個の入力ベクトル
の各々について得られる出力 y も,縦に並べて y と書くことにします.y は n 次元ベクトルになります.
別々の入力ベクトルに対する出力は,互いに独立となりますので,出力を並べたベクトルとして y = (y1, . . . , yn)
(y は縦ベクトルなので をつけました.)というベクトルを得る確率 p(y|X, w) は
p(y|X, w) =
n
i=1
p(y1|xi, w) =
n
i=1
1
√
2πσn
exp −
(yi − xi w)2
2σ2
n
=
1
(2πσ2
n)n/2
exp −
1
2σ2
n
|y − X w|2
=
1
(2πσ2
n)n/2
exp −
1
2
(y − X w) (σ2
nI)−1
(y − X w) = N(X w, σ2
nI) (2)
となり,平均が X w,共分散行列が σ2
nI のガウス分布になっています.
2 事前分布
ここで,モデルのパラメータ w の事前分布を導入します.事前分布は,N(w0, Σ0) という正規分布とします.参
考文献 [1] では w の従うガウス分布の期待値ベクトルはゼロベクトルですが,本稿では期待値ベクトルを w0 とし
て,しばらくは議論を続けます.ベイズ則 p(w|X, y) ∝ p(y|X, w)p(w) より,事後分布 p(w|X, y) は
p(w|X, y) ∝ exp −
1
2σ2
n
|y − X w|2
exp −
1
2
(w − w0) Σ−1
0 (w − w0) (3)
1
2. となります.w に依存しない項は省き,「比例する(∝)」という記号を使って式を書きました.
では,式 (3) を平方完成 (completing the square) します.参考文献では省かれている計算を実際にやってみます.
w に依存しない項は定数とみなし,式の変形を進めていきます.
p(w|X, y) ∝ exp −
1
2σ2
n
(y − X w) (y − X w) exp −
1
2
(w − w0) Σ−1
0 (w − w0)
= exp −
1
2σ2
n
(y − X w) (y − X w) −
1
2
(w − w0) Σ−1
0 (w − w0)
∝ exp −
1
2σ2
n
{y − X (w − w0)} {y − X (w − w0)} −
1
σ2
n
w XX w0 −
1
2
(w − w0) Σ−1
0 (w − w0)
∝ exp −
1
2σ2
n
{(w − w0) XX (w − w0) − 2y X (w − w0)} −
1
2
(w − w0) Σ−1
0 (w − w0)
−
1
σ2
n
w XX w0
= exp −
1
2
(w − w0) (
1
σ2
n
XX + Σ−1
0 )(w − w0) +
1
σ2
n
y X (w − w0) −
1
σ2
n
w XX w0
∝ exp −
1
2
(w − w0) (
1
σ2
n
XX + Σ−1
0 )(w − w0) +
1
σ2
n
y X (w − w0) −
1
σ2
n
(w − w0) XX w0
= exp −
1
2
(w − w0) (
1
σ2
n
XX + Σ−1
0 )(w − w0) + 2 ·
1
2
(w − w0) {
1
σ2
n
X(y − X w0)}
= exp −
1
2
(w − w0) (
1
σ2
n
XX + Σ−1
0 ){(w − w0) −
1
σ2
n
(
1
σ2
n
XX + Σ−1
0 )−1
X(y − X w0)}
+ ·
1
2
{
1
σ2
n
X(y − X w0)} (w − w0)
∝ exp −
1
2
(w − w0) (
1
σ2
n
XX + Σ−1
0 ){(w − w0) −
1
σ2
n
(
1
σ2
n
XX + Σ−1
0 )−1
X(y − X w0)}
+ ·
1
2
{
1
σ2
n
X(y − X w0)} {(w − w0) −
1
σ2
n
(
1
σ2
n
XX + Σ−1
0 )−1
X(y − X w0)}
= exp −
1
2
{w − w0 −
1
σ2
n
(
1
σ2
n
XX + Σ−1
0 )−1
X(y − X w0)}
(
1
σ2
n
XX + Σ−1
0 ){w − w0 −
1
σ2
n
(
1
σ2
n
XX + Σ−1
0 )−1
X(y − X w0)} (4)
式 (4) は,事後分布 p(w|X, y) がガウス分布に従うことを示しています.期待値ベクトル ¯w は
¯w = w0 +
1
σ2
n
(
1
σ2
n
XX + Σ−1
0 )−1
X(y − X w0) (5)
であり,共分散行列は (σ−2
n XX + Σ−1
0 )−1
です.ここで,この共分散行列の逆行列 σ−2
n XX + Σ−1
0 を A とおく
と,式 (5) で与えられる平均ベクトルは
¯w = w0 + A−1
(
1
σ2
n
Xy −
1
σ2
n
XX w0) = w0 + A−1 1
σ2
n
Xy − A−1
(A − Σ−1
0 )w0 = A−1 1
σ2
n
Xy + A−1
Σ−1
0 w0
= A−1
(
1
σ2
n
Xy + Σ−1
0 w0) (6)
と,すっきりと書き直せます.これは,参考文献 [2] の式 (3.50) に一致しています.
3 予測分布
次に,以上の結果を用いて,予測を行います.つまり,新たに入力ベクトル x* が与えられたとき,これに対して
件のブラックボックスが出す値を予測します.ここで予測するのは,ノイズが加わる前の値 f(x*) = x
*
w です.
2
3. p 次元ベクトル w が従うガウス分布は,期待値ベクトルが 0 で共分散行列が単位行列のガウス分布(つまり標準
ガウス分布)に従う p 次元ベクトル z を,w = Bz + ¯w と線形変換した p 次元ベクトル w が従う確率分布と見なす
ことができます.ただし A−1
= BB が成り立ちます.
f(x*) は x* w に等しいので,x* w = x* Bz + x* ¯w が従う確率分布を求めれば,p(f*) が得られます.こ
れは,標準ガウス分布に従う p 次元ベクトル z に,x* B を右から掛け,さらに x* ¯w を足すことで得られるスカ
ラ値が従う確率分布です.つまり,z と比べると,線形変換を加えただけなので,得られる確率分布はやはりガウ
ス分布であり,平均は x* ¯w,分散は x* B(x* B) = x* BB x* = x* A−1
x* となります.つまり,
p(f*) ∼ N(x* ¯w, x* A−1
x*) (7)
が得られます.
いま,大半を言葉で説明したことを式で書くと
p(f*) = p(f*|x*, w)p(w|X, y)dw ∼ N(x* ¯w, x* A−1
x*) (8)
というように予測分布 p(f*) を求めたことになっています.つまり,w の事前分布を導入して,w についての周辺
化の積分計算をして,p(f*) を求めたことになっています.
4 共分散関数
ここからは,w0 = 0 と仮定します.このとき,式 (6) より ¯w = 1
σ2
n
A−1
Xy となります.ここで
A =
1
σ2
n
XX + Σ−1
0
AΣ0 = (
1
σ2
n
XX + Σ−1
0 )Σ0 =
1
σ2
n
XX Σ0 + I
AΣ0X = (
1
σ2
n
XX Σ0 + I)X =
1
σ2
n
XX Σ0X + X =
1
σ2
n
X(X Σ0X + σ2
nI)
Σ0X =
1
σ2
n
A−1
X(X Σ0X + σ2
nI)
Σ0X(X Σ0X + σ2
nI)−1
=
1
σ2
n
A−1
X (9)
という計算をして得られる関係式
1
σ2
n
A−1
X = Σ0X(X Σ0X + σ2
nI)−1
をつかって,予測分布 p(f*) の期待値 x* ¯w を書き直します.
x* ¯w =
1
σ2
n
x* A−1
Xy = x* Σ0X(X Σ0X + σ2
nI)−1
y (10)
さらに
Σ0 −
1
σ2
n
A−1
XX Σ0 = (I −
1
σ2
n
A−1
XX )Σ0
= A−1
(A −
1
σ2
n
XX )Σ0
= A−1
(
1
σ2
n
XX + Σ−1
0 −
1
σ2
n
XX )Σ0 = A−1
(11)
という式の変形より,予測分布 p(f*) の分散は
x* A−1
x* = x* (Σ0 −
1
σ2
n
A−1
XX Σ0)x* = x* Σ0x* − x* Σ0X(X Σ0X + σ2
nI)−1
X Σ0x* (12)
3
4. となります.
式 (10) と式 (12) をよく見ると,k(x, x ) = x Σ0x という記法を導入し,さらに,k(xi, xi ) を第 i 行第 i 列の要
素としてもつ行列を K と書くとともに,k(x*, xi) を第 i 要素とする縦ベクトルを k* と書くことにより,予測分布
p(f*) は
p(f*) ∼ N(k* (K + σ2
nI)−1
y, k(x*, x*) − k* (K + σ2
nI)−1
k*) (13)
と,かなりすっきり書き直せることが分かります.
ところで Σ0 は w の従うガウス分布の共分散行列でした.これは ww の期待値 E[ww ] です.よって,
k(x, x ) = x Σ0x = x E[ww ]x = E[x ww x ] = E[(w x) w x ] = E[f(x)f(x )] (14)
より,k(x, x ) は f(x)f(x ) の期待値になっています.この k(x, x ) を,共分散関数と呼びます.直感的には,異な
る入力ベクトルが与える関数値の散らばり具合を表現する関数です.なお,f(x) = w x の期待値は,w の期待値
ベクトルがゼロベクトルですので,ゼロとなります.したがって
ガウス雑音をともなう線形回帰モデルの予測分布 p(f*) は,雑音が従うガウス分布のパラメータ σn を
除けば,入力ベクトルの関数 f(x) = w x について,その関数値ふたつの積の期待値 E[f(x)f(x )] が任
意の入力ベクトルの対 x,x について計算できるならば,求められる.
と言うことができます.これを一般化すると,次のようになります.
ガウス雑音をともなう確率モデルには,その予測分布 p(f*) が,雑音が従うガウス分布のパラメータ σn
を除けば,入力ベクトルのある関数 f(x) について,その関数値ふたつを掛けた値の期待値 E[f(x)f(x )]
が任意の入力ベクトルの対 x,x について計算できるならば,求められるものがある.
関数 f(x) の期待値がゼロでない場合も考慮に入れると,実は次のようになります.
ガウス雑音をともなう確率モデルには,その予測分布 p(f*) が,雑音が従うガウス分布のパラメータ σn
を除けば,入力ベクトルのある関数 f(x) について,その関数値の期待値 m(x) = E[f(x)] が任意の入
力ベクトル x について計算でき,その関数値の期待値からのズレふたつを掛けた値の期待値 E[(f(x) −
m(x))(f(x ) − m(x))] が任意の入力ベクトルの対 x,x について計算できるならば,求められるものが
ある.
おおよそ,この表現にかなう確率過程 f(x) が,ガウス過程です.
いま f(x) のことを「確率過程」と呼びましたが,これは,f(x) が,単なる関数ではないからです.線形回帰モ
デルでは、f(x) を規定するパラメータの値が固定されてはじめて、x に対してある値を返すひとつの関数が得られ
ます。そして、そのパラメータがある確率分布に従っているということは、f(x) は、特定の関数を値としてとる確
率変数だと言えます。一般には、どの有限個をとってもそれらの結合分布が何らかの確率分布になっているような
確率変数の集まりを、確率過程と呼びます.
5 ガウス過程の定義
ガウス過程 (Gaussian process) は,正確には,次のように定義されます.
ガウス過程とは,確率変数の集まりであって,どの有限個をとっても,その結合分布がガウス分布になっ
ているようなものを,いう.
4
5. そして,ガウス過程は,期待値関数と共分散関数という,ふたつの関数によって特定されます.期待値関数を m(x),
共分散関数を k(x, x ) と書くことにします.
期待値ベクトルがゼロベクトルのガウス分布を事前分布とする線形回帰モデルは,ガウス過程のひとつの例です.
期待値関数は,m(x) = E[f(x)] = E[w x] = E[w ]x = 0 より恒等的にゼロを与える関数であり,共分散関数は,
k(x, x ) = E[(f(x) − m(x))(f(x ) − m(x))] = E[f(x)f(x )] = E[(w x) w x ] = E[x ww x ]
= x E[ww ]x = x Σ0x (15)
と得られます.
式 (10) で与えた予測分布
p(f*) ∼ N(k* (K + σ2
nI)−1
y, k(x*, x*) − k* (K + σ2
nI)−1
k*) (16)
は,以下のように,実はこのままのかたちで,一般の雑音をともなうガウス過程 y = f(x) + ε に適用できます.
既知の入力ベクトル群 x1, . . . , xn についての関数値を並べた縦ベクトルを f とします.ガウス過程の定義より,f
と予測値 f* の結合分布はガウス分布になります.ここでは,期待値関数は常にゼロを与えるものとします.そして,
共分散関数のみを考慮します.f と予測値 f* の結合分布であるガウス分布の共分散行列は (n + 1) × (n + 1) 行列で
あり,第 i 行第 i 列が k(xi, xi ) となっています.ただし,xn+1 = x* です.
さらに,ガウス雑音も考慮します.今度は,既知の入力ベクトル群 x1, . . . , xn についての出力値,つまり,関数値
に雑音が加わったものを並べた縦ベクトルを y とします.雑音がガウス分布に従うので,これら出力値の結合分布も,
ガウス分布になります.雑音の分散を σ2
n とすると,出力値の共分散行列では,第 i 行第 i 列が k(xi, xi ) + σ2
nδii
となっています.δii は i = i のとき,またそのときに限り 1 となり,残りの場合は 0 となるクロネッカのデルタで
す.このようになるのは,雑音が各関数値に独立に加わると仮定しているためです.そして,y と,予測値 f* との
結合分布もまたガウス分布となり,以下のように書くことができます.
y
f*
∼ N 0,
K + σ2
nI k*
k
*
k(x*, x*)
(17)
ただし,k* は,すべての入力ベクトル x についての k(x*, x) をエントリとする縦ベクトルです.
このガウス分布から f* の条件付き確率 p(f*|X, y, x*) を求めると,式 (16) が得られます.ガウス分布の条件付き
確率の求め方については,参考文献 [2] の 2.3.1 節に詳しい説明があります.
では,なぜ,線形回帰モデルだけで済ますことができないのでしょうか.線形回帰モデルの予測分布の分散は、
式 (8) より x
*
A−1
x* = x
*
(σ−2
n XX + Σ−1
0 )−1
x* でした.この式の中で,XX という行列は,入力ベクトルの
個数が増えるにつれて,その要素の値が増加していきます(詳しい議論は参考文献 [2] の 3.3.2 節を参照).すると,
予測分布の分散は,入力ベクトルが増えるほどゼロに近づきます.
つまり,線形回帰モデルでは,訓練データとして用いる入力ベクトルを増やせば増やすほど,予測がほぼ期待値
に一致してしまうということです.例えば,訓練データとして用いた入力ベクトルが,ある領域に集中していると
します.線形回帰モデルを使うと,その領域から遠く離れた入力ベクトルについても,分散がほとんどゼロで,ほ
ぼ期待値に一致するような予測が得られてしまいます.これは,好ましい予測とは言えません.訓練に用いた入力
ベクトルが密集している領域については分散が小さく,そこから離れた領域については分散が大きくなるような予
測のほうが,自然と言えます.これが,ガウス過程が必要となるひとつの理由です.・・・今回はここまで.
参考文献
[1] C. E. Rasmussen and C. K.I. Williams. Gaussian Processes for Machine Learning. The MIT Press, 2006.
[2] C. M. Bishop. Pattern Recognition and Machine Learning. Springer, 2006.
5