jiku log

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

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

2.1 ベイズ線形回帰モデル

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

関連記事

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

線形回帰モデルの尤度

ベイズ線形回帰では,はじめに線形回帰モデルを尤度関数の形で表す。

線形回帰モデルは,


 \begin{align}
y_i &= \boldsymbol{w}^T \boldsymbol{\phi} (\boldsymbol{x}_i) + \varepsilon_i \\ \\
\varepsilon &\sim \mathcal{N}(0, \sigma^2) \\
\end{align}

と表す。ただし, \phiは基底関数である。

上式を確率分布の形で表すと,


 \begin{align}
y_i \sim p(y_i | \boldsymbol{\phi} (\boldsymbol{x}_i), \boldsymbol{w}) = \mathcal{N}(\boldsymbol{w}^T \boldsymbol{\phi} (\boldsymbol{x}_i), \sigma^2) \\
\end{align}

となる。

 n個の観測データ \mathcal{D}_nが得られた時の尤度は,


 \begin{align}
p(\boldsymbol{y} | \boldsymbol{X}, \boldsymbol{w}, \sigma) = \frac{1}{ (\sqrt{2 \pi} \sigma)^n } \exp  \left\{ -\frac{1}{2 \sigma^2}  || \boldsymbol{y} - \boldsymbol{\Phi} \boldsymbol{w} || ^2 \right\} \\

\end{align}

となる。

ベイズ線形回帰モデル

ベイズ線形回帰モデルは,モデルパラメータ \boldsymbol{w}に確率分布を設定したモデルである。ベイズ線形回帰モデルにおいて興味があることは,主に以下の2つである。

  1. 学習データから,モデルパラメータ \boldsymbol{w}の事後分布を推定する
  2. 新しい入力 \boldsymbol{x}_*が得られたときに,学習結果を用いて出力 y_*の予測分布を算出する

である。

2.について,予測分布のグラフィカルモデルは以下の通りである。


予測分布は,以下の式で表される。


 \begin{align}
p(y_* | \boldsymbol{\Phi}, \boldsymbol{y}, \boldsymbol{x}_*) = \int p(y_* | \boldsymbol{\phi}(\boldsymbol{x}_*), \boldsymbol{w})  p(\boldsymbol{w} | \boldsymbol{\Phi}, \boldsymbol{y}) d \boldsymbol{w} \\
\end{align}

この式は,左辺を \boldsymbol{w}を加えて同時分布にして, \boldsymbol{w}積分消去することで得られるが,各項を分解して考えると意味が理解しやすい。

  1. モデルパラメータの事後分布  p(\boldsymbol{w} | \boldsymbol{\Phi}, \boldsymbol{y}) から,乱数 \boldsymbol{w}を生成(サンプリング)する。
  2. この \boldsymbol{w}を回帰係数とした線形モデルを構築し, p(y_* | \boldsymbol{\phi}(\boldsymbol{x}_*), \boldsymbol{w})を算出する。
  3. 上記2つのステップを複数回繰り返して,平均化する。

尤度やモデルパラメータがしたがう分布が正規分布であれば,予測分布も正規分布になる。

数値実験

本書P30 図2.4を参考に,ベイズ線形回帰モデルを実装した。

真の関数を y = x - 0.5として,観測ノイズを加えた30点のデータを学習用データとした。
学習用データを全く与えない場合(事前分布に相当)と,学習用データを5点サンプルして与えた場合と,学習用データを30点すべて用いた場合で,事後分布と回帰直線を作成した。

  • 左上は,モデルパラメータ(切片 :  w_0,傾き :  w_1)に学習用データの情報が含まれないので,どちらも平均が0になっている。
  • 左下は,事前分布が生成するモデルパラメータである。平均0,分散共分散行列が \mathrm{diag}(1, 1)の多変量正規分布にしたがう値がモデルパラメータになっているので,傾きが負になっているものも存在する。
  • 中上は,学習用データを5点サンプルして与えた場合のモデルパラメータの事後分布である。分散共分散行列の楕円が事前分布よりは小さくなっている。
  • 中下は,学習用データを5点サンプルして与えた場合のモデルパラメータの事後分布から得られたモデルパラメータを用いて作成した回帰直線である。
  • 右上は,学習用データ30点をすべて用いた場合のモデルパラメータの事後分布である。分散共分散行列の楕円がさらに小さくなり,値が絞られていることが確認できる。
  • 右下は,学習用データ30点をすべて用いた場合のモデルパラメータの事後分布から得られたモデルパラメータを用いて作成した回帰直線である。

学習用データのサンプル数が増えるほど,事後分布の分散が小さくなっていることが確認できる。


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

まとめと感想

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

ベイズ最適化においては,サンプル数とモデルの分散の関係が重要になってくると考えられるが,ベイズ線形回帰モデルは,学習用データのサンプル数が増えるとモデルパラメータの分散が小さくなるので,ベイズ最適化のモデルとして用いられることには納得感があった。

次項はガウス過程回帰であるが,モデルの柔軟性などについて比較してみたい。


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