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

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

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

ガウス過程の続きです。ガウス過程では線形回帰において理論値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{x}_{N+1},\mathbf{x},\mathbf{t})を求めることです。p(t_{N+1}|\mathbf{x}_{N+1},\mathbf{x},\mathbf{t})を求めるためにまずはp(t_{N+1},\mathbf{t}|\mathbf{x}_{N+1},\mathbf{x})を計算します。前者は訓練データと新たな入力\mathbf{x}_{N+1}が与えられた条件下における観測値t_{N+1}の確率分布です。後者はN+1までの入力が与えられた条件下における\mathbf{t}t_{N+1}の同時確率です。なお参考書に倣い、以降は表記の単純化のため\mathbf{x}\mathbf{x}_{N+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}

です。式(5)~(7)の公式を使っても良いですし、データがN+1まであるとき、\mathbf{K}_{N+1}N+1N+1列目の項がk(\mathbf{x_{N+1}},\mathbf{x_{N+1}})で、N+1行目、N+1列目の成分が式(11)の最後にk(\mathbf{x_{N+1}},\mathbf{x_{N+1}})を加えたものであり、誤差は\beta^{-1}\mathbf{I}_{N+1}ですから、分散の加法性より共分散行列が式(10)となることがわかります。

そして条件付き確率の定義より


\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})を計算していきます。続きは次回:ガウス過程による回帰(2)