最尤推定 確率分布をもったトレーニングデータの学習
[mathjax] 前回までのエントリでトレーニングデータからパラメトリック曲線とそのパラメタの導出方法を書いた。 観測点(xn,tn)の背景にあるパラメトリック曲線を求める パラメタの評価式を決定する 評価式の値が最良になるようにパラメタを決定する 実際にはトレーニングデータはパラメトリック曲線から発生したデータではなく、パラメトリック曲線はあくまでトレーニングデータとの最小二乗誤差が最小になる曲線に過ぎない。 未知のサンプルデータの特徴をよりうまく含む方法を考える。 実際のサンプルデータが、トレーニングデータから導出したパラメトリック曲線から±σの誤差を持つデータであると仮定することで、サンプルデータの特徴を確率的に捉えることができる。これによりサンプルデータが「どれ位の範囲で当てはまるか」を推定できるようになる。 ITエンジニアのための機械学習理論入門posted with amazlet at 17.03.10中井 悦司 技術評論社 売り上げランキング: 8,130Amazon.co.jpで詳細を見る 正規分布の確率密度とパラメトリック曲線 統計・確率の基本中の基本、正規分布の確率密度。データxの発生頻度の平均がµ、分散がσ2である場合の確率密度は次の関数で与えられる。 $$ N(x|mu,sigma^2)=frac{1}{sqrt{2pisigma^2}}e^{-frac{1}{2sigma^2}(x-mu)^2} $$ で、今、M次多項式を考えている。 $$ begin{eqnarray} f(x) &=& w_0 + w_1x + cdots + w_Mx^M &=& sum_{m=0}^M w_mx^m end{eqnarray} $$ サンプルデータxnに対し観測値tがf(xm)を中心として±σ散らばることを考えると、tはfn,σ2から決まる式となる。 $$ begin{eqnarray} N(t|f(x_n),sigma^2)= frac{1}{sqrt{2pisigma^2}}e^{-frac{1}{2sigma^2}{(t-f(x_n))}^2} end{eqnarray} $$ トレーニングデータからパラメータを決定する 未知のサンプルデータ(xn,t)ではなく、トレーニングデータ(xn,tn)を代入すると、 $$ begin{eqnarray} N(t_n|f(x_n),sigma^2)= frac{1}{sqrt{2pisigma^2}}e^{-frac{1}{2sigma^2}{(t_n-f(x_n))}^2} end{eqnarray} $$ である。このモデルからトレーニングデータ(x0,t0)が得られる確率P0は以下の通り求まる。 $$ begin{eqnarray} P = frac{1}{sqrt{2pisigma^2}}e^{-frac{1}{2sigma^2}{t_0-f(x_0)}^2} end{eqnarray} $$ ここで、このモデルから全てのトレーニングデータ{(xn,tn)}n=1Nのデータが得られる確率Pは条件付き確率として以下の通り求まる。このPを尤度関数という。 $$ begin{eqnarray} P &=& N(t_1|f(x_1),sigma^2) N(t_2|f(x_2),sigma^2) cdots N(t_n|f(x_n),sigma^2) \\ &=& prod_{n=1}^N N(t_n|f(x_n),sigma^2) end{eqnarray} $$ f(xn)は係数行列wが未決定であり、分散σ2も未決定である。Pを最大化するようにf(xn)=wとσ2を決定する。積を分解して整理すると、 $$ begin{eqnarray} P &=& prod_{n=1}^N frac{1}{sqrt{2pisigma^2}}e^{-frac{1}{2sigma^2}{t_n-f(x_n)}^2} \\ &=& bigl(frac{1}{2pisigma^2}bigr)^{frac{2}{N}}expBigl[-frac{1}{2sigma^2}sum_{n=1}^N { t_n-f(x_n) }^2 Bigr] end{eqnarray} $$ ここで、尤度関数に二乗誤差EDが現れるので、EDで置き換える。 $$ begin{eqnarray} E_D &=& frac{1}{2} sum_{n=1}^N{f(x_n)-t_n}^2 P &=& Bigl( frac{1}{2pisigma^2} Bigr)^{frac{N}{n}} e^{-frac{1}{sigma^2}E_D} end{eqnarray} $$ 尤度関数がσとwから決まる2変数関数であることを明確にするため、σ^2の逆数をβとし、二乗誤差EDが係数wから決まることを明確とするためED=ED(w)とする。 $$ P(beta,w) = bigl( frac{beta}{2pi} bigr)^{frac{N}{2}} e^{-beta E_D(w)} $$ 両辺に自然対数を取る。Pが最大になることとPの自然対数が最大になることは同じ。 $$ begin{eqnarray} ln{P(beta,w)} &=& ln{bigl( frac{beta}{2pi} bigr)^{frac{N}{2}} e^{-beta E_D(w)}} \\ &=& frac{N}{2}ln{beta}-frac{N}{2}ln{2pi}-beta E_D(w) end{eqnarray} $$ 単調増加関数が最大になる条件は微分した値が0になること。2変数の単調増加関数が最大になる条件は、それぞれの変数で偏微分した値が0になること。つまり、 $$ begin{eqnarray} frac{partial (ln{P})}{partial w_m} &=& 0 \\ frac{partial (ln{P})}{partial beta} &=& 0 end{eqnarray} $$ まず、wの偏微分。EDw項以外は定数になるから、 $$ begin{eqnarray} frac{partial E_D}{partial w_m} = 0 \\ end{eqnarray} $$ パラメトリックモデルに確率密度関数の誤差を含まない最小二乗法における二乗誤差を最小にする条件と同じとなる。つまり、トレーニングデータ{xn}n=0N},{t1,...,tN}から求まる。 $$ begin{eqnarray} w = bigl(Phi^TPhibigr)^-1Phi^T t end{eqnarray} $$ 次に、βの偏微分。β項以外は定数になる。対数の微分は、(logx)\'=1/x だから、 $$ begin{eqnarray} frac{partial P(beta,w)}{partial beta} &=& 0 \\ frac{N}{2} frac{1}{beta} - E_D(w) &=& 0 \\ frac{1}{beta} &=& frac{2E_D}{N} end{eqnarray} $$ ここで、以下としてしたから、 $$ beta = frac{1}{sigma^2} $$ 式変形すると、なんとσと、最小二乗法でパラメトリックモデルの次数Mを評価したときの、モデルとサンプルとの差(平方根平均二乗誤差)ERMSと同じになる。 $$ sigma = sqrt{frac{1}{beta}} = sqrt{frac{2E_D}{N}} = E_{RMS} $$ つまり... 最初に戻ると、トレーニングデータ{xn}が与えられたとき、トレーニングデータがM次多項式f(x)から±σの範囲にバラついていると仮定した場合、モデルから{tn}が得られる確率は、2つのパラメタw,σの関数として以下のように決まる。 $$ begin{eqnarray} N(t_n|f(x_n),sigma^2)= frac{1}{sqrt{2pisigma^2}}e^{-frac{1}{2sigma^2}{(t_n-f(x_n))}^2} end{eqnarray} $$ 全てのトレーニングデータがこのモデルから得られる条件付き確率(尤度関数)は条件付き確率により定まり、尤度関数の最大化問題を解くことで2つのパラメタw,σを得られる。 wは、モデルに含まれる正規分布に従う誤差を含まないで作成したモデルの場合と同じ方法で求められる。また、σはそのモデルとの誤差評価値ERMSと同じである。 最尤推定法は最小二乗法を一般化した話だった、というか最小二乗法がサンプルデータの生起確率が正規分布を前提としていた、という話。 ともかく、トレーニングデータから確率変数付きパラメトリックモデルを立てて、パラメタを確率の最大化問題として解くことを最尤推定という。 サンプルデータの生起確率が正規分布に従う例がわかりやすい。より一般的に、観測した事象から確率的モデルを立てることは統計的なモデル化の王道らしく、そこから派生している機械学習アルゴリズムでも頻出であるようだ。