確率空間
確率空間
最初に測度とかボレル集合族とか可測とかの話をしておきたいので、 確率空間について話す所から始めます。
確率空間は私の知る限り、
- 古典的な確率空間の定義
- 測度論の入門的な確率空間の定義
- 確率変数とlawによる定義(主に実解析でよく使う)
- 分布による定義(主に関数解析でよく使う)
の4つの定義がある。
そして機械学習では3の定義が多くて論文でもだいたい3の定式化を使っていると思う。 たまに2の定義もある。
機械学習ではよく使われる3の定義だけど、これは測度論の本ではあまり扱われてない事がある(特に入門書の場合)。 自分は最初、3を中心とした定式化で議論するというやり方を知らずにずいぶん混乱した。 これは「測度論までやっておけば機械学習は十分」 という神話の副作用に思う。
という事で、ここでは3や4の話をもっとしていきたい。
古典的な定義
普通、標本空間と事象と確率の話からぼんやりと確率空間の話をするのが古典的な確率論の入門書の始まりなのだが、これがなんだか良く分からない。 というのはシグマ集合族と確率測度を出さずに、その話をしようとするからだ。
ここでは簡単に古典的な定義の話をして、それが全然わからん、という事から話を始めたい。
普通確率空間とは、の3つの構成要素からなる空間を言う。 で、この3つは古典的には標本空間、事象、そしてPと呼ばれる。
Pには、古典的な世界ではたぶん名前が無いけれど、測度論的な用語で言えば確率測度の事。 まずはこの3つの話を順番にしていきます。
標本空間
まず、サイコロを一つ振る、という事を考える。 この時、標本空間とは出る可能性がある全てのサイコロの目の事です。 この場合は
となります。普通で表すので、
と書いておきましょう。
イメージとしては、確率的出来事のとりうる、全要素の事です。 この標本空間からなにか一つの要素を取り出す事が、確率的な試行に対応します。
これは別段わからない事は無い。
事象族
さて、入門書で良くわからなくなるのが事象族です。これは本質的にはシグマ集合族の事なのに、 入門書ではそれを持ち出さないでぼんやりと定義される。
事象というのは、確率を求めたい、標本空間の何らかの部分集合の事と言われる。 なんじゃそりゃ。
で、そのあとに具体例が出てくる。例えば「偶数の目が出る」などが事象の例です、 とか言ってくる。
事象は、標本空間の部分集合なので、集合です。 例えば「偶数の目が出る」の場合は、
となります。この3つの要素を持った集合。
で、この事象を全部集めた物を事象族といいます。 事象が集合なので、その事象を集めた物は、集合の集合という事になります。 集合の集合は集合族と呼ばれるから、事象族と呼びます。
事象族の表記としては花文字Bとか花文字Fとかで書く。 FはF集合族から来ているのか?Bはボレル集合族ですかね。 シグマ集合族の場合はFを使う場合が多い気がする。古典的な場合はeventという事からかEを使う場合もある。
花文字というのは下みたいな文字の事です。
で、その事象族の要素となる事象は、普通の大文字で書く。この場合はF。
なお、集合体も集合族と同じ意味。 シグマ集合族はシグマ集合体と言っても良い。 体をなしているかどうか、とか細かい話はあるかもしれないが、このシリーズでは細かい事は気にしない。
花文字、手描きでうまく書けないからやめて欲しいのだけれど、業界の習慣なので仕方ない。
確率関数P
古典的にはなんて呼ぶのか良く知らないけれど、事象を引数として、その事象が起こる確率を返す関数をPと呼ぶ。
測度論の用語で言えば確率測度の事なんだけど、古典的な入門書では測度が無い状態ではぼやっと定義される。 そもそも定義もごまかしなので、それを正しくはなんと呼ばれるかとか全然興味湧かない。なので調べない。どうせこの辺はいい加減な誤魔化しなので、細かい事はどうでもいいんです。
だけど、このPは割と具体的なので、厳密な定義は入門書では謎でも、感覚的には何なのかはわかりやすい。 だから入門者が入門書を読んでいる段階でも、あまり苦労は無いはず。
例えば、
とか、そういうものだ。 こういう風に、事象Fを引数として、その確率を返す関数の事をPと呼ぶ。
ただそもそも事象とは何かとかぼやっとしてるので、 その対象に対する関数も古典的な世界ではあんまり細かくは議論出来ない。 だからぼやっとそういうもんだ、とわかれば、このレベルでは十分と言える。
入門書は、確率測度を元とした定式化を分かっている人が、それを古典的な言葉に翻訳して書いてある。 でも、測度の定義とかを出さないので、結局測度論を分かっている人だけが分かる自己満足な記述になってしまいがち。 そんな物に、分かるはずの無い入門者は苦労する事になる。 酷い話だ。
という事でこの辺わからない人は、あんまりわからないと深く考えず、とっとと測度論に行くのがオススメです。
古典的な確率空間
さて、さっぱり定義出来ていない物を合わせて定義もクソも無いのだが、 これら3つを合わせて確率空間と呼ぶ。
3つなのでトリプレットとか言ったりもする。
ちゃんと定義は出来てないから理解は出来てなくて当然だが、それぞれが具体的には何を指しているかを、具体例でちゃんと識別出来ておく必要はある。
記号 | 意味 |
---|---|
標本空間、 の事 | |
事象族、 標本空間の部分集合の集まり。 | |
呼び方は知らないけど、事象を引数にその事象が起こる確率を返す関数 |
古典的な確率空間でだいたいすべてを説明出来る
古典的なこれらの定義が何を指しているかをちゃんと理解しておけば、 機械学習に出てくる理論的な事は、原理的には全部説明出来ると思う。 機械学習の話をするには、本当は測度論とかは一切要らない。
だからすごいこの辺詳しい暇な友達が居たら、Deep Learningでわからない事が出てくる都度「古典的な言葉に翻訳して説明してくれよ!」って頼めば、古典論だけでだいたい問題は無いと思います。
ただ、職場とかでは誰も古典的な言葉で説明なんてしてくれないので、 一人分働くには測度論とかが要るのだ。 誰か流行りの論文を全部古典的な言葉に翻訳してくれればいいのにねぇ。
この、「アイデアを伝達する為に皆が使っているから実務家もここから先の数学が必要」 というのが、ほとんどの実務家にとっての数学の現実だと思う。
だから逆に言うと、変な性質を持ったゼロ測度の集合の時の振る舞いとか、 ジャンプする関数の片側極限の話とか、 そういう理論的に際どいところの証明とかは、実務家視点では要らない。 説明をする為の言葉とか、証明の為のパターンとか、そういうのだけが必要、と自分は思います(異論歓迎です)。
だから機械学習屋で、自分が理論系論文を書く訳では無い大多数の人は、 この説明に使われる、「言葉としての実解析」をどうやって学んでいくか、 という事を考える必要があると思うし、 「難しい事は全部飲み込む、言葉としての実解析を学ぶ本」とかあったらすごい良いと思う。 誰か書いて。
入門的な測度論的確率空間
古典的な話なんかしたくてこの文書を書いているのでは無いのです。 という事で次の測度論的な定義に進みます。古典的な確率空間の次は「入門的な測度論的確率空間」。
2012年とかその辺の時代なら、このセクションのタイトルに「入門的な」は要らなかったと思う。 「測度論的な確率空間を理解すれば機械学習に必要な確率論は全て理解出来たと言って良い(キリッ」 とか言えた。
で、分かってない人も、難しい数学の話は「ちゃんと知りたい人は測度論を勉強しましょう」とか測度論って単語を出してイキっておけば分かってるフリが出来ている、という事になっていた。
平和な時代だった…
もちろん今は測度論的な確率空間の初歩を知っている程度では、流行りの論文などさっぱり何を言っているか理解出来ない。 それでも、一応この「入門的な」測度論的確率空間の事を知っている人なら、 さわり位は分かるように書くのが論文とかのマナーとなっている気がする。 だから2018年現在でも、入門的な測度論的確率空間をちゃんと勉強する意味はある。
という事で2018年現在ではもはや「入門的な」とつけなくてはいけない測度論的な確率空間の話を簡単にしてみましょう。
といっても、そもそもに古典的な確率空間はこの測度論的な確率空間を誤魔化して説明しているだけなので、だいたい同じ物です。 測度論的な確率空間も以下の3つの要素からなります。
このうち、標本空間は古典的な物も測度論的な物も変わらない。
違うのは事象族とPです。
事象族はシグマ集合族で、Pは確率測度となります。 このシグマ集合族と測度は、このシリーズで重要なので、 「シグマとボレル集合族と測度」の章で独立して扱う事にします。
ちょっと前後しちゃいますが、一旦そちらを読んでから続きを読んでください。
以下では確率空間というコンテキストに絞って、シグマ集合族と確率測度の話をしていきたい。
シグマ集合族
確率空間を構成する3つの文字の一つ、シグマ集合族について。
厳密な定義はおいといて、シグマ集合族が指している物がどんな物なのかイメージしておくのは大切です。 特にこれが標本空間の部分集合の集まり、という事はちゃんと理解しておかないと、 論文が読めない。
シグマ集合族が指しているのは、古典的な例の事象族、と言っていた物です。
事象族はサイコロの目の例なら「サイコロの目が偶数」といか、「サイコロの目が4以上」とかそういう物でした。 書き方はいろいろだけど、最終的には必ずの部分集合で表せる。
シグマ集合族は、ある数学の性質を持った厳密に定義されている集合族の事だけど、 機械学習の実務家的には数学の性質はそんなに重要じゃない。
事象族をちゃんと定式化するとシグマ集合族の性質を持ってないとまずいらしくて、 だからその性質が要請されるだけで、 事象族の事を指していると思っておいて良い。 詳細はシグマ集合族の章を見てください。
まぁ開集合みたいなもんですよ。
確率測度
測度というものについてはシグマ集合族と測度の章で扱うのだけど、 ここでも簡単に話をしておく。
測度は、シグマ集合族の要素(つまり標本空間の部分集合)の大きさを測る関数です。 絶対的な大きさはどうでも良くて相対的な大きさだけが重要。 とにかく、部分集合の大きさを測る物、と思っておけば良い。
例えば、サイコロを一回振る、という例なら、サイコロの目の数、というのは立派な測度になります。 普通一般の測度はPじゃなくてで書くのでそれに習うと、
こんな感じで要素の数を数えるような物が測度です。
ただ連続な場合は数えるというとよくわからないですが、だいたいは連続空間の中で要素が広がっている長さで良い。 二次元なら面積で良い。 実際そんなような測度には、ルベーグ=スティルチェス測度という名前もついている。
で、測度と確率測度の違いは、確率測度は1で規格化されてるもの、というだけ。 全集合の測度が1になるような測度、それが確率測度です。
とにかく、部分集合の大きさみたいなのを測る関数、というイメージを持っておくのが大切。
入門的な測度論的確率空間について
以上の3つで、入門的な測度論的確率空間の定義が出来た事になる。
- なんかの集合
- その部分集合族
- 部分集合の大きさを測る関数
の3つで確率空間となる訳です。
理論的にはもちろんこんないい加減な定義じゃだめで、教科書にはもっと真面目な定義がある訳ですが。
この部分集合族はどういう性質を持たなくてはいけないのか、 その性質を持っているとどういう事がそこから証明出来るのか、 というのを調べていく事で、シグマ集合族という物の理解が深まっていきます。
そして測度というのもどういう性質を持っていないといけないのか、 その性質とシグマ集合族の性質から何が証明していけるか、 という事を延々と見ていく。
これが測度論的な確率論の入門となります。
ただ、こういう話を突き詰めても、あんまり連続の実数の話、 例えばガウス分布とかが出てきません。 こういった物は確率変数という物を持ち出さないといけないのですが、 これが測度論の入門的なところでは教科書的にあんまり入りきらないので、 上記の基本的な確率空間周りの理解を深めたあたりで終わってしまう。
でも機械学習ではだいたい実数上の連続分布をgradient descentで近似していくので、 確率変数の話を本格的に勉強してないといろいろ困る。
という事で、測度論の本の次の本、実解析の教科書を読む事になります。
確率変数による確率空間の定義
さて、上で定義した、入門的な測度論的な確率空間は、昨今ではDeep Learning系の論文ではほとんど使われていません。たまにあるけど。
最近はトリプレットの最後は確率測度では無くて、Random Variable、つまり確率変数で定義されています。
ここからがこの文書の本題。
確率変数もまた、確率空間と同様に数学のレベルに応じて何段階か定義があるところなので、独立した章で扱います(予定)。 以下で出てくる可測関数とは何かについても確率変数の章で詳細を説明する事にしますが、ここでも簡単に説明しておきます。
まず、確率変数の大雑把な定義から。 Xが確率変数であるとは、以下の2つの条件を満たす関数の事です。
- 標本空間からRへの関数
- 可測関数
確率変数は変数という名前がついていながら、関数です。 この確率変数とは何か、及びその周辺の事用語を一通り理解するのが「実解析の言葉を理解する」という表現で私が言っている事の実態で、 2018年現在で機械学習をやるプログラマが必要な数学という物の正体だと思っています。
普通、確率変数は大文字のXとかYで表されます。
まず条件1から、確率変数Xは以下のように書けます。
で、これが可測関数であるとは、「R上でのボレル集合族の元のXによる逆像が、上でのボレル集合族の元となっている」関数の事です。
さて、ボレル集合族が出てきました。 ボレル集合族の詳細は「シグマとボレル集合族と測度」の章でやる事にします。
言葉は難しいのですが、ようするにRの上のシグマ集合族です。Rの上の、いろいろな開区間を集めた集合族、と思っておきましょう。
さて、上の定義の「逆像」というのを考える為には、Xで特定の範囲が写されているような状況を考えます。 以下みたいな感じ。
この青い範囲の物をXで全部写すと、R上の何かしらの部分集合になる訳です。それを赤で書いてます。
さて、可測関数というのは、先に赤い方を、シグマ集合族の元になるように選びます。 この時、ここにXで来るような側を全部集めた物が、側でシグマ集合族になっている、という事です。
で、右側のRでのシグマ集合族としては、ボレル集合族が使われます。 ボレル集合族は実数上の自然なシグマ集合族として使われるもので、 だいたい開区間を集めた物です(その拡張だけど)
だから感じとしては、写った先であるR側のシグマ集合族の元を好きに選んでも、 それをXが来る場所に戻すと、もとの方のシグマ集合族に入っている、という事です。
さて、Xは可測関数なので、Rの上のボレル集合族の元、つまり右側の赤いやつには、 必ずの方の青いやつが対応します。
なので、青い方に確率測度が定義されていれば、Rの赤いヤツを指定するとそれのもととなる青い奴の測度を一意に求める事が出来ます。
数式で言うと、逆像をと書くと、
という関数は、R上のボレル集合族の測度となる。
これは測度論の入門書とかだと分布、と呼ばれていて、 機械学習でもあんまり厳密な話をしない人は分布、となんとなく使ってる気がする。 だが、実解析とかの方に行くと分布って累積分布関数の事を指すようになるので、 最初から分布とは言わない方が良いと思う。 分布=累積分布関数と脳に負荷をかけずに解釈出来るように慣れておかないと、実解析の教科書読む時に本当に辛い思いをする事になるので…
さて、実解析とかでは、これはXのlawと呼ばれたりして、とか書く。 という事でこのシリーズでもlawと呼ぶ事にする。 lawの日本語は知らない。まぁここまで来たらもう日本語はいいでしょう。
呼び方はいいとして、この測度というのは、概念的にはPが使われているのだけど、 一方で実数のボレル集合族上で測度が定義されていれば、それがもともとはPから出来ている、という事なんて知らなくても良い。
実際、lawを一つ決めると、それに対応したPは一意に決まったはず(TODO: あとで厳密な条件を調べる)
そういう訳で、Xとlawを指定する事とPを指定する事は等価なので、 Xとlawを指定する確率空間の定式化が可能となる。 これが機械学習で一番使われている、確率変数による確率空間の定式化だと思う。
確率変数とlawをもとにしたトリプレット
確率変数とlawを決めると確率空間が定義出来る、という事は、 トリプレットとしては以下のような物を考えている、という事になります。
のかわりにになる訳ですね。 これは普通にガウス分布とか考える時にみんな暗黙のうちに考えている標本空間なのですが、 それは実は確率変数をもとにした確率空間の定義で考えていた、という事なのです。
で、そのの部分集合としてボレル集合族であるを確率を測る対象とする訳です。 もその上のも、 問題によらず世界に一つなので、特にことわりを入れなければこれについて考えている、 というのが機械学習の議論のお約束だと思います(ただし論文では明示するのが普通)。
で、唯一問題によるのが最後の。確率変数のlawは確率測度なので入門的な定式化と揃えるならPと書く所なのに、なぜかと書く事が多いですね。 なんでPじゃないんでしょうか?lawだという事を明示的に表す為ですかね。
ここで注目して欲しいのは、このトリプレットの中には、肝心の確率変数Xが居ない、という所です。 lawを決めてしまえばボレル集合族に対する測度は定義出来るので、 もうXもPも必要無くなってしまう。
また、確率変数とそのlawを指定すれば、確率空間は決まってしまう、 という事にも注意が必要です。 だからこの2つだけ決めればその上での議論は出来るし、 そういう風に始めるのはDeep Learningでは一般的です。
確率変数とlawによる確率空間の定義を理解している必要性
さて、確率空間として何を考えているのか、というのは、どの位理解している必要があるのでしょうか? 例えば「確率変数Xの分布pを推計する」みたいな話をしている人が居た時、 これをどのくらい正確に理解している必要があるのか、という話だと思います。 (なお上記の表現は、ちゃんと分かっている人にはpが何を指しているのかはかなり曖昧です)。
自分の見解としては、登場人物か確率変数とpだけなら必要無いと思います。 ただ、このpを等価な関数空間で探索する場合には、この辺の事情を正確に把握していないと辛い。 具体的には確率密度の関数空間の探索に置き換える(WGAN)とか、 確率変数の和がどういうlawに従うのか、という事を議論する必要がある時、などです。
また、極限定理などの収束を議論する必要がある時も、lawの話になっていくので、この辺の構造をちゃんと理解している必要があります。 機械学習の言葉で言うなら、gradient descentとかのoptmize周辺の理論を議論したいとなると、 ちゃんと確率空間を意識して読んでいく必要が出てきます。
分布による定義
機械学習的には確率変数とlawによる定義でだいたい事足りますが、 もっと関数空間を本格的に分析しよう、と思ったら、もう一段抽象的な定義をするのが普通のようです。 これは関数解析で確率論の話をする時によく用いられる確率空間の定義になります。
関数解析的には、確率なんて物を持ち出さなくても、確率に関わる関数空間の構造について、かなりの議論が出来ます。 この場合、中心になるのはnon-decreaseな関数で、最大値が1のもの、 みたいなすごく一般的な定義で分布と言われる物が最初に決まる。
ジャンプがどういう物が許されるか、とかすごく細かい話が続くのだけど、 基本的にはこのレベルでは確率的な要素は特に無い。
ただ、この分布でかなりの部分の確率論の話が出来てしまう。
確率変数同士の距離とか、距離自身が確率分布する場合を扱おうとするとこちらの定義が主流となる。 だが、自分の知る限り、機械学習ではこちらの定式化が使われる事はあまり無い(私は見た事無い)。