ちょっとだけ振り返って

推敲の必要あり

確率分布に対する操作

ベイズ推論では確率分布に対する様々な操作を駆使するので、確率分布を使うと何ができるのか、そして自分はいま何をしようとしているのかを整理しておかないと、いつの間にかまったく見当違いな計算をすることになる。ここでわかりやすくサイコロの例と理解を対応づけておこう。

0. 確率分布の表記のイメージ

あるサイコロの目の確率分布をp(x)p(x)とおくと、p(x)p(x)は「xxの目がどれだけ出やすいか」を表している。「11の目がどれだけ出やすいか」は

p(x=1)p(x=1)

のように表記する。これは正規分布のような連続型確率分布でも同じことである。正規分布は

p(x)=12πσ2exp((xμ)22σ2)p(x) = \frac{1}{\sqrt{2 \pi \sigma ^ 2}} \exp \left( - \frac{(x - \mu) ^ 2}{2 \sigma ^ 2} \right)

と複雑な式になっているが、正規分布にしたがって22がどれだけ出やすいかは、単にx=2x=2を代入して

p(x=2)=12πσ2exp((2μ)22σ2)p(x=2) = \frac{1}{\sqrt{2 \pi \sigma ^ 2}} \exp \left( - \frac{(2 - \mu) ^ 2}{2 \sigma ^ 2} \right)

として計算すればよい。ただし気を付けねばならないのは、ここで求めたp(x=2)p(x=2)は実数22が観測される確率ではない(確率分布p(x)p(x)は確率と違ってp(x)>1p(x) > 1の値も取りうる)。確率分布はxxの観測されやすさの尺度ではあるが確率とはまた別の尺度である

確率と確率分布の関係を一応述べておくと、観測される値が集合XXに属する確率P(X)P(X)は、確率分布p(x)p(x)を用いて

P(X)=Xp(x)dμ(x)P(X) = \int _ X p(x) d \mu(x)

と書ける。右辺はルベーグ積分であるが、とりあえずここでは「確率と確率分布は別物である」「確率分布を積分すると確率が求まる」とだけ知っておけばよい。

p(x=2)p(x=2)はサイコロを投げる前であれば「22がどれだけ出やすそうか」を表す尺度と考えられるが、実際にサイコロを投げて22が出たあとで「この22の目がどれだけ出やすかったか」、つまり「22の目が出たのはどれくらいめずらしい現象であったか」を表す尺度とも考えられる。

1. サンプリングする

確率分布から値を取り出す(サイコロを振る)ことに相当。たとえばデータを観測することも、データを生成する確率分布からのサンプリングとみなせる。

xp(x)x \sim p(x)

のように書く。左辺は実現値(サイコロを振って出た値)、右辺は確率分布(サイコロの目は何が出そうか)である。

ただし機械学習においてはデータを生成する確率分布p(x)p(x)の素性は、通常はわからない。つまりサイコロの目に何が書いてあるかもわからないし、どの目が出やすいかもわからない状況からのスタートになる。

2. サンプリングした結果からデータを生成する確率分布を予測する

サイコロの目に何が書いてあるか、どの目が出やすいかは、サイコロを振り続けてみれば(すなわちデータを観測していけば)次第にわかってくる。100回ほど振ってみて{1,2,3,4}\{1,2,3,4\}ばかりが出るならば4面ダイスだろうし、{1,2,3,4,5,6}\{1,2,3,4,5,6\}ばかりが出るならば6面ダイスだろう。さらに1000回ほど振ってみれば、重心が偏ったイカサマサイコロかどうかもわかってくる。

ここで重要になるのは「同じサイコロ」を100回振る(実験環境を変えずにデータを観測する/予測したい対象に関するデータを集める)ということだ。ダイスAを99回振っておいて「100回目には別のダイスBを振ります。さぁどんな目が出る?」と聞いても何が起こるかはまったくわからない。つまり、予測したい対象に関係のないデータはいくら集めても意味がない

このことを数式で表してみよう。サイコロを100回振るということは確率変数が100個あることになる。つまりその同時確率分布は

p(x1,x2,,x100)p(x _ 1, x _ 2, \ldots, x _ {100})

である。同じサイコロを100回振る(1つのサイコロを100回振るか、それぞれが同じように振舞うよう目や材質などの条件を揃えた100個のサイコロを一斉に振る)ということは、それぞれの確率変数x1,x2,,x100x _1, x _ 2, \ldots, x _ {100}が同じ確率分布p(x)p(x)からサンプリングされることを意味する。つまり

p(x)=p(x1)=p(x2)==p(x100)p(x) = p( x _ 1) = p (x _ 2) = \cdots = p (x _ {100})

である。また、ii番目のサイコロを振る試行は他のサイコロを振る試行には影響を与えないから、独立試行の確率で、

p(x1,x2,,x100)=p(x1)×p(x2)××p(x100)=n=1100p(xn)p(x _ 1, x _ 2, \ldots, x _ {100}) = p(x _ 1) \times p(x _ 2) \times \cdots \times p(x _ {100}) = \prod _ {n = 1} ^ {100} p(x _ n)

と書ける。もう1回ついでに同じサイコロを振るときの同時確率分布は

p(x,x1,x2,,x100)=p(x)n=1100p(xn)p(x, x _ 1, x _ 2, \ldots, x _ {100}) = p(x)\prod _ {n = 1} ^ {100} p(x _ n)

になる。

サイコロを100回振って確率変数x1,x2,,x100x _ 1, x _ 2, \ldots, x _ {100}を観測したあとで101回目にどんな目が出そうかは、条件付き確率分布

p(xx1,x2,,x100)p(x|x _ 1, x _ 2, \ldots, x _ {100})

で表せる。これはnn回目に出た目をana _ nとおけば

p(xx1,x2,,x100)=p(x)n=1100p(xn=an)p(x | x _ 1, x _ 2, \ldots, x _ {100}) = p(x) \prod _ {n=1} ^ {100} p(x _ n = a _ n)

である。何回観測したかいちいち明記するのが面倒なときは100回分の観測データをD\mathcal{D}とおいて、

p(xD)=p(xx1,x2,,x100)=p(x)n=1100p(xn=an)p(x|\mathcal{D}) = p(x|x _ 1, x _ 2, \ldots, x _ {100}) = p(x) \prod _ {n=1} ^ {100} p(x _ n = a _ n)

のように略記する。残念ながら上式の第三辺には未知の確率分布p(x)p(x)が残っているので「どんなp(x)p(x)がいまの状況をもっとも起こしやすかったのか」を考える。つまり最適化問題

argmaxp(x)p(xD)=argmaxp(x)p(x)n=1100p(xn=an)\underset{p(x)}{\operatorname{arg}\operatorname{max}} \,\,p(x|\mathcal{D}) = \underset{p(x)}{\operatorname{arg}\operatorname{max}} \,\, p(x) \prod _ {n=1} ^ {100} p(x _ n = a _ n)

を解け、というのが機械学習でよく見られるケースになる。

データを生成する真の確率分布p(x)p(x)を知ることができない状況でも、その確率分布からなんらかの方法でサンプリングできるならば、観測されたデータD\mathcal{D}によって補強された条件付き確率p(xD)p(x|\mathcal{D})は求めることができる

3. 未観測の値がどんな値を取りそうか予測する

「10回コインを投げ続けてすべて表が出た。さて11回目に表が出る確率は?」という問いはなかなか興味深い。誰かに聞かれたらどう答えるべきか、あなたも少し考えてみてほしい。

答えは出ただろうか?回答は以下の3パターンに分類される。

  1. 確率は1/2である(コインを投げる試行は毎回独立だから)

  2. 確率は1/2よりも大きい(コインがイカサマだろうから)

  3. 確率は1/2よりも小さい(こんなに続けて表が出たのだから次は裏になりそうだ)

括弧の中の理由づけはともかく、論理的には、同じか、より大きいか、より小さいかの3択である。正解はどれだろうか。

実は1,2の回答が正しい。より正確には、どんなモデルを採用するか(何を信じて何を疑うか)で、どの回答が正しいかが変わる。コインの投げ方を変えれば3が正しい場合もある。順番に見ていこう。

1. 確率は1/2である

「コインの表裏が出る確率はそれぞれ1/2である」という仮定を強く信じて疑わない場合、コインを投げる試行は毎回独立なので、次にコインを投げたときに表が出る確率は1/2のままでよい。

2. 確率は1/2よりも大きい

「コインの表裏が出る確率はそれぞれ1/2である」という仮定を疑う場合、すなわち「コインの表裏が出る確率には偏りがあるかもしれない」と仮定した場合、次にコインを投げたときに表が出る確率は1/2よりもおそらく大きくなるだろう(これは実際にモデルを設計して計算してみないとわからない)。極端な話、映画『ダークナイト』のハービー・デントがやっていたように両面とも表のコインなのかもしれない。

コインの表裏が出る確率の偏りをデータから予測する場合はp(xD)p(x | \mathcal{D})を計算すればよい。

3. 確率は1/2よりも小さい

コインを10回投げてそれらがすべて表であることを確認したあとではこの見立てはおおよそ誤りである

しかし自分から見えないところでコインを投げてもらって「11枚中少なくとも10枚のコインは表だよ」と教えられたときはこの見立ては正しく、実際に公正なコイン(表裏の確率がそれぞれ1/2)を用いても、残りの11枚目のコインは表よりも裏のほうが11倍出やすい。

この違いを生むのはコインの並びを考慮するか否かである。「10回投げてすべて表だったときに11回目に表が出る確率」では「最初の10枚」が表である。一方で「11枚投げてうち少なくとも10枚が表だったときに11枚目が表である確率」では「11枚のうちどれか10枚」が表である。これらの状況は区別して考えねばならない。

まず「最初の10枚が表であるケース」だが、それを知ったあとで11枚目が表かどうかは11枚目のコインだけによって決まるのであり、表が出る確率は公正なコインなら1/2である。

次に「11枚のうち少なくとも10枚が表であるケース」を考える。11枚中ぴったり10枚が表である(1枚だけ裏が混じっている)のは、11枚のうちどれを裏にするかで11通り存在する。一方で11枚とも表であるのは1通りしかありえないから、公正なコインであれば1枚だけ裏が混じるケースがすべて表であるケースの11倍起こりやすい。

人間の脳はどうもこの辺りの区別が直感的には行えないようにできているらしい。試しに「箱の中でかきまぜた11枚のコインを1枚ずつ取り出して10枚が表であることを確認した」とき、残りの1枚が表である確率はどうなるか、考えてみてほしい。

実はこれも裏が表の11倍出やすいケースになる。3枚くらいで実際に試してみるとよい。

Last updated