統計的推定
確率分布 を学んだところで,ただ分布型が分かっただけでは大抵,なんの役にも立ちません.実世界で統計を使っていく上で重要なのは,あるデータ群が形成する分布の種類を特定する事ではありません.
重要なのは,その分布の平均や分散です.クラスのテスト成績が正規分布に従う事を知っていても,肝心の平均点などが分からないと学生は喜んでいいのか落ち込むべきなのか分からないし,教員も授業内容の補修をするべきかもっと踏み込んだ議論をするべきか分かりません.
という事で,母集団の確率分布を規定する ``母数’‘を推定したくなります.母数は,たとえば母平均や母分散といった量があります.母平均の推定はわりとよくやっていますね.
あるクラスでてきとうに選んだ5人の点数$(X_1,X_2…X_5)$があれば,彼らの平均からクラス全体の平均を推定しようとするでしょう.これが母数の推定です.
\[\begin{align} \hat \mu = (X_1 + X_2 + ... X_5)/5 \end{align}\]この式では,母平均 $(\mu)$ の推定を行っています.$\mu$ の上についている $\hat \mu$ は推定値である事を意味します.当然,母集団全てを加算平均してだした $\hat \mu$ は $\mu$ と同じ値になります.しかし現実には母集団全てを観測し計算するなど不可能なことが多いため,その一部のみを使ってうまく母数に近づけた推定値を求めていく必要があります.
あるいは,統計的ないわゆる○○分布ではないけれどもなんらかの関数で説明できるような変化,分布も多くあります.これらを説明する際に,多項式曲線を使ってフィッティングしていったりするのですが,この際にもやはりこのモデルの形を定めるパラメータの適切な値を推定したくなります.
こうした量を推定していく方法を勉強していきましょう.
点推定と区間推定
母数の推定値を求める際に,方法が大きく分けて2種類あります.それが点推定と区間推定です.簡単ですが一応.点推定は先程の式のように母数をある一つの値 $\hat \theta$ で指定する方法を指します.なおここで $\theta$ は母数を表す一般化記号で,実際には $\mu, \sigma$ などがあてはまります.
単一の点で推定をする以上,どうしても実際の母数との誤差が生じます.そのため,この誤差を最小化していきたいというのが点推定の主なモチベーションです.
区間推定は,点推定と異なり推定に幅を持たせる方法です.たとえば,A 組のテストの平均点は 50-60 点の間で,56 くらいの可能性がめっちゃ高い.などといった推定です.
最尤推定
まずは点推定のうち,頻度主義でよく使われる最尤推定を考えます.そのために,まずはベイズの時に出てきていた尤度についてもう少し考えます.尤度は何もベイズ主義の用語ではありません.頻度主義でもよく使うもので,結局ベイズと頻度とのちがいは何かというと事前分布を用いるかの方にあります.
で,尤度ですが,事前確率を評価しているという風に言っていましたが推定の枠組みで考え直します.推定は分布の母数だったり,あるいはより複雑な多項式曲線フィッティングのパラメータだったりするので,こいつらを確率変数ベクトル $\mathbf{w}$ とします.たとえば $\mathbf{w} = [\mu, \quad \sigma]$ とかです.
観測データをDでおくと,ベイズの定理は以下の形を取ります.
\[\begin{align} p(\mathbf{w}|D) = \frac{p(D|\mathbf{w})p(\mathbf{w})}{p(D)} \end{align}\]ここで,尤度 $p(D | \mathbf{w})$ について考えるとデータ集合 D に対するベクトル $\mathbf{w}$ による評価関数と捉えられます.事前分布を更新するという話の時と同様です.例のごとく $p(D)$ は正規化しているだけなのでどうでもいいです. |
さて,最尤推定ですが,読んで字のごとく尤度を最適化する推定方法です.尤度はパラメータベクトルの元での,得られたデータの尤もらしさを評価する関数なので,これを最大化する事で最も尤もらしいパラメータの推定値,最尤推定値を求める手法です.実際に例を考えながら説明してみます.
ある研究室(A)に所属する学振特別研究員の数を推定したいとします.学生(S)の数は5人にしておきましょう.推定したいパラメータ(DC研究員数)をiとします.そうすると
\[\begin{align} p(S=DC | i) = \frac{i}{5}\\ p(S=凡人|i) = \frac{5-i}{5} \end{align}\]と尤度を仮定できます.最尤推定の基本は,尤度が最大の事象が観測されたという仮定を置くことにあります.よって,観測された事象分の尤度をかけ合わせて,最大になるパラメータiの値を採用します.
たとえば今回,研究室 A から適当に人を選んできて DC に採用されているか確認したところ,採用採用不採用となっていたとします.その場合尤度関数 $L(S; i)$ は
\[\begin{align} L(S; i) = \frac{i}{5}^2 \frac{5-i}{5} \end{align}\]となります.こいつを最大化すれば良いわけですね.ちなみに記法ですが,$f(x;y)$ という記法は数学ではパラメータ $y$ によって規定される変数 $x$ の関数,という意味です.ここでは $y$ は変数ではなく,$f$ を定義する際の固定値になります.だからこそ,今回は固定値として使う $i$ の値を最適化したいというモチベになります.最尤法について多くの資料ではこっちの記法を使っていますが,違いが特になさそうなのと面倒なのでここでは $L(S|i)$ としておくことにします. せっかくなんで手計算.
\[\begin{align} L(S|i) \propto -i^3 + 5i^2\\ \therefore L(S| i)' \propto i(-3i+10)\\ i = \frac{10}{3} \end{align}\]最大化は微分して $0$ になる点を探せば良いんでしたね.今回のだとだいたい3が尤度最大の点でした.研究室 A の DC 学生は 5 人中 3 人であるという推定になります.優秀や…
なお,今回は大した計算じゃなかったのでそのままやりましたが実際は100試行とかになると尤度を掛け算でだすと値がすごい事になってしまうので対数に変換した対数尤度関数の最大化を行う事が多いです.対数に変換した場合,掛け算は足し算になるので計算が楽ですね.
さて,計算方法と気持ちが分かったところで以上の手順を一般化します.まずは尤度関数の定義から.
大丈夫でしょうか.尤度関数のかけざんを対数尤度関数では足し算に変換しました.ここで $\theta$ は母数だったり,とにかくパラメータです.パラメータ $\theta$ によって規定され,変数 $x$ を変数とする尤度を全ての $x$ についてかけあわせたのが尤度関数でした.
対数尤度は計算を簡単にするため,それを対数変換したものですね.で,最尤推定はこいつらを最大化する処理なので,最尤推定値 $\hat\theta$ は
\[\begin{align} \hat\theta_{ML} &= \argmax_\theta L(\theta) \nonumber\\ &= \argmax_\theta logL(\theta) \end{align}\]となります.$\argmax_x f(x)$ は関数 $f(x)$ を最大にする $x$ の集合を意味します.つまり一番高い上に凸の山の頂点です.勿論集合の要素は 1 つのみでも問題ないので,解は一つだったり複数だったりします.
余談ですが,対数尤度関数は最大化する事で尤もらしい値をだすものでしたが,機械学習とかだとよくこれを符号反転させた $-logL(\theta)$ を誤差関数と呼び,これを最小化する方向にフィッティングしているものも多いです.単調減少していくので,0 に近付けるという意味で扱いやすいんでしょうね.
最大事後確率推定(MAP推定)
しかし本当に尤度最大化で良いのでしょうか? さっきの例だと,自分のラボを優秀に見せようとした PI がわざと採択されている学生だけ選ばれるように仕向けていたのかもしれません.本当は 1 人しかいないかもしれないし,極端な話 2 回目の試行で止めていたら採用採用だったので採用率 100%,最尤推定の結果は当然,採択者5/5名となってしまいます.
これでは困りますよね.このように,最尤推定の弱点として十分な試行回数がないと極端すぎる結果を招きかねない点があります.どうにか,尤度だけじゃなくて「あの教授は信用ならないしなぁ」とかといった事も考慮できないのでしょうか…
そこでベイズに立ち返りましょう.
ベイズの定理の右辺には尤度だけじゃなく,事前分布もありました!これも使えば良いわけですね!
改めてベイズの式.
\[\begin{align} p(\mathbf{w}|\mathbf{D}) = \frac{p(\mathbf{D}|\mathbf{w})p(\mathbf{w})}{p(\mathbf{D})} \\ \therefore p(\mathbf{w}|\mathbf{D}) \propto p(\mathbf{D}|\mathbf{w})p(\mathbf{w}) \end{align}\]最尤推定はこのうち尤度 ($p(\mathbf{D} | \mathbf{w})$) にのみ注目して,こいつを最大化させていました.しかしそれでは十分なサンプル数がないと偶然の影響を消しきれないのでしたね.ではそれに加えて事前分布 $p(\mathbf{w}$) も用いてみましょう. |
という事で,最尤推定と同じ問題に取り組むもう一つの方法として,MAP推定 (Maximum a posteriori estimation)があります.
\[\begin{align} \hat \theta_{MAP} &=\argmax_\theta p(\theta|\mathbf{D}) \nonumber\\ & = \argmax_\theta \frac{p(\mathbf{D}|\theta)p(\theta)}{p(\mathbf{D})} \nonumber\\ &= \argmax_\theta p(\mathbf{D}|\theta)p(\theta) \end{align}\]MAP推定は日本語では最大事後確率推定,そのままですね.つまりベイズの定理の左辺を最大化しようという話で,事後確率を最大にする$\theta$を求めます.
つまり事後分布の一番山になっている部分に対応する$\theta$を選択します.簡単ですね.
ここまでは良いと思いますが,問題が一つ.
右辺で尤度に事前分布をかける事は,すなわち得られるパラメータ $\theta$ 自体も分布をもっていて,唯一つの真の値ではないという考えの元行うものです.ではそのパラメータが従う分布をどうするか?という事が問題になるわけで方法は大きく 2 種類です.
一つ,先行研究や何かしらの資料から明らかになっている分布を引っ張ってくる.これは分かりやすいですね.学振の例だったら,そのラボのこれまでの採択率だったり,国全体の採択率だったりのデータをもってきても良いかも.
次,そういった傾向すら分からない場合.この場合は無情報事前分布を持ってきます.無情報事前分布は事前に情報がない場合や事前分布を設定するにあたって根拠がない場合などに用いる分布でしたね.
無情報事前分布のうち,「多分一様やろ」,として特に重みづけをしない分布が一様分布でした.勿論こいつもMAP推定に使えます.その場合,MAP推定値と最尤推定値は等しくなります.
しかし無情報事前分布として一様分布を利用する問題点として,連続分布にはなれない事などがあげられます.そのため,やはり多いのは共役事前分布を用いる事だと思います.尤度関数の形が分かっている場合,それに対応した共役事前分布を用いる事が多いです.
二項分布に対してはベータ分布,とかね.
ベイズ推定
MAP 推定は事後確率の最大にする $\theta$ を求める方法でした.言い換えると,事後確率分布が最大になるような $\theta$ を求める事です.よって,MAP 推定値が同じ $\theta$ になった二つの分布があったとしてもその違いは評価されません.たとえば(計算すると若干違うかも?),100 戦やって 75 勝しているベテランと 4 戦やって 3 勝している新人とを同じ勝率,強さで評価してしまったりすることになります.
勝率が同じになるのは良いとしても,その信頼度が全然違いますよね.ベテランの方がデータが多いので信用できます.新人の方は単純にビギナーズラックかも.
そこでベイズ推定は,事後分布そのものを使っちゃいます. つまり,単純に $\argmax_{}$ しないでそのまま分布を使えばいいわけです.ただ注意しないといけないのは,$\argmax_{}$ ではないのでMAP推定のように $p(\mathbf{D})$ は無視できません.
手順は普通にベイズを使って,
\[\begin{align} p(\theta|\mathbf{D}) = \frac{p(\mathbf{D}|\theta) p(\theta)}{p(\mathbf{D})} \end{align}\]を計算し,事後分布 $p(\theta | \mathbf{D})$ を求めるだけです.この時,別に $\theta$ の点推定をしているわけじゃないので $\hat \theta_{bayes}$ のような量が求められるわけではないです.それをするのはMAP推定でしたね. |
こうすることで,$\theta$ の分布を求められます.裾野が広く背の低い分布なら信頼度は低いし,裾野が狭く背の高い分布なら信頼度が高い,という風に見ることが出来ます.一般に,データ数が多いほど信頼度は上がっていく傾向にあります.
逐次推定
分布を使えるということに加え,もう一つベイズ推定の便利な点,それは求めた事後分布を事前分布として用いて,また次のデータを使って推定を計算しなおす,という事を容易に可能にする点です.
ここでは,そんな逐次推定として逐次ベイズ推定を紹介します. とはいえ,それっぽい事は実は既にやっています.ベイズの定理の説明で無作為に選んだ男女の数から研究室を推定する問題を考えましたよね.一回目男性,二回目男性,三回目女性,とデータを重ねるにつれて事前確率を更新しつつ計算しました.基本的にはあの操作の事です.
\[\begin{align} p(\theta|x_1) = \frac{p(x_1|\theta)p(\theta)}{p(x_1)} \nonumber \\ \therefore p(\theta|x_1) \propto p(x_1|\theta)p(\theta) \end{align}\]これは一つのデータを観測して未知の母数の事後分布を推定する式でした.ここで,$p(x_1 | \theta)$ を特に尤度関数 $L(\theta | x_1)$ と言いました.次に,もういくつかデータを観測した場合と,そこに更にもう一つデータをプラスした尤度関数は |
となりました.よってデータ $X=x_1,…,x_n$ で計算された事後分布
\[\begin{align} p(\theta|x_1, ..., x_{n}) \propto L(\theta|x_1, ..., x_{n})p(\theta)\\ \end{align}\]と,そこにデータ $x_{n+1}$ を新たに加えて計算された事後分布とは
\[\begin{align} p(\theta|x_1, ..., x_{n}, x_{n+1}) &\propto L(\theta|x_1, ..., x_{n})p(x_{n+1}|\theta)p(\theta) \nonumber\\ & \propto L(\theta|x_{n+1})L(\theta|x_1,...,x_{n}) p(\theta) \nonumber\\ & \propto L(\theta|x_{n+1})p(\theta|x_1,...,x_{n}) \end{align}\]と証明できるように,これまでの観測値を得て計算した事後分布は新たな観測値を得たときの事前分布になる関係にある事がわかります.これを用いて,新しくデータを観測するたびに $p(x | \theta)$ をかけていく事で分布を更新していく事ができます. |
一方,最尤推定などの手法は事前分布を考えません.つまり「さっき計算したデータ」を利用することが出来ないわけですね.もう一度最初から計算しなおす必要があります.この点,新しく得たデータ分だけ分布をちょっと修正すれば言い訳ですから,ベイズ推定は計算コスト的にも考え方的にも楽だし便利ですね.
推定のまとめ
推定はあくまで,パラメータのもつ不確実性を実測されたデータで条件づけて更新する作業です.得られたデータから,そのデータの母集団が従っている分布は,母数(母平均とか)は,パラメータは,なんだろうと考えるものです.
最尤推定は実測値が尤も観測されやすそうなパラメータを尤度のみを用いて推定する手法で,ベイズ推定は事前分布も用いてそのパラメータの事後分布を推定する手法でした.MAP推定はベイズ推定の事後分布のうち,事後確率が最大になるパラメータを点推定する手法でした.
これらの手法を用いる事で,得られたデータ分布の特徴を掴むことができます.よって,脳の学習モデルの基本になっていたりします.これまでに得られた感覚データを元に,外界についてのモデルを内部に構築していく過程のことを我々は学習と呼んでいます.よって,脳は(逐次)ベイズ推定によって環境に適用しているよね!なんてベイズ脳理論なんていうものが盛んだった過去があります.
というよりも,ベイズ推定自体が人間っぽく統計しようって考えられたみたいな背景があるようです.
今ではもっと拡張というか盛り盛りになった自由エネルギー原理なんていうお化けに吸収されていたりしますが,いずれにせよ重要な概念です.頭のかたすみに置いておくくらいしておくと嬉しいかもですね.