線形回帰をMAP推定で解きます。MAPとは、Maximum a posteriori:最大事後確率の略です。モデルのパラメータがある分布に従って生起するとして事前分布を設定します。そして得られた訓練データとベイズの定理を用いて、設定した事前分布からの事後分布を求めます。そしてこの事後分布から、最も生起する確率が高いを求める解として採用します。
図で書くとこのようなイメージです。設定したの青色の事前分布と訓練データによって、緑色のような事後分布が得られたとします。そしてこの分布において最も確率の高い値を解とします。最小二乗法において、過学習が起きるときはパラメータの値が大きい傾向にありました。そういう値をとる確率は低い、という事前分布を与えておけば過学習抑制の効果が期待できます。
MAP推定で解を求める手順
- 係数の事前分布を設定する。
- 与えられた訓練データにより、ベイズの定理を使って係数の事後分布が定まる
- 事後分布の最大値(MAP:最大事後確率)をの値として採用する
- 新たな入力に対する予測値が求まる
パラメータの事前分布をとすれば、訓練データが与えられたときの事後分布はベイズの定理
より
と書けます。訓練データには真値に平均0、分散の正規分布に従う誤差が加わっていると仮定すれば、尤度は、
です。(ここでは最小二乗法の解の導出の式(4)を参照ください)なぜ尤度がこう書けるか?わかっている人にはすごくクドい話になりますが、僕は悩んでしまったので説明します。まず尤度という解釈はさておき、の意味を考えます。これはが与えられたときのの確率分布です。は真の値からの誤差が加わっていると仮定してます。つまり
です。は訓練データのことですから観測済みの値です。そしてはの条件に入っています。よっては揺らがない値、つまり定数になります。そしてはの誤差でした。ですから、は正規分布に従うはずです。よって式(3)のように書けます。で、これはの確率密度関数ではなくの関数とみなしたときに尤度として解釈できます。(観測済みの値がなぜ確率密度関数の式で書けるのか?で少し悩みました。確率密度関数ではなく尤度として解釈すべきなんですね、、、。*1
さて、事前分布を平均、共分散の多変量正規分布と設定すれば、
と書けます。*2 よって式(3)(5)を式(2)に代入すれば、事後分布は、
となります。式(2)における分母や、式(3)(5)における定数倍項は解に影響しないため省略しています。
さて、式(6)を解いていくのですが、長くなるので導出はこちらで書きました。 www.iwanttobeacat.com
今回は結果だけ。
式(8)のが事後分布を最大化する解になります。
ここでの事前分布を、平均、共分散、つまり各パラメータ間に相関はなく、全て等しい分散であると仮定してみます。式(8)に式(7)をかけて、の項を消せば、
となります。両辺にをかけて、とおけば、
となり、式(13)は正則化最小二乗法で求めた式と全く同じになります。
最小二乗法ではの取りうる全ての範囲で最適解を探してしまうため過学習が発生します。これに対して正則化項を加えることで、の解に制約条件を課すことができ過学習が防ぐことができました。今回の事前分布を導入することは、その意味からも明らかですが、制約条件を課していることとなり、分散が等方的であるなど特別な条件下においてはMAP推定は正則化最小二乗法と等価になります。
、、、ということで一応コードも書いて実験してみましたが、正則化最小二乗法と同じなので今回は省略します。事前分布の分散を非常に大きな値に設定すると過学習がやっぱり起きるよねっていう確認をしたくらい。