- 最尤推定
\hat{\theta}=\arg\max_\theta p(D\mid\theta)
小さな謎
1枚のコインがある。
公平なコインなら、表と裏は半分ずつ出るはずだ。
ところが、このコインは妙に表が多い気がする。
試しに10回投げてみた。
表が7回、裏が3回。
公平なコインなら、表が出る確率は $\frac{1}{2}$のはず。
このコインには何か仕掛けがあって表の出る確率が高いのか、$\frac{1}{2}$なのにたまたま表が多かったのか。
表の出る確率が、もしかすると0.6かもしれない。0.7かもしれない。
本当の値は見えない。
見えるのは、
10回投げて、7回表が出た
という事実だけ。
では、この事実をもっとも自然に生み出した「世界」はどれだろう?
数式で謎解き
表が出る確率を $\theta$ とする。
各回のコイントスは独立で、表が出る確率 $\theta$ は毎回同じと仮定する。
すると、
- 表が出る確率:$\theta$
- 裏が出る確率:$1-\theta$
となる。
今回は、
| 結果 | 出た回数 |
|---|---|
| 表 | 7回 |
| 裏 | 3回 |
だったので、このデータが現れる確率は
p(D\mid\theta) = \theta^7(1-\theta)^3
となる。これを尤度という。
いくつかの「世界」を試してみる。
| 世界 | $\theta$ | データの尤度 |
|---|---|---|
| 表裏が公平な世界 | 0.5 | $0.5^7 0.5^3=0.0009765625$ |
| 少し表が出やすい世界 | 0.6 | $0.6^7 0.4^3=0.0017915904$ |
| かなり表が出やすい世界 | 0.7 | $0.7^7 0.3^3=0.0022235661$ |
| ほとんど表の世界 | 0.9 | $0.9^7 0.1^3=0.0004782969$ |
$\theta$ を0から1まで細かく動かしていくと、
\theta=0.7
で尤度が最大になる。
つまり、$\theta$のもっとも尤もらしい値(最尤推定値という)$\hat{\theta}$ は、
\hat{\theta}=0.7
となる。
そして一般に、
\hat{\theta} = \arg\max_\theta p(D\mid\theta)
これが最尤推定 Maximum Likelihood Estimationである。
ここで右辺は、
観測されたデータ $D$ がもっとも起こりやすくなるパラメータ $\theta$ を選ぶ
ということ。
今回は、実際に観測された「表・表・裏・表・裏・裏・表・表・表・表」という並びそのものを (D) としています。
「10回中7回が表」という回数だけを見る場合は二項係数 $\binom{10}{7}$ が付きますが、これは $\theta$ に依存しないため、最尤推定値は変わりません。
数式解説
\hat{\theta} = \arg\max_\theta p(D\mid\theta)
ここでの登場人物は、
$\theta$
僕たちが知りたい「世界の設定」のこと。
今回の例であれば、
\theta=\text{表が出る確率}
$D$
実際に観測したデータのこと。
今回の例であれば、
D=(表,表,裏,\ldots)
$p(D\mid\theta)$
「もし世界が $\theta$ だったなら、このデータ $D$ が観測される確率」のこと。
これを尤度 likelihoodと呼ぶ。
$ \displaystyle \operatorname*{\arg\max}_{\theta}$
「最大の値そのものではなく、値を最大にするパラメータ$\theta$を探せ」ということ。
今回の例であれば、
\max_\theta p(D\mid\theta)
が「尤度の最大値」なら、
\displaystyle \arg\max_\theta\ p(D\mid\theta)
は、「その最大値となる時の $\theta$ の値は何か?」ということ。
尤度 $p(D\mid\theta)$ は、$\theta$ の確率を表しているわけではない。
あくまで $\theta$ を固定したとき、
観測データ $D$ がどれくらい起こりやすいかを表している。
図にすると、このようなイメージ。
ただ、注意点は、
- 最尤推定値が、そのまま「真の値」だと保証されるわけではない
- あくまで、仮定したモデルの中で観測データをもっともよく説明する値である
触れるデモ
「世界を動かすスライダー」
観測データを
「表・表・裏・表・裏・裏・表・表・表・表」(表7回、裏3回)
と固定して、
表が出る確率 $\theta$ が違う無数の「世界」を切り替えながら、この観測データの尤度がどう変わるかを見てみる。
See the Pen 02 by aokikenichi (@aokikenichi) on CodePen.
別分野への接続
AIの学習において、多くのニューラルネットワークの学習では、
観測された学習データをもっとも起こりやすくするパラメータを探していると考えることができる。
モデルのパラメータを $\theta$ とすれば、上記の例と同様に
\hat{\theta} = \arg\max_\theta p(D\mid\theta)
となる。機械学習では通常「最大化」より「最小化」を使う。また、機械学習では、この尤度をそのまま扱うのではなく、対数を取った対数尤度を使うことが多い。
対数をとって符号を反転すると、
\hat{\theta} = \arg\min_\theta -\log p(D\mid\theta)
となる。これが負の対数尤度となる。
では、なぜ符号を反転するだけでなく、わざわざ対数まで取るのだろうか。
データ全体の尤度は、多数の確率の掛け算となります。上の例では表裏合わせて10回ですが、実際の機械学習では、データ点が100件、1,000件、さらに何百万件と増えていく。0から1の間の確率を大量に掛け合わせると、その値は急速に小さくなり、コンピュータではアンダーフローなどの数値的な問題が起こりやすくなる。
そこで対数を取る。対数を取ると、確率の「掛け算」を「足し算」に変えることができ、小さな確率を大量に扱う場合でも数値計算が安定しやすくなる。
\log(p_1 \times p_2 \times \ldots)=\log(p_1) + \log(p_2) + \ldots
一般化すると、
\log\prod_i p(x_i\mid\theta) = \sum_i\log p(x_i\mid\theta)
しかも対数は単調増加なので、元の掛け算の計算においても、対数化の後の足し算の計算においても、尤度を最大にする $\theta$ は変わらない。そして最大化の代わりに最小化を扱いたいので負をつけて最小となる時の$\theta$を見つける、つまり、
\arg\max_\theta p(D\mid\theta) = \arg\max_\theta\log p(D\mid\theta)
\arg\max_\theta\log p(D\mid\theta) = \arg\min_\theta[-\log p(D\mid\theta)]
こうして最尤推定は、機械学習ではおなじみの「Lossを小さくする」という形になる。
そして分類問題では、ここからクロスエントロピー損失につながる。
つまり、AIが「Lossを小さくする」という日常的な処理の奥には、最尤推定の考え方があるということ。
GPT系のような自己回帰型大規模言語モデル(以下、LLM)においても、学習データ中のトークン列
x_1,x_2,\ldots,x_T
に対して、
$$ \prod_t p(x_t\mid x_{<t},\theta) $$
が大きくなるように学習する。つまり巨大なLLMの学習も、遠くから見ると、
「観測された言葉の世界」をもっともよく説明するパラメータを探している
と見ることができる。
この数式が提示する「世界観」
最尤推定の世界観は、
世界そのものを見ることはできない。
だが、世界が残した事実を観測することはできる。
というもの。
コインの表が出る確率が0.7だったとして、それが直接わかるわけではない。
僕たちが見ることのできるのは、
$$ D $$
という観測データだけ。
だから、逆に問う。
どんな世界なら、このデータが生まれやすかっただろう?
そして、無数の候補の中から、
\hat{\theta} = \arg\max_\theta p(D\mid\theta)
を選ぶ。
それが最尤推定である。
ただし、要注意なのは、これは「真実を発見した」ということでは決してなく、あくまで、
自分が想定した世界の中で、もっともデータと辻褄の合う世界を選んだ
ということにすぎない。
しかも、今回のようにデータが10回しかない場合、
最尤推定値が $\hat{\theta}=0.7$ だったからといって、
「本当の表の出る確率は0.7だ」と断言できるわけでもない。
0.6かもしれないし、0.8かもしれない。
観測データが少なければ、その不確実さは残る。
そこで、やがて僕たちは、
「事前に知っていたことも使えないだろうか」
「一つの世界を選ぶのではなく、不確実性ごと持てないだろうか」
と考える。
そこからまた、ベイズの世界へ戻っていく……
- 構成案、文案、デモ生成、内容チェックなどにChatGPT 5.6 Solを用いております
- ただ文章自体は本記事著者、青木が書いております
