jiku log

データサイエンスの核心を掴む : 学びと発見の記録

「ベイズ最適化」を読む ~第2章 ブラックボックス関数のベイズモデリング ②ガウス過程回帰モデル~

2.2 ガウス過程回帰モデル

ベイズ最適化では,関数を近似する際にベイズモデリングを用いる。良く用いられるモデルとして,ベイズ線形回帰モデルガウス過程回帰モデルが用いられる。

関連記事

ガウス過程回帰は,森賀新・木田悠歩・須山敦志 著 「Pythonではじめるベイズ機械学習入門」を読んだ際にも出てきた話題であり,読書メモは以下にまとめた。
stern-bow.hatenablog.com

ベイズ線形回帰モデルからガウス過程回帰モデルへ

ベイズ線形回帰モデルでは,モデルパラメータ \boldsymbol{w}と基底関数 \boldsymbol{\phi}を用いて関数 fをモデル化していた。しかしこの場合,入力 xの次元や学習データの数が増えると,推定するべきモデルパラメータの数が指数関数的に増える(次元の呪い)という問題がある。


次元の呪いを回避するために,パラメータに依存しないノンパラメトリックモデリング方法を用いることが考えられる。ガウス過程回帰は,ノンパラメトリックな方法に含まれる。

モデルパラメータ \boldsymbol{w}が,多変量正規分布 \mathcal{N}(\boldsymbol{0}, \Sigma)にしたがうとする。
このとき関数値ベクトル \hat{\boldsymbol{f}} = (\boldsymbol{w}^T \boldsymbol{\phi}_1, \cdots,  \boldsymbol{w}^T \boldsymbol{\phi}_n)^T = \boldsymbol{\Phi} \boldsymbol{w} \in \mathbb{R}^nがしたがう分布は,


 \begin{align}
p(\hat{\boldsymbol{f}} | \boldsymbol{\Phi}) \sim \mathcal{N}(\boldsymbol{0}, \boldsymbol{\Phi} \boldsymbol{\Sigma} \boldsymbol{\Phi}^T)  \\
\end{align}

になる。これは,関数値ベクトル \hat{\boldsymbol{f}} が,モデルパラメータ \boldsymbol{w}の線形変換になっているからである。
また関数値ベクトル \hat{\boldsymbol{f}} がしたがう確率分布には,モデルパラメータ \boldsymbol{w}が含まれていないので,ノンパラメトリックなモデルとなっている。


この式は, n次元の関数値ベクトル  \boldsymbol{f}正規分布にしたがうという仮定を表している。また関数 f(\boldsymbol{x})ガウス過程(Gaussian process)にしたがっていることを表し,


 \begin{align}
\boldsymbol{f} \sim \mathcal{GP}(\mu, k) \\
\end{align}

と表す。ただし \muは平均関数, kは共分散関数またはカーネル関数と呼ぶ。


カーネル関数を k(\boldsymbol{x}, \boldsymbol{x}' ) = \boldsymbol{\phi} ( \boldsymbol{x} )^T \Sigma \boldsymbol{\phi} ( \boldsymbol{x} ) と表現すると,基底関数 \boldsymbol{\phi}を明示的に表さなくてもよいことが分かる。

ガウス過程の基本的な性質

カーネル関数として,ガウスカーネル  k(x, x') = \exp(-\theta | x- x'|^2)を用いると,ブラックボックス関数 fに対して,

入力[tex; x, x']が近ければ, f(x), f(x')も近い値を取る。
また入力[tex; x, x']が離れていれば, f(x), f(x')はほとんど独立であるように振舞う。

という性質をモデルに反映することが分かる。

数値実験

本書P36 図2.6を参考に,ガウス過程事前分布モデルのサンプルパスと,観測データで条件付けたガウス過程事後分布モデルのサンプルパスを描画した。
データが得られることにより,そのデータ周りでの誤差が低減されることが確認できた。

上記の分析用pythonコードはこちら。

ガウス過程モデルの推論

ベイズ線形回帰モデルの時と同様に,ガウス過程回帰モデルでも,新しい入力 \boldsymbol{x}_*が得られたときの出力 y_*を推論することに興味がある。


関数 fに対して,平均関数が0のガウス過程事前分布を仮定する。すなわち, f \sim \mathcal{GP}(0, k(\boldsymbol{x}, \boldsymbol{x}'))である。

観測誤差がない場合

 n個の入力データ \boldsymbol{x}_i, i=1, \cdots, nを用いて,関数値ベクトル \boldsymbol{f} = (f(\boldsymbol{x}_1), \cdots, f(\boldsymbol{x}_n))^Tを算出する。
このとき,新しい入力 \boldsymbol{x}_*と,これに対する関数値 f_*について,


 \begin{align}
\begin{bmatrix}
  \boldsymbol{f}  \\
   f_*
\end{bmatrix}

\sim

\mathcal{N}
\left(
\boldsymbol{0}, 

\begin{bmatrix}
  \boldsymbol{K}_n  & \boldsymbol{k}_n(\boldsymbol{x}_*)  \\
  \boldsymbol{k}_n(\boldsymbol{x}_*)^T  & k(\boldsymbol{x}_*, \boldsymbol{x}_*)
\end{bmatrix}

\right)
\end{align}

となる。ただし, \boldsymbol{K}_n K_{ij} = k(\boldsymbol{x}_i, \boldsymbol{x}_j)となるカーネル行列であり,また


 \begin{align}
\boldsymbol{k}_n(\boldsymbol{x}_*) = (k(\boldsymbol{x}_*, \boldsymbol{x}_1), \cdots, k(\boldsymbol{x}_*, \boldsymbol{x}_n)^T)  \\
\end{align}

である。

これは \boldsymbol{f} f_*の同時分布になっている。いま興味がある f_*は,条件付き確率分布 p(f_* | \boldsymbol{f})を求めればよいが,これは多変量正規分布の条件付き確率の性質を用いれば求めることができる。

観測誤差がある場合

観測誤差がある場合,すなわち y_i = f(\boldsymbol{x}_i) + \varepsilon_i, \varepsilon_i \sim \mathcal{N}(0, \sigma^2)の場合を考える。
このとき, \boldsymbol{y} = (y_1, \cdots, y_n)^Tについて,


 \begin{align}
\boldsymbol{y} \sim \mathcal{N}(\boldsymbol{0}, \boldsymbol{K}_n + \sigma^2 I_n) \\
\end{align}

となるので,


 \begin{align}
\begin{bmatrix}
  \boldsymbol{y}  \\
   f_*
\end{bmatrix}

\sim

\mathcal{N}
\left(
\boldsymbol{0}, 

\begin{bmatrix}
  \boldsymbol{K}_n + \sigma^2 I_n  & \boldsymbol{k}_n(\boldsymbol{x}_*)  \\
  \boldsymbol{k}_n(\boldsymbol{x}_*)^T  & k(\boldsymbol{x}_*, \boldsymbol{x}_*)
\end{bmatrix}

\right)
\end{align}

となる。

ガウス過程の平均関数

ベイズ最適化の文脈では,ガウス過程の平均関数 \muの設定方法はあまり大きな問題にはならない。
これは,

  • ベイズ最適化では,分散の方に興味がある。
  • 0でない平均関数 \muを設定して f_*の事後分布を計算しても,分散には平均関数が含まれない。

ためである。
そのためベイズ最適化では,平均関数には定数0が置かれることが多い。

カーネル関数のハイパーパラメータ

ガウスカーネル k(x, x') = \exp(-\theta | x- x'|^2)に含まれるハイパーパラメータ \thetaを最適化するためには,周辺尤度最大化法を用いる。
すなわちブラックボックス関数 fを周辺化によって積分消去し,この周辺尤度を \thetaについて最大化する。
詳細は,本書の第3章に紹介されている。

まとめと感想

今回は,「第2章 ブラックボックス関数のベイズモデリング」のうち, ガウス過程回帰モデルについて学んだ。

ベイズ線形回帰もガウス過程回帰も,モデルの分散を表現することができるためベイズ最適化に用いることができる。ただしガウス過程回帰の場合,ベイズ線形回帰の際に問題になる次元の呪いが回避できるノンパラメトリックモデルになっているため,計算がしやすくなるという特徴があることが理解できた。

またカーネル関数によってモデルの柔軟さも考慮できるので,この点においてもガウス過程回帰の方が有利であると感じた。


本記事を最後まで読んでくださり,どうもありがとうございました。