尤度とはなんだったのか

TL;DR

  • Ubie という会社で働いていて尤度とかを改めて見直す機会があったのでブログにまとめておく
  • 尤度主義のような、自然と使っていたが明示的には近くできてなかったものの存在を知った
  • 主義や哲学に関しても言及するが、それらの良し悪しについて述べるものではない

4/1 から Ubie という会社に入社して、データ分析的な仕事やコードを書いたり楽しく働いている。 保有するデータのそのものが面白くて、今のところ主にこれを改善していくところに関わっていて、機械学習的な内容はあまりやっていない。

仕事をしていると尤度とかよく使うが、使っているうちにこれまで雑に理解してた部分が散見されたので、そもそも尤度とはなんだったのかをちょっと復習している。 色々調べていくとだいぶ広くて深いところに入り込んでしまいそうになるので、現在の理解を一部ブログにて整理しておこうというのがこのエントリである。

技術的に新しい話は特に出てこないが、典型的な機械学習(企業で業務としてやる機械学習)ではあまり意識しない話だったので、たまにはこういう話を考えてみるのもいいかもしれない。

尤度の定義

まずは尤度の定義をおさらいしておく。

パラメタ \(\theta\) で特徴付けられる確率モデルを考え、あるデータ \(d\) が得られる確率が \(P_{\theta} (d)\) のようにモデル化する。 これは \(\theta\) は固定されていて、ある \(d\) を色々に変化させたときに確率値がどのように変わるかを表現しているものである。 尤度は、逆に、\(d\) を固定した上で \(\theta\) を色々に変化させたときに値がどのように変わるかを表現しているもので、尤度関数とも呼ぶ。

\[\begin{align} L_d (\theta) = P_{\theta} (d). \end{align}\]

これは書き方に少し混乱するかもしれないが、あくまで \(\theta\) の関数で、その関数が取る値は右辺の確率値で決まると言っている。 あるデータを観測したとき、我々が規定する確率モデルのどのパラメタが尤もらしい(もっともらしい)かを表現するものになっている。

例として、みんな大好きな Poisson 分布を考えてみる。 \(d\) を対象とする事象の単位時間あたりの発生回数(非負整数)、\(\theta\) を Poisson 分布のパラメタ(0 より大きい実数値)とする。

\[\begin{align} P_\theta (d) = \frac{\theta^d e^{- \theta}}{d !}. \end{align}\]

まずは確率値の方を算出する例として、一ヶ月辺り平均 5 日急にやる気がなくなって仕事を休むという現象を Poisson 分布で表現(\(\theta = 5\))し、このような現象に苛まされる人が次の一ヶ月に 4 回休む確率を求めてみる。これは上の定義式にそのまま入れればいいので以下の結果が得られる。

\[\begin{align} P_5 (4) = \frac{5^4 e^{- 5}}{4 !} \simeq 0.175. \end{align}\]

17.5% の確率で 4 日休むという結果が得られた。 仕事大変だもんな、ガンガン休んでいこうぜ。

逆に、ある人の一ヶ月間の休み日数をカウントしたら 4 日だった場合、Poisson 分布でモデル化するときに尤もらしい \(\theta\) を求めるということを考える。

\[\begin{align} L_{4} (\theta) = P_\theta (4) = \frac{\theta^4 e^{- \theta}}{4 !}. \end{align}\]

\(\theta\) は実際には 0 より大きい実数値だが、整数だけを考えると、以下のような結果が得られ、\(\theta = 4\) が最も尤もらしいといことが分かる。

  • \(\theta = 1\) の場合 \(L_4 (\theta = 1) \simeq 0.015\)
  • \(\theta = 2\) の場合 \(L_4 (\theta = 2) \simeq 0.090\)
  • \(\theta = 3\) の場合 \(L_4 (\theta = 3) \simeq 0.168\)
  • \(\theta = 4\) の場合 \(L_4 (\theta = 4) \simeq 0.195\)
  • \(\theta = 5\) の場合 \(L_4 (\theta = 5) \simeq 0.175\)

尤度の性質

色々と性質を挙げられるとは思うが、ここではパラメタに関する和が 1 になるとは限らないとう性質と最尤推定についてのみ述べる。

パラメタに関して和を取っても 1 になるとは限らない

これは標語的に言えば「確率質量関数(確率密度関数)は和(積分)が 1 になるように規格化されているが、パラメタの方で和(積分)を取ってもその限りではない」ということになる。 以上、ということで終わりにしてもいいが、パラメタで和を取っても 1 になることもあるので混乱する人がいるかもしれないので、例を挙げて見てみる。

先ほど扱った Poisson 分布を考える。 パラメタ \(\theta\) で積分すると以下の結果が得られる。

\[\begin{align} \int_0^\infty d \theta \ P_\theta (d) = \frac{ \Gamma(d + 1) }{d !} = 1 \ \ (d \text{が非負整数の場合}). \end{align}\]

Poisson 分布の場合は尤度の和が 1 になる。 やっぱ Poisson 分布っていいよね。

パラメタで和を取っても 1 にならない例として Bernoulli 分布を考えてみる。 Bernoulli 分布はパラメタ \(0 < \theta < 1\) で観測データとして \(d = {0,1}\) の状況で以下のように表現される。

\[\begin{align} P_\theta (d) = \theta^d (1 - \theta)^{1 - d}. \end{align}\]

これのパラメタ積分も解析的に実行できるが、そんなことをせずとも \(d = 0, d = 1\) の場合で具体的に計算すれば一瞬でどちらも \(1/2\) という結果になることが分かる。

たまに確率密度関数の値が 1 を超えるという話と混同しているものがあるが、パラメタで和を取っても結果が 1 にならないというのはこれとは独立に離散的な確率を取り扱っていても起こりうるものである。

最尤推定

典型的な機械学習において尤度を殊更に意識するのはこの最尤推定くらいではなかろうか。 簡単に最尤推定について復習する。

あるデータ \(d_1, d_2, ..., d_n\) を得る確率をモデル化した \(P_\theta (d_1, d_2, ..., d_n)\) を考える。 データを所与とするとき、尤度を最大にするようにパラメタを選ぶというのが最尤推定である。

\[\begin{align} \max_{\theta} L_{d_1, d_2, ..., d_n} (\theta) = \hat{\theta}. \end{align}\]

ここで得られた \(\hat{\theta}\) を最尤推定量と呼ぶ。 尤度は定義により 0 以上であるので log を取る(計算機上で扱いやすい)。 \(\ln \left( L_{d_1, d_2, ..., d_n} (\theta) \right)\) は単調増加なので尤度が最大となる \(\theta\) が最尤推定量であることは変わらない。 (2 階微分が負であれば)極値が求めたい最尤推定量なので、以下の尤度方程式を解くことで求めたいパラメタを求めることが可能となる。

\[\begin{align} \frac{\partial}{\partial \theta} \ln \left( L_{d_1, d_2, ..., d_n} (\theta) \right) = 0. \end{align}\]

各データ \(d_i\) が i.i.d ならば \(P_\theta (d_1, d_2, ..., d_n) = \prod_i P_\theta (d_i)\) と書けるので、これの log 取って符号を反転させて負の対数尤度を使う、というのは機械学習をやっていれば扱ったことがあるだろう。

あくまでこれは尤度を最大にするものが最も尤もらしいだろうとして \(\theta\) を決めていることに注意。 言い回しが分かりづらいが、別に最尤推定量でない \(\theta\) でも観測データが得られる確率は当然のことながら一定度ある。 データが得られる背後に何かしらの確率モデルがあったとして、そのパラメタを我々が得た最尤推定量と考えていいのかというところは不安かもしれないが、最尤推定量は一致推定量であるなど良い漸近的性質を持つことが知られているので、まあ使う分にはそこまで気にしなくてもいいと思う(このエントリでは詳しく議論しない)。

DNN では途方もないほどのパラメタ数を扱うので、観測データが得られるような尤もらしいパラメタはナイーブにはめちゃくちゃたくさんあるものと考えられる。 ちょっとした違いで結果が変わりうることが分かるので、論文とかで報告されている実験を再現することはそりゃ難しいよねと優しい気持ちになる(ならない。ちゃんと再現できるように手順を構築するのは義務でしょ)。

典型的な職業 ML エンジニアならばこれくらいまで知っていれば最低限よいと思われる。

ベイズの定理における尤度とベイズ主義

まずは基本的な道具として条件付き確率を思い出しておく。 ある事象 \(x, y\) に対して、条件付き確率は以下のように定義される。

\[\begin{align} P(y|x) = \frac{P(x,y)}{P(x)}. \end{align}\]

ここで、\(P(x) > 0\) で \(P(x,y)\) は同時確率とする。 この条件付き確率からただちに以下のベイズの定理が導ける。

\[\begin{align} P(y|x) = \frac{P(x,y)}{P(x)} = \frac{P(x|y) P(y)}{P(x)}. \end{align}\]

この右辺の \(P(x \mid y)\) を尤度と呼ぶ、というような説明を稀に見かけるが、この段階では純粋に数学的な関係形式で \(x,y\) は特に意味を付与されておらず対称性もあるので、これを尤度とか呼んでもなんの意味もないだろう。尤度とはなんなのかを考えるにはこの \(x,y\) に対して特別な意味付けをする必要がある。

先ほどまで扱っていようにある観測データ \(d \sim D\) と、パラメタよりももう少し広いものとして仮説 \(h \sim H\) を考えることにする。 これらの意味は何らかの確率分布 \(D, H\) があって、そこからサンプルされたものが \(d, h\) であり、例えば仮説に関しては理論の集合があってそれらが確率的にサンプルされると考える。 このようなセットアップで条件付き確率 \(P(h \mid d)\) をベイズの定理で表現すると以下のように書ける。

\[\begin{align} P(h|d) = \frac{P(d|h) P(h)}{P(d)}. \end{align}\]

このような場合、右辺の \(P(d \mid h)\) を尤度と呼ぶ。 この尤度はある仮説を条件とした時の観測データが得られる確率であり、仮説の尤もらしさを表現している。 ただし尤度関数として関数として捉える場合には、これまで説明したように \(d\) を固定して \(h\) の関数と見る。 その他の量は、\(P(h \mid d)\) を事後確率、\(P(h)\) を事前確率、\(P(d)\) を周辺化した確率やデータの無条件確率などと呼ぶ。

ちょっと抽象的なので具体例として以下のものを考える。

  • 仮説として {\(h_1 =\) 仕事にやる気がない、\(h_2 = \bar{h}_1 =\) 仕事にやる気がある} がある
  • 観測し得るデータとして {一年間休まず働いた, 一年のどこかで休んだ} がある

両方記号で書くと記号が意味するところを覚えるのが大変なので、仮説の方だけ記号で書くことにする。 また、後々の便宜上 \(h_2\) は \(h_1\) ではないという意味で \(\bar{h}_1\) と書くことにする。 一年間を通して仕事へのやる気はずっとない状態かずっとある状態のどちらかとしておく(現実的ではないが、例のためなので認めよう)。

まず、事前確率として以下が満たされている。

\[\begin{align} P(h_1) + P(\bar{h}_1) = 1. \end{align}\]

さらに、尤度に関しても観測データの和に関しては 1 になる(条件付き確率なので)。 仕事にやる気がある場合でもない場合でも、一年間を通してみれば休まず働いたかどこかで休んでいるかのどちらかなので当然である。

\[\begin{align} P(\text{一年間休まず働いた} | h_1) + P(\text{一年のどこかで休んだ} | h_1) = 1. \\ P(\text{一年間休まず働いた} | \bar{h}_1) + P(\text{一年のどこかで休んだ} | \bar{h}_1) = 1. \\ \end{align}\]

同様に事後確率も規格化されている。

\[\begin{align} P(h_1 | \text{一年間休まず働いた}) + P(\bar{h}_1 | \text{一年間休まず働いた}) = 1. \\ P(h_1 | \text{一年のどこかで休んだ}) + P(\bar{h}_1 | \text{一年のどこかで休んだ}) = 1. \\ \end{align}\]

ここまでは単に確率の規格化を長ったらしく書いただけだが、尤度関数に関しては仮説の方で和をとっても 1 になる必要はない。 例えば \(P(\text{一年間休まず働いた} | h_1) + P(\text{一年間休まず働いた} | \bar{h}_1)\) を考えれば、仕事に対してやる気があろうとなかろうと一年間休まず働くなんていうのはどだい無理な話なので、この和は 1 よりもずっと低くなるというわけである。一方で \(P(\text{一年のどこかで休んだ} | h_1) + P(\text{一年のどこかで休んだ} | \bar{h}_1)\) は 1 を超えて 2 に近い値になるだろう。

確証とベイズ主義

ここまではあくまで数式での議論であったが、ここから哲学的な話題に少し足を踏み入れてみる。 「観測データ d によって仮説 h に対して確証する」という statement を h を真だとする我々の確信度合いを高めることだと定義しよう。 ベイズ主義とは確証に関して以下を採用するものである(逆に反証というのもあるが、考え方は同様なのでここでは割愛)。

  • d が h を確証するのは \(P(h \mid d) > P(h)\) のときであり、またそのときに限る。

これはあくまで定性的な条件で、定量的にはどれくらい確信度合いを高めるべきか(\(h_1\) が \(h_2\) より数値的にどれくらい確かだと捉えるか)については何も言及していないことに注意。 ベイズの定理とこの定性的な条件を合わせれば、

\[\begin{align} P(d) < P(d|h) \end{align}\]

であり、\(P(d) = P(d \mid h) P(h) + P(d \mid \bar{h}) P(\bar{h})\) と規格化条件を使うと最終的に以下が得られる。

\[\begin{align} P(d|h) > P(d|\bar{h}). \end{align}\]

定性的ではなく定量的にどうするかは恣意性があり、例えば以下のようなパターンがある。

  • 差で定義: \(P(h \mid d) - P(h)\)
  • 比で定義: \(\frac{P(h \mid d)}{P(h)}\)
  • 尤度比で定義: \(\frac{P(d \mid h)}{P(d \mid \bar{h})}\)

これらは同等なものではないのでどれを選ぶべきかという議論を呼ぶものだが、まあ状況に応じてよしなに使っていけばいいんじゃないかというくらいで深入りはしないことにする。

単なる数学的記述から離れて、どのように確信度合いを測るべきかという認識論的な概念を定義しようとする部分でベイズ「主義」というものが現れてくるという話、というくらいにしておこう(詳しく述べないのは自分が理解してないだけ)。

理論の正しさをベイズ主義でどう扱うか

例えば、患者を診察して癌か癌でないかという二値分類をするときには、事前確率と尤度が何かしらの方法で割り当てられているとして、癌か癌でないかのどちらを信ずるべきかは事後確率を計算することで明らかにできる。

しかしながら、例えば提唱された物理の理論が正しいかを考える場合には必要な事前確率や尤度を割り当てるのが困難な場合がある。 マイケルソン・モーリーの実験の観測結果を特殊相対性理論で説明することを考えてみる。 あらゆる理論の中で特殊相対性理論を信じるべきとするには、定性的条件のところで解説した尤度の式を使うなら \(P(\text{観測結果} \mid h) > P(\text{観測結果} \mid \bar{h})\) である必要がある(ここで \(h\) は特殊相対論でバー付きは特殊相対論が偽であるという意味)。

このような \(\bar{h}\) は哲学で catch-all 仮説と呼ばれるものらしく、これの尤度を求めるにはあらゆる可能な相対論の代替理論を考えてそれらから観測結果が得られる尤度を知る必要がある。 明らかにこれは無理である(まだ見ぬ素晴らしい新理論があるかもしれない)。

実際の科学では、そのときに広く信じられていたエーテル仮説と比べることで、特殊相対論が正しいものだと信じるという道を歩んだ。

\[\begin{align} P(\text{観測結果} | \text{特殊相対性理論}) \gg P(\text{観測結果} | \text{エーテル仮説}). \end{align}\]

これは尤度のみを取り上げているが、事前確率に関してもどのように割り当てるべきかは非自明(というか無理)である。 このような状況に対応するための一つの方法は、ベイズ主義とは別のものである、明確な尤度を持つような仮説のみを比較する尤度主義の立場に移るというものがある。 尤度主義については次で簡単に説明しよう。

尤度主義とは

先に述べたように、必要な事前確率や仮説の尤度や仮説の否定の尤度が割り当てられない場合に、明確な尤度を持つような仮説のみを比較するのが尤度主義の立場である。 以下に述べるような「尤度の法則」を用いて観測データを解釈する。

  • 観測データ \(d\) が仮説 \(h_2\) よりも \(h_1\) を支持するのは \(P(d \mid h_1) > P(d \mid h_2)\) のときに限る。そして仮説 \(h_2\) よりも仮説 \(h_1\) を支持する度合いは、尤度の比 \(\frac{P(d \mid h_1)}{P(d \mid h_1)}\) で与えられる。

ポイントはこれはあくまで対比的なものであり、単一の仮説を裏付ける度合は存在しないということである。

この立場を取ると、尤度が基本的な量とするので、条件付き確率 \(P(d \mid h) = P(d, h) / P(h)\) として考える場合にも、もう少しものを言える。 これは数学的には \(P(h) = 0\) の場合は定義できないが、尤度を基本的な量として捉えているのでその値を考えることができる。わけわからんことを言ってるような感じがするが、例えばジャンケンマシーンにじゃんけんで買ったら一攫千金のチャンスがあるくじがもらえるというときに、\(P(\text{お金をもらう} \mid \text{じゃんけんに勝つ})\) を考えることはできる。ただし実はこのジャンケンマシーンは人間の動きを見て人間には気づかないように後出しをするもので、実は \(P(\text{じゃんけんに勝つ}) = 0\) である。 このように事前確率が 0 である場合や、もしくは事前確率が特定できないような場合にも、尤度に値を割り当てるというのが尤度主義の立場である。

自分としてはこういう考えをなんとなくで使ってきてはいたが、尤度主義という立場があるのは知らなかったので勉強になった。

頻度主義と尤度原理

だいぶ長くなってしまったが、ここまで来たら頻度主義と尤度に関しても言及しておこう。 そもそも尤度という言葉自体は頻度主義の文脈から生まれたものである。

頻度主義で拠り所とされる尤度原理とは以下のようなものである。

  • ある観測データ \(d\) が与えられた場合、パラメタ \(\theta\) に関する統計的推測に関するあらゆる有効な情報は尤度関数に含まれている。また、互いに比例する尤度関数は \(\theta\) に関する同じ情報を含んでいる。

これをもう少し数式を入れ込んで表現すると次のようになる。

  • なんらかの確率分布からサンプルされた \(d_1, d_2\) があり、それらの尤度関数が \(L_\theta (d_1) = C(d_1,d_2) L_\theta (d_2)\) という形で書けるとき、 \(d_1, d_2\) それぞれから得られる結果は一致する。

簡単な例ではあるが、Poisson 分布を例にして、サンプルの結果を複数回やったものとして \(d_1 = \{1, 3, 5, 7\}\) で \(d_1 = \{2, 4, 6\}\) とする。 それぞれの観測は独立であるため、ここで得られる尤度は以下のように書ける。

\[\begin{align} L_\theta (d_1) = \frac{\theta^{16} e^{- 4 \theta}}{1! 3! 5! 7!} = \frac{\left( \theta^{4} e^{- \theta} \right)^4}{1! 3! 5! 7!} \\ L_\theta (d_2) = \frac{\theta^{12} e^{- 3 \theta}}{2! 4! 6!} = \frac{\left( \theta^{4} e^{- \theta} \right)^3}{2! 4! 6!}. \end{align}\]

最尤推定をすればどちらの場合も \(\hat{\theta} = 4\) が得られる。これは最尤推定が \(\theta\) の依存性だけで決まるものであるから明らかである。 この例からこの尤度原理の話は十分統計量を使った議論と同じであることも理解できる。

この尤度原理には弱い尤度原理と強い尤度原理があり、前者は \(d_1, d_2\) が同じ確率分布に従う場合のもので、後者は異なる確率分布に従う場合のものである。 最後に、この強い尤度原理は成り立たない場合があることとベイズ主義や尤度主義との違いが見て取れる例を考える。

停止規則

ここは自分で書こうと思っていたが、書こうと思っていた内容がずばりこのページ https://oku.edu.mie-u.ac.jp/~okumura/stat/bernoulli.html に書いてあったので、とりあえずこれを貼っておいて後で余力があったら別の例を考えて書き直そう(書き直さなそうな気配しかない)。 実験計画に依存するか否かというの、誰が最初に考えたかは知らないが、なかなか興味深いよなあ。

まとめ

ということで尤度を起点に色々と調べたことをとりとめなくまとめてみた。 典型的な機械学習で practical に役立つという内容でもないが、普段自分が意識せずにどういう考えに立脚して物事を考えているのかということを振り返る良いきっかけになった。 まだまだほんの入り口しか述べてないので、今後も少しずつ勉強していこう。

それと、ベイジアンに尤度などの頻度論の言葉を持ち込まずに、単に分布などと呼んで扱えばいいのではないかという話をどこかで見た。 これは確かにそうなのかもしれない。もう少しベイジアンに慣れ親しんだらどこかのタイミングで考えてみるのも面白いかもしれない。

参考文献

いくつか参考にしたものを挙げておく。




Written on May 30, 2020