線形回帰モデルにおける次元の呪いとガウス過程(3.1、3.2)|『ガウス過程と機械学習』読解メモ #2

f:id:lib-arts:20190513194548p:plain

最近購入した『ガウス過程と機械学習』ですが読んでいて面白いので読解メモをまとめていきます。

ガウス過程と機械学習 | 書籍情報 | 株式会社 講談社サイエンティフィク
#1ではCh.1とCh.2の内容を元に事前知識の整理を行いました。

#2ではCh.3の3.1と3.2を取り扱います。(本のメイントピックのため、Ch.3はじっくりと取り扱っていきます)
以下目次になります。

1. 線形回帰モデルと次元の呪い(Section 3.1)
2. ガウス過程(Section 3.2)
3. まとめ


1. 線形回帰モデルと次元の呪い(Section 3.1)
1節では該当本のSection_3.1について取り扱っていきます。Section_3.1では線形回帰モデルについて再度言及した上で、例として多項式をベースとする数式をxx^2などを基底関数とおくことで特徴ベクトルφ(x)=(1,x,x^2,x^3)^Tを考えて線形回帰モデル
y=w_{0}+w_{1}x+w_{2}x^2+w_{3}x^3=\mathbf{w}^Tφ
と表すことができます。ここで\mathbf{w}=(w_{0},w_{1},w_{2},w_{3})^Tで定義しています。このように基底関数を設定することで、様々な関数を表すことができます。
ここで今回は基底関数に着目します。この基底関数は前述のように多項式を用いて構築することが可能なのと同様に、下記のようなガウス分布の形をした基底関数を用いても表現できます。
φ(x)_{h}=exp(-\frac{(x-μ_{h})^2}{σ^2})
この式においてμ_{h}は-H,..-1,0,1,2,...,Hまでの値を表すとするとこれを重みw_{h}で適当に重みづけて、
y=\sum_{h=-H}^{H}w_{h}exp(-\frac{(x-μ_{h})^2}{σ^2})
のように表すことで任意の関数が表せるのではないかと考えることができます。この関数を動径基底関数(radial basis function)と呼んでいます。
ここで上記の関数を取り扱うにあたっては、xの次元が大きくなると次元の呪い(curse of dimensionality)が発生するため、注意が必要とされています。この次元の呪いをどのように取り扱うかというのが、この後の話に繋がってきます。


2. ガウス過程(Section 3.2)
2節では該当本のSection_3.2について取り扱っていきます。
\mathbf{x}が高次元であっても柔軟な回帰のモデルを実現するにあたっての解決法として、線形回帰モデルのパラメータ\mathbf{w}について期待値をとってモデルから積分消去してしまうことが挙げられています。この辺の議論は式(3.10)〜(3.14)にかけて行われています。
定義3.1の『ガウス過程の定義』については少し導入が唐突な気もしますが、

どんなN個の入力の集合\mathbf{x}=(x_{1},x_{2},...,x_{N})についても、対応する出力\mathbf{y}=(y_{1},y_{2},...,y_{N})の同時分布p(\mathbf{y})が多変量ガウス分布に従うとき、\mathbf{x}\mathbf{y}の関係はガウス過程(Gaussian process)に従う

とされています。過程とついているのは確率過程(stochastic process)の一種であるからだとされており、\mathbf{x}=(x_{1},x_{2},...,x_{N})に対応する確率変数の集合\mathbf{y}=(y_{1},y_{2},...,y_{N})に同時分布のp(y_{1},y_{2},...,y_{N})を与える確率モデルのことであるとされています。
ここで\mathbf{x}=(x_{1},x_{2},...,x_{N})に時間tを用いた時系列に対する理論として生まれたために「過程(Process)」という名前がついていますが、\mathbf{x}=(x_{1},x_{2},...,x_{N})に時間が関係なくても理論は同様に成り立つとされています。
続くSection_3.2.1では(3.14)の共分散行列として
\mathbf{y}=λ^2\Phi\Phi^T (3.15)
と定めています。これは、本文中で(3.16)で表されるように、
K_{nn'}=λ^2\phi(x_{n})^T\phi(x_{n'})
となっているので、x_{n}x_{n'}が大きくなれば上記の共分散も大きくなり、y_{n}y_{n'}が似たような値を持つことを意味しています。
また、公式3.3で平均0のガウス過程を定義しています。

公式_3.3
\mathbf{y}N(0,\mathbf{K})

次の3.2.2では特徴ベクトルの\phi(\mathbf{x})を明示的に表現しないでカーネル関数を計算を行うカーネルトリック(kernel trick)について説明されています。

3.2.3では定義3.1の再定義として、下記の定義3.4が導入されています。

どんな自然数Nについても、入力\mathbf{x}に対応する出力のベクトル
\mathbf{f}=(f(x_{1}),f(x_{2}),...,f(x_{N}))
が平均\mathbf{\mu}=(\mu(x_{1}),\mu(x_{2}),...,\mu(x_{N}))K_{nn'}=k(x_{n},x_{n'})を要素とする行列\mathbf{K}を共分散行列とするガウス分布N(\mathbf{\mu},\mathbf{K})に従う時、fガウス過程に従うと言い、これを
fGP(\mu(x),k(x,x'))
と書きます。

次に3.2.4ではガウス過程からのサンプルということで、(3.26)式のような動径基底関数(RBF; radial basis function)カーネルを導入して、ランダムにサンプル\mathbf{f}を生成しています。
この時生成される回帰関数は複雑で、少数のパラメータを用いた線形回帰モデルのような従来のパラメトリックなモデルではなかなか得られないものだとされています。


3. まとめ
#2では本の3.1と3.2について取り扱いました。3.2の内容がなかなか重たい内容でしたが、共分散行列をカーネル関数で求めてそれを元にサンプリングを行うということを意識していれば理解できそうです。
#3では3.3以降について取り扱っていきます。