DNNやLightGBMにデータを突っ込むだけで機械学習した気分になっていませんか?
私はそうでした。同時に、データを整形して、sklearnやlightgbmをインポートし、model.fit(X_train, y_train)するルーチンにどことなく退屈さを感じていました。
そんな折に、こんな本を見つけました。
この本では、一般的な機械学習の本で説明されるようなDNNなどの有名なモデルにとりあえずデータを突っ込むのものではなく、自分でモデルを設計して、推論アルゴリズムを使って解を求めるアプローチが紹介されています。
これは面白そうだと思いました。
私自身はベイズと機械学習それぞれには馴染みがあるものの、確率モデルを構築してゴリゴリ推論するような手法は初心者なので、まっさらな気持ちで本書を進めていこうと思います。
「ベイズ推論」と「ベイズ推定」は基本的に同義
ところで、本のタイトルの「ベイズ推論」という言葉ですが、この本では以下のように定義されています。
ある同時分布が与えられたときに、そこから興味の対象となる条件付き分布や周辺分布を算出することを、本書ではベイズ推論(Bayesian inference, Bayesian reasoning)あるいは単に(確率)推論(inference)と呼ぶことにします。
ちなみに、同じような言葉で「ベイズ推定」というのがありますが、その定義はWikipediaによると以下のとおりです。
ベイズ推定(ベイズすいてい、英: Bayesian inference)とは、ベイズ確率の考え方に基づき、観測事象(観測された事実)から、推定したい事柄(それの起因である原因事象)を、確率的な意味で推論することを指す。
どちらも英語ではBayesian inference。定義を見る限り、ベイズ推論の方が具体的な手順を指していますが、作業としてやることは同じように見受けられます。
もしかするとこの本の著者の方は何か特別な思い入れがあって「ベイズ推論」と呼んでおられるのかもしれませんが、ここでは「ベイズ推論」と「ベイズ推定」の違いはinferenceの訳し方だけで同義であるとみなして話を進めていきます。
「ベイズ推定」の考え方
今回は、簡単な例を使って、同時分布から条件付き分布を求める「ベイズ推定」の流れを見ていきましょう。
まず、ここに赤玉と白玉が複数個入った中身が見えない袋が1つあるとします。
赤玉と白玉の比率は未知であり、我々は赤玉の比率(パラメータ)$\theta \in (0, 1)$を知りたいとします。
袋の中を直接覗くのは禁止で、袋から玉を取り出して色を観測して袋に戻す試行を$N$ 回繰り返す操作のみが許されているとします。(観測値を$\bf{Y}=\{y_1, ..., y_N\}$とします。)
ここからどのようにして$\theta$を求めましょうか。
単純なやり方としては、$\theta$は定数であると考え、赤玉が出た回数を$N$で割ってその割合を$\theta$とすることができます(いわゆる最尤推定)。
しかし、例えば$N=2$で赤が出た回数が0回というのは容易に想像できる状況ですが、最尤推定だと$\theta=0$(赤玉の比率が0)になり、それはつまり袋の中に赤玉が存在しないという結論を導いたことになります。これは題意に矛盾していますね。
一方でベイズ推定の考え方では、直接観測できない未知のパラメータ$\theta$は確率変数だと考えます。そして、その確率変数が従う何らかの確率分布$P(\theta)$を仮定します。
いま確率変数である観測データが手元にあり、未知のパラメータも確率変数であると仮定したので、$\bf{Y}$と$\theta$の同時分布が以下のように表せます。
$$P(\bf{Y}, \theta) = P(\bf{Y} | \theta)P(\theta)$$
このような同時分布を定義できれば、観測データ$\bf{Y}$が所与のときの$\theta$の確率分布$P(\theta | \bf{Y})$が求まりそうです。具体的にはベイズの定理を用いることで、以下のような関係が導けます。
$$P(\theta | \bf{Y}) \propto P(\bf{Y} | \theta)P(\theta)$$
このように、ベイズ推定ではベイズの定理を使って同時分布から条件付き分布を計算する問題に帰着しています。
ここまでの手順をおさらいすると、求めたいパラメータ$\theta$について仮説の分布P($\theta$)を事前において、データ$\bf{Y}$を観測することでその分布が更新されて$P(\theta | \bf{Y})$が求まるという流れです。
以上がベイズ推定の考え方になります。雰囲気だけでも掴んでいただけましたでしょうか。
長くなってしまいましたが、ここまでお読み頂きありがとうございました。
注釈
↩1 | 値が試行ごとに確率的に決まる変数 |
---|
コメント