こんにちは。
本日は機械学習の基本である尤度からパラメータ推定の基本であるMAP推定について話します。ベイズ推定やMCMCは次回以降になります。
ちなみに、KLや最小二乗法にまつわる話もします。
尤度と確率の違い
これ僕的にはそんなに気にしなくてもいいと思うんですよね、というのは僕が実際わかってないから、笑
- 尤度(Likelihood)
観測した事象が起こる確率(パラメータがある) - 確率(Probability)
直感的な確率(パラメータがない)
例えばコインが二回連続表になる確率は?と聞かれれば
と勝手に都合よく答えますよね?では尤度は?と聞かれるとまず、表・裏それぞれの確率を定義します。例えばのように。そこでやっと尤度が次のようにかけます。
尤度関数と最尤法と対数尤度関数
個のデータをとします。それぞれの確率をとします。ちなみに尤度も尤度関数も同じです。尤度関数を次のように定義します。(観測したデータを下に事象が起こる確率)
最尤法は「尤度の最大化」です。またそれは以下の尤度方程式の解として求められます。
つまり、最尤法の結果得られるものはパラメータの最もらしい確率ということになります。
ちなみに尤度関数に対数をとることがあります。これは計算を簡単にするためです。というのは掛け算が足算になるという利点です。対数をとった対数尤度関数を解くことと尤度関数を解くことが同値であることは対数関数の単調増加性と次からわかります。
の対数は微分すると
となりのときとなることがわかります。つまりの極値との極値は一対一に対応するのでこの変換は正当化されます。
最尤法の例
あるコイン投げを考え、表が出る確率をとします。
このコインを回なげたら回表が出たという事象を考えます。
この事象に対して最尤法により最適なを求めます。
尤度関数は
となり、
対数とり(対数尤度関数)
としてから対数尤度方程式を解く
以上よりともとまります。
最尤法と最小二乗法の関係
モデル関数を
とし、予測値と実測値の誤差をとします。つまり、が成り立つとします。ここで重要な仮定ですが、誤差はガウス分布に従うものとします。すると仮定より尤度関数は以下のようになります。
ここで対数をとり整理すると、以下の対数尤度関数を得ます
ここで振り返るとこの関数はが唯一のパラメータなので内を最小化させるようなを見つけることで最尤法が達成されることがわかります。これはまさに最小二乗法と同値であることがわかります。
KLの最小化と尤度最大化の関係
を真の分布、を私たちのモデルとします。KLを最小化するには以下の第2項を最大化させればいいことがわかります。
この第2項
は真の分布についての対数尤度の期待値、平均対数尤度と呼ばれます。しかし、実世界において積分が達成されることは僕は知らないです。なぜならデータが離散でしか得られないからです。そこで、この項の最大化は以下の平均対数尤度の推定量を最大化させることで近似します。
見ての通り最尤法と等しいということがわかります。
ベイズの定理
根幹とも言えるべイズの定理に触れます。2つの事象の同時確率を考えるとこれはが起きてかつも起きる確率なので
です。同様に
以上の2式より
が得られ、これがベイズの定理です。
事前分布と事後分布とMAP推定
上で得た式をよく見ると左辺では、右辺ではとあるため、
を用いてを求める定理と理解できます。ここでをパラメータとしをデータとすると
となり、は事前分布、は事後分布呼びます。ちなみには尤度ですね。
- 事前分布とは、パラメータに対して事前に仮定する分布です。
- 事後分布とは、取得したデータを用いて事前分布を修正した結果得られるパラメータの分布です。
MAP推定とは、事後確率(上の式左辺)を最大化させるパラメーターを推定する方法です。事後確率と事後分布は同じようなものと思ってもらって構いません。式をよく見みて、がに無関係であることに注意するとMAP推定は
を最大化すればいいとわかります。
共役事前分布
ここで事前分布が重要になります。例えば先ほどのコインの例を考えます。表が出る確率をとします。このパラメータの分布が事前分布です。注意してください、確率ではなく分布です。普通の人なら表も裏も同じくらい出やすいと考えますよね?結果的に事前分布は一様分布になります。サイコロも同じです。普通なら全ての目が同じくらい出やすいと思うので事前にパラメータに与える分布は一様分布になります。
このように事前分布は人間が最初に設定してあげるものなのです。しかし、よくみてください、積分があるんです。前述通り積分はやばいんです。なのでたまに数値計算で対処します、それが噂のMCMCとかです。
しかし、MCMCは僕には難しい、、なんとか計算したい、、そこで
計算を簡単にするために共役事前分布という特別な性質を持った分布を事前分布に使う習慣があります。共役事前分布とは、事前分布と事後分布が同じ形になるもののことです。
MAP推定の例
二項分布の場合には尤度は
であり、事前分布には以下のベータ分布が用いられます(ちなみにこれをマルチにしたものがディリクレ分布とかの話です)
ここでというガンマ関数です。これらを用いると事後分布は
となるがはであるのでたとえば
となるので
を用いると先ほどの事後分布は以下のように変形されます
ここでガンマ関数の項は定数項なので無視すると結局ベルヌーイにおけるMAP推定は以下の最大化に帰着します
これより事前分布に共役事前分布を用いることにより確かに、事後確率が先ほどの尤度からほとんど形が変わっていないことがわかりました。この例ではが回、が回それぞれ多く出た形になってます。
思い出してください、事前分布は我々が選びます。つまり我々の意思を事前分布として反映させられるのです。つまりベルヌーイ分布に対してベータ分布という共役事前分布なるものを導入した場合には、このを適当に調整することによって、もともとコインがどれだけ偏っていそうかという主観を反映できるというのです。
このように、勝手に設定できる(しなければならない)パラメータ(今回は)のことをハイパーパラメータと呼びます。
長くなりましたが実際にMAP推定を行っていきましょう。最尤推定と同様に対数をとりましょう、これで計算が楽になります。
の形で表すことができます。あとはこの式をで微分してを解けばよいので
に注意すると最適解は
と簡単にもとまりました。
MAP推定までやりましたが僕的にMAP推定はそれほど重要ではありません。次にやるベイズ推定をセットでやるとそれぞれの立ち位置的なものがわかります。ですので今回は「MAP推定って事後分布を最大化させるパラメータ探しやねんぁ」くらいにしておいてください。ついでにKLの記事も読んでください。
参考文献
- https://research.miidas.jp/2019/04/klとnllの関係とか/
- https://research.miidas.jp/2019/04/エントロピーとklについて/
- https://research.miidas.jp/2019/09/なぜklを最小化するのか?/