さていよいよベイズ確率に入っていく。
今回の記事ではこれまで見てきた一般的な確率とベイズ確率がどのように違うのか、そして尤度関数の最大化という視点がなぜ必要なのかを見ていく。
ベイズ確率は機械学習を学ぶ上で避けては通れない概念であり、この記事はその概観をつかむ一助になるかもしれない。
頻度主義とベイズ主義
いよいよ、ベイズ確率というものについて詳しく見ていく。
ベイズ確率というものを理解するために、これまで使用してきた頻度主義的な確率とどう違うものなのか比べてみよう。ベイズ的な確率と頻度主義的な確率というのはしばしば対比されて語られている。
頻度主義的確率は、同じ試行を繰り返し行うことによって確率が定義される。具体的には、同じ条件で試行を無限回行ったとき、ある事象が発生する割合をその事象の確率とする。例えば、コインを投げたときに表が出る確率は、無数にコインを投げ続けた場合の表が出る割合で定義される。
一方、ベイズ確率は、主観的な信念の度合いを表現する。信念とは個人が持っている事柄に対する確信や判断のことで、ある事象が起こる確率を、持っている情報を元に判断し、新しい情報が入るたびにその確率を更新する。ベイズ確率は、事象の確率を直接計算するのではなく、ある状況下での確率を評価する際に、観察データや事前知識などの情報を考慮して確率を更新する手法を用いる。
ベイズ確率では、主観的な信念の度合いを表す確率を、観測データや事前知識に基づいて更新することで、より現実に即した確率評価が可能となる。この手法は、不確かな情報が多い現実世界の問題に対して、柔軟な対応ができるため、機械学習や統計的推論など様々な分野で用いられている。
具体例
具体例を使って、ベイズ確率と頻度主義的確率の違いを説明しよう。例として、ある病気の検査キットがあるとする。この検査キットは、感染者に対して99%の正確さで陽性を示し、非感染者に対して99%の正確さで陰性を示す。
ある人が検査を受けて陽性と判定された場合、その人が実際に病気である確率は、頻度主義的確率とベイズ確率でどのように評価されるかを考える。
頻度主義的確率では、陽性が出た場合のその人が実際に病気である確率は、検査キットの陽性の正確さ(99%)をそのまま使うことになる。
しかし、ベイズ確率では、その人が病気である確率は、検査結果だけでなく、病気の罹患率やその人の年齢・性別などの情報も考慮する。例えば、その病気の罹患率が1%だとすると、
$$ P(病気|陽性) = \frac{P(陽性|病気)P(病気)}{P(陽性)} $$
を使って、その人が実際に病気である確率を計算できる。ここで、\(P(病気|陽性)\)は陽性の結果が出た場合に実際に病気である確率を表し、\(P(陽性|病気)\)は病気の人に対して検査が陽性を示す確率(99%)、\(P(病気)\)は病気の罹患率(1%)である。
さらに、\(P(陽性)\)は、全ての人に対して陽性の結果が出る確率で、これは病気の人と病気でない人がそれぞれ陽性の結果が出る確率の和である。つまり、
$$ P(陽性) = P(陽性|病気)P(病気) + P(陽性|病気でない)P(病気でない) $$
である。ここで、\(P(陽性|病気でない)\)は病気でない人に対して検査が陽性を示す確率(1%)、\(P(病気でない)\)は病気でない確率(99%)である。
この式に数値を代入すると、$$ P(陽性) = 0.99 \times 0.01 + 0.01 \times 0.99 $$ となる。そして、$$ P(病気|陽性) = \frac{0.99 \times 0.01}{0.99 \times 0.01 + 0.01 \times 0.99} $$ を計算すると、その人が実際に病気である確率はおおよそ50%であることが分かる。
このように、ベイズ確率では、検査結果だけでなく、病気の罹患率やその人の年齢・性別などの情報も考慮して確率を評価し、頻度主義的確率とは異なる結果が得られることがある。この例からも分かるように、ベイズ確率はデータや事前の知識をもとに確率を更新し、より現実的な判断を行うことができると言える。
前回の確率論の記事で見たように、ベイズの定理によって観測されたデータで与えられた証拠を取り込むことで、事前確率を事後確率に変換できた。
というわけで多項式曲線フィッティングの例を用いて、ベイズの定理を再確認していく。\(p(w)\) は事前確率分布、\(D=\{t_1,\dots,t_N\}\)として
$$ p(w|D) = \frac{p(D|w)p(w)}{p(D)} $$
ここで、\(p(D|w)\) は尤度関数といい、\(p(w|D)\) は事後確率分布という。また、\(p(D)\) は観測データDの確率で、次のように求められる。
$$ p(D) = \int p(D|w')p(w')dw $$
次に、尤度関数について説明しよう。尤度関数は、あるパラメータwのもとで観測データDがどれだけ起こりやすいかを表す関数である。尤度関数は次のように表される。
$$ p(D|w) = \prod_{n=1}^{N} p(t_n|w) $$
尤度関数は、各データ点が独立に生成されると仮定することで、観測データD全体の確率を各データ点の確率の積として表現できる。
尤度関数は、あるパラメータ \(w\)のもとで観測データ \(D\) がどれだけ起こりやすいかを表す関数である。ここで言う「起こりやすい」とは、観測データ \(D\) が得られる確率が高いということである。
この確率が高いということは、モデル(パラメータ \(w\) )がデータ \(D\) を生成する過程をうまく表現していることを意味する。言い換えれば、モデルがデータの特徴や構造を捉えているため、データを説明できていると言えるのである。
尤度関数が高いモデルは、観測データ \(D\) が起こりやすいことから、データを生成する過程を正確に捉えていると考えられる。要するに、尤度関数が高いほど、そのモデルがデータを説明する能力が高いということである。
つまり我々は尤度関数の最大化に興味があるのである。
事前確率分布は、観測データが得られる前に、パラメータwに対して与えられる確率分布である。これにより、パラメータの初期的な信念を表現できる。例えば、正規分布や一様分布などが事前確率分布として使われることがある。
以上の説明から、ベイズの定理は事前確率分布と尤度関数を用いて、観測データDが与えられたときのパラメータwの事後確率分布を求める方法であることが分かる。これにより、データを用いてパラメータの推定が可能となる。
尤度関数について
ここで尤度関数という重要単語が出てきたが、頻度主義とベイズ主義では、尤度関数が異なる役割を果たす。
頻度主義における尤度関数
まずは、頻度主義における尤度関数の役割について説明しよう。頻度主義では、尤度関数がパラメータの値を決定するために使われる。尤度関数は、あるパラメータのもとで観測データがどれだけ起こりやすいかを表す。頻度主義者は、尤度関数を最大化するパラメータを最尤推定値として選ぶ。これは、観測データが最も起こりやすいとされるパラメータを選ぶことを意味する。
ここで最尤推定をする際には尤度関数の対数の符号を反転したものが機械学習の分野ではよく使われる。これは誤差関数と言われ、対数を取る理由は数学的な計算を単純化するだけでなく、数値計算する際に小さな確率値を掛け合わせ続けるととても小さくなっていってしまって取り扱いづらくなってしまうが、対数であれば和の計算をすることになるのでこの問題を解決できる。
対数のマイナスは単調現象関数なので、尤度関数の最大化は誤差の最小化と同じことなのである。
【頻度主義的】ブートストラップ
ブートストラップとは、頻度主義的なアプローチで誤差関数や推定値の信頼区間を決定する方法である。
- 元のデータセット:最初に、観測データセットDが存在すると仮定する。このデータセットは、N個の観測値から構成されている。
- リサンプリング:ブートストラップの主要な考え方は、元のデータセットからランダムにデータ点を選び出し(重複を許す)、新しいデータセットを作成することである。これをリサンプリングと呼ぶ。新しいデータセットは、元のデータセットと同じサイズ(N個)である。
- ブートストラップサンプル:リサンプリングを行うことで得られた新しいデータセットをブートストラップサンプルと呼ぶ。ブートストラップサンプルは元のデータセットの特性を引き継いでいると考えられる。
- 推定量の計算:ブートストラップサンプルを使って、推定量(たとえば平均、分散など)を計算する。この計算は、元のデータセットに対して行われるのと同じ方法で行う。
- 繰り返し:ステップ2から4を複数回(通常は数百~数千回)繰り返す。これにより、ブートストラップサンプルごとの推定量の分布が得られる。
- 誤差関数や信頼区間の決定:ブートストラップサンプルごとの推定量の分布を用いて、誤差関数や信頼区間を計算する。例えば、分布の中央値や平均を誤差関数の推定値として選ぶことができる。信頼区間は、推定量の分布の特定のパーセンタイル(例えば、2.5%点と97.5%点)に基づいて決定される。
このように、ブートストラップはランダムなリサンプリングを繰り返すことで、誤差関数や信頼区間を決定する手法である。これにより、元のデータセットの特性を保持しつつ、様々な推定量やその信頼性を評価することができる。ブートストラップは、データが少ない場合や、データの分布が正規分布ではない場合でも有効な手法であるため、頻度主義的なアプローチの一つとして広く利用されている。
ただし、ブートストラップにはいくつかの注意点があることを理解しておく必要がある。
- 元のデータセットの代表性:ブートストラップは、元のデータセットが母集団を適切に代表していることを前提としている。もし元のデータセットが偏っていたり、母集団の特性を十分に捉えていない場合、ブートストラップによる推定結果も正確でない可能性がある。
- ブートストラップサンプルの独立性:ブートストラップサンプルはリサンプリングによって生成されるため、それぞれのサンプルが独立であるとは限らない。これにより、推定結果に相関が生じることがある。
- 推定量の分布の正確性:ブートストラップによって得られた推定量の分布が、母集団の真の分布を正確に反映しているとは限らない。特に、データ数が少ない場合やデータの分布が複雑な場合には、この問題が顕著になることがある。
ブートストラップは、頻度主義的なアプローチで誤差関数や信頼区間を決定する際に便利な手法であるが、その適用にあたっては注意が必要である。それでも、ブートストラップは、統計的推定の分野で非常に一般的かつ有用な手法として広く用いられている。
ベイズ主義における尤度関数
次に、ベイズ主義における尤度関数の役割について説明しよう。ベイズ主義では、尤度関数が事後確率の計算に用いられる。事後確率は、観測データが与えられたときのパラメータの確率分布を表す。ベイズの定理を使って、事前確率と尤度関数から事後確率を求めることができる。つまりは、事前知識を自然な形で入れられるということで、これはベイズ主義の大きな利点である。
例えば、公平なコインを三回投げて全て表だったとすると、頻度主義的な最尤推定では表が出る確率が1になってしまう。これは未来永劫表が出るということであり、極端な結論を出しうるものである。ベイズ的に考えればこのような結論には至らない。
これだけ聞くと、ベイズ主義はいいところしかないように思うかもしれないが、ベイズ的なアプローチによくある批判として、事前分布の選び方に個人差があり、結果が主観的になってしまうというものがある。これを解決するために、無情報事前分布が考えられた。
無情報事前分布は、パラメータについて事前に何も知らない状態を表現する。これにより、観測データだけで結果が決まり、個人差が小さくなる。無情報事前分布の一例として、一様分布が挙げられる。一様分布では、パラメータのすべての値に対して同じ確率を割り当てることで、事前の情報を持たない状態を表現する。
しかし、無情報事前分布を使用した場合、異なるモデルを比較する際に困難が生じることがある。その理由は、無情報事前分布が、パラメータ空間全体にわたって一定の確率を持つため、モデル間でパラメータ空間の大きさが異なる場合、比較が難しくなるからである。
具体例として、2つのモデルを考える。1つ目のモデルでは、パラメータ\(\theta\)が0から1の範囲で一様に分布しているとする。2つ目のモデルでは、パラメータ\(\theta\)が0から10の範囲で一様に分布しているとする。無情報事前分布を用いると、それぞれのモデルにおいて、パラメータに対する事前知識がないと仮定しているが、2つのモデルのパラメータ空間の大きさが異なるため、それぞれのモデルの事後分布が得られても、比較が難しくなる。
この問題を解決するために、モデル比較には別の手法を用いることが一般的である。例えば、ベイズ因子や、赤池情報量規準(AIC)などのモデル選択基準が使用されることがある。これらの基準を用いることで、無情報事前分布を使用した場合でも、異なるモデルの比較を適切に行うことができる。
ベイズ因子は、モデル間の尤度比を計算することで、モデルの良さを評価する指標である。尤度は、観測データが得られたときのモデルの適合度を表すため、ベイズ因子はモデル選択に適している。ベイズ因子が大きいほど、そのモデルが観測データに適合していると判断される。
赤池情報量規準(AIC)は、モデルの適合度とモデルの複雑さを同時に考慮する指標である。AICは、尤度に対してパラメータの数に応じたペナルティを加えることで、モデルの複雑さを評価する。AICが小さいほど、そのモデルが観測データに適合していると判断される。
無情報事前分布を用いたベイズ主義において、異なるモデルを比較する際には、ベイズ因子やAICなどのモデル選択基準を用いることが一般的である。これにより、モデル間の比較を適切に行い、最も観測データに適合するモデルを選択することができる。このようなモデル選択手法を適用することで、無情報事前分布の問題点を克服し、ベイズ主義においても適切なモデル選択が可能となる。
結局どう違うのか?
頻度主義:データを生成している真の分布は一つと仮定
ベイズ主義:パラメータも確率分布を持つと考える
頻度主義 | ベイズ主義 | |
パラメータ(w) | 定数 | 確率変数 |
データ(D) | 確率変数 | 確率変数 |
頻度主義とベイズ主義における母数(パラメータ)とデータについて説明しよう。
まず、頻度主義では、母数は未知の定数として扱われる。これは、母数が実際には固定されている値を持っているが、我々はその値を知らないという考え方に基づいている。一方、データは確率変数であり、標本を取るたびに異なる値が得られると考えられる。このため、頻度主義では、繰り返し実験を行うことでデータの分布や母数の推定に関する確率的な性質を調べる。
次に、ベイズ主義では、母数は確率変数として扱われる。これは、母数に対して確率分布を割り当てることで、我々の不確実性を表現するためである。事前分布は、データが得られる前の母数に対する信念を表し、データが観測された後、事後分布を用いて母数の信念を更新する。一方、データも確率変数であり、母数が与えられた条件下でのデータの分布を表す尤度関数によってモデル化される。
要約すると、頻度主義では母数は未知の定数、データは確率変数として扱われる。一方、ベイズ主義では母数もデータも確率変数として扱われる。これらの違いは、頻度主義が繰り返し実験を行い、確率的な性質を調べることに焦点を当てているのに対し、ベイズ主義は母数に対する信念を確率分布として表現し、データを用いて信念を更新することに重点を置いていることに由来する。
頻度主義とベイズ主義の世界観の違い
頻度主義の最尤推定法は最大化される点にのみに興味があったが、ベイズ主義的アプローチは山全体の形に興味があるということである。つまりざっくりとらえると。
頻度主義 | ただ一つの最適な値をとらえていこうとする考え方 |
ベイズ主義 | 一つに限定するのではなく、最適な値を含む分布をとらえていこうという考え方。 |
頻度主義VSベイズ主義
どちらのアプローチが優れているかは、問題や目的によって異なる。頻度主義とベイズ主義のそれぞれの長所と短所を検討しよう。
頻度主義 | ベイズ主義 | |
長所 |
|
|
短所 |
|
|
どちらのアプローチが適切かは、問題の性質やデータの量、目的によって決まる。客観性が重要で大量のデータが利用可能な場合、頻度主義が適切であることがある。一方、データが少ない場合や不確実性を考慮したい場合、ベイズ主義が適切であることがある。このバトルのポイントを一言で言えば「どこまで主観性を認めるか」という哲学的な問題となる。従っていろいろな意見があり、単純なものではないということである。
これからの方針としては、実用性や有用性を重視してどっちも両面で採用していくというスイスのような立場をとっていくことにする。
参考文献