底辺大学の院生がプログラミングや機械学習を勉強するブログ

勉強していることを雑にまとめるブログ。当然、正しさの保証は一切しない。

3.3 ベイズ線形回帰

昨日は線形基底関数モデルを用いて回帰を行った。
telltale.hatenablog.com


今日は同じ回帰問題をベイズ的アプローチで解くベイズ線形回帰について勉強する。

ベイズ線形回帰

ベイズ的なアプローチの最終目標は、 {\bf t}を観測した条件の下での {\bf w}の分布 p({\bf w|t})を得ることだ。

そのために、 {\bf w}の事前分布 p({\bf w})と、尤度関数 p({\bf t|w})を求め、ベイズの定理を用いて p({\bf w|t})を評価するとよいことは過去に学んだ通りだ。

例のために、事前分布と尤度関数がともにガウス分布で与えられる場合を考える。

 p({\bf w}) = \mathcal{N}({\bf w}|{\bf m}_0,{\bf S}_0)

 p({\bf t|X,w},\beta) = \mathcal{N}(t_n|{\bf w}^T{\bf \phi}({\bf x}_n),\beta^{-1})

尤度関数については昨日出てきたものと同じものを使用している。


事後分布は2つの分布の積を正規化したものであり、共役なガウス事前分布を用いているため事後分布もガウス分布になる。

よって、積をガウス型に変形し平均と共分散行列を整理すると、

 p({\bf w|t}) = \mathcal{N}({\bf w}|{\bf m}_N,{\bf S}_N)

 {\bf m}_N = {\bf S}_N({\bf S}_0^{-1}{\bf m}_0+\beta{\bf \Phi}^T{\bf t})
 {\bf S}_N^{-1} = {\bf S}_0^{-1} + \beta{\bf \Phi}^T{\bf \Phi}


が得られる。

この事後分布の対数を取ること、

 \ln p({\bf w|t}) = \frac{\beta}{2}\sum_{n=1}^N\{t_n-{\bf w}^T{\bf \phi}({\bf x}_n)\}^2 - \frac{\alpha}{2}{\bf w}^T{\bf w} + {\rm const}

が得られる。

第一項は二乗和誤差関数を、第二項は正則化項を意味している。

線形基底関数モデルのときは二乗和誤差関数のみで {\bf w}を評価していた。
そのため、過学習の発生が問題となっていた。

一方で、ベイズの枠組みでは正規化項についても評価する。
これは1.1節で述べられていた、誤差関数に正規化項を付与することで過学習を回避するという方法に対応している。

これが、線形基底関数モデルとベイズ線形回帰との違いである。

数値計算

図3.7の想定と全く同じ仮定のもとで事後分布 p({\bf w|t})を得た。

下はその分布から生成した w_0, w_1を、Nを1から10まで増やしていった時の様子を表している。
プロット数は1000個で固定している。

f:id:telltales:20160730163812g:plain

はじめは式(3.52)で与えられる等方的ガウス分布だが、Nが増加するごとに平均が解に近づき、分散が小さくなる様子が見て取れる。