機械学習に詳しくなりたいブログ

機械学習や数学について勉強した内容を中心に書きます。100%趣味です。記事は数学的に厳密でなかったり誤りを含んでいるかもしれません。ご指摘頂ければ幸いです。

ガウス過程による回帰(1)

概要

以下の記事で線形回帰においてyの事前分布はカーネル関数を使って表すことができ、そしてガウス過程となっていることを確認しました。

www.iwanttobeacat.com

今回は、ガウス過程を使って回帰問題を考えます。つまり、訓練データをもとに新たな入力に対する予測値をガウス過程を使って考えていきます。

ガウス過程による回帰

線形回帰では、係数\mathbf wを最小二乗法や最尤推定で求めたり、係数の事前分布を設定してMAP推定しましたが、ガウス過程のモデルでは係数\mathbf wが式から消されており存在しません。ガウス過程で見たように、\mathbf y\mathbf xのカーネル関数から求められるガウス過程でした。ここで、新たな入力\mathbf{x}_{N+1}を加えたとしても、\mathbf yはやはりガウス過程に従うはずです。このことを使って新たな入力に対する予測値を求めていきます。

訓練データtには、理論値yに誤差\epsilonが加わっているとすると


t_n = y_n + \epsilon_n \tag{1}

です。ここで誤差\epsilonN(\epsilon|0,\beta^{-1})の正規分布に従うとすれば


p(t_n|y_n) = N(t_n|y_n, \beta^{-1}) \tag{2}

と書けます。n=1,\cdots,Nのデータをまとめて表せば、各誤差は互いに独立ですから


p(\mathbf{t}|\mathbf{y}) = N(\mathbf{t}|\mathbf{y}, \beta^{-1}\mathbf{I}) \tag{3}

となります。なおここでp(\mathbf{y})ガウス過程で確認したように、


p(\mathbf{y}) = N(\mathbf{y}|\mathbf{0}, \mathbf{K}) \tag{4}

です。(\alphaの定数倍はカーネル関数の中に含まれているとします。)

さて、線形回帰をベイズ推定で解く(1)予測分布の導出でも使いましたが、正規分布に対する以下の公式を使います。


\begin{eqnarray*}
p(\mathbf x) &=& N(\mathbf x | \mathbf \mu, \Lambda^{-1}) \tag{5} \\
p(\mathbf y | \mathbf x) &=& N(\mathbf y | \mathbf A \mathbf x + \mathbf b, \mathbf{L}^{-1}) \tag{6}
\end{eqnarray*}

であるとき、


p(\mathbf y) = N(\mathbf y | \mathbf A \mathbf \mu + \mathbf b , \mathbf{L}^{-1} + \mathbf A \mathbf \Lambda^{-1} \mathbf A^{T}) \tag{7}

\mathbf{\Lambda}^{-1}=\mathbf{K}\mathbf{\mu} = \mathbf{0}\mathbf{A}=\mathbf{I}\mathbf{b}=\mathbf{0}\mathbf{L}^{-1}=\beta^{-1}\mathbf{I}に対応させれば、式(3)と式(4)より


p(\mathbf{t}) = N(\mathbf{t} | \mathbf{0}, \mathbf{C}_N) \tag{8}

となり、これで訓練データの分布がわかりました。ここで\mathbf{C}_N\beta^{-1}\mathbf{I}+\mathbf{K}です。\mathbf{y}の分散が\mathbf{K}で、誤差の分散が\beta^{-1} \mathbf{I}でしたから、\mathbf{y}\epsilonの和である\mathbf{t}の分散が\beta^{-1}\mathbf{I}+\mathbf{K}となるのは、分散の加法性からも明らかです。

さて、回帰分析の目的は、訓練データが得られたあと、新たな入力\mathbf{x}_{N+1}に対するt_{N+1}を予測することです。つまりp(t_{N+1}|\mathbf t)を求めることです。これを求めるためにまずp(t_{N+1},\mathbf{t})を計算します。*1

p(t_{N+1},\mathbf{t})は、n=1,\cdots,N+1のデータをまとめて考え、式(3)以降と同様の計算より、


p(t_{N+1},\mathbf{t}) = N(t_{N+1},\mathbf{t} | \mathbf{0}, \mathbf{C}_{N+1}) \tag{9}

となります。ここで


  \mathbf{C}_{N+1} = \left(
    \begin{array}{cc}
      \mathbf{C}_{N} & \mathbf{k}  \\
      \mathbf{k}^{T} & c  \\
    \end{array}
  \right) \tag{10}


\mathbf{k} = ( k(\mathbf{x_{1}},\mathbf{x_{N+1}}) , \cdots ,  k(\mathbf{x_{N}},\mathbf{x_{N+1}}))^{T} \tag{11}


c = k(\mathbf{x_{N+1}},\mathbf{x_{N+1}}) + \beta^{-1} \tag{12}

です。ぱっと見、式を追うのが面倒ですが、以下のように、\mathbf C_{N+1}を分けて考えれば、式(10)~式(12)の通りであることがわかります。

冒頭で書いた「新たな入力\mathbf{x}_{N+1}を加えたとしても、\mathbf yはやはりガウス過程に従うはず」ということからp(t_{N+1},\mathbf{t})を求めることができました。

さて、条件付き確率の定義より


\displaystyle p(t_{N+1}| \mathbf{t}) = \frac{p(t_{N+1},\mathbf{t})}{p(\mathbf{t})} \tag{13}

ですので、ここからp(t_{N+1}|\mathbf{t})を計算していきます。

予測値の導出計算は、以下の記事に続きます。 www.iwanttobeacat.com

最終的なガウス過程による回帰の実験結果は以下です。

www.iwanttobeacat.com

*1:参考書に倣い、表記の単純化のため\mathbf{x}\mathbf{x}_{N+1}の条件は省略しています