今回から数回にわたって、グラフィカルモデルを利用した確率モデルの設計についてお話しします。機械学習を機械学習たらしめているものの一つは、扱う現象の複雑さにあると言えます。複雑な現象を解析するためにはそれに見合った複雑なモデルが必要で、それを簡潔に記述するための方法としてグラフィカルモデルが開発されました。
「グラフィカルモデルを使って現象をモデル化し、必要に応じて近似推論法を用いて未知の値を推定する」
という一連の流れが身につくと、いろんなデータサイエンスの課題に対してシンプルかつフォーマルに取り組めるようになります。
それではまず始めに、超超超重要な確率の加法定理と乗法定理の確認をしてみましょう。
・加法定理(sum rule)
\[ p(x) = \sum_y p(x,y) \]
・乗法定理(product rule)
\[ p(x,y) = p(x|y)p(y) \]
$p(x,y)$は同時分布(joint distribution)と呼ばれ、対称性$p(x,y) = p(y,x)$が成り立ちます。$p(x|y)$は条件付き分布(conditional distribution)と呼ばれ、$y$が与えられた時の$x$の分布です($y$の分布ではありません)。
ベイズ学習と呼ばれる機械学習の技術は、実は上の2つのルールをただ黙々と使っているに過ぎません。残りは、これらを具体的に計算するための部品である確率分布たちと、(必要に応じて使う)近似推論くらいしかありません。
また2つのルールから有名なベイズの定理が導けますので、重要な結果として覚えておいて損はないです。
・ベイズの定理(Bayes' theorem)
\[ p(x|y) = \frac{p(y|x)p(x)}{\sum_x p(x,y)} \]
さらに用語として知っておいてほしいのが独立です。次の式が成り立つときに限り、$p(x)$と$p(y)$は独立であると言います。
\[ p(x,y) = p(x)p(y)\]
さて、ここからが今日の本題なのですが、今回はDAG(Directed Acyclic Graph)と呼ばれる、ループ構造のないもっともポピュラーなグラフィカルモデルを扱うことにします。まず上記の表記を使った確率モデルと、ノードと矢印を使ったDAGとがどのように対応付けられるのかを確認したいと思います。こういうのは細かい定義をうだうだ言う前に例示した方が早いかと思います。
モデル1) head to tail
3つの白丸ノードA,B,Cが右向きの矢印のみでつながっています*1。白丸が3つなので確率モデルの式も次のように3つの分布の積で書けます。
\[ p(A,B,C)=p(A)p(B|A)p(C|B) \tag{1} \]
ノードそれぞれに対して確率分布を$p(\cdot)$を置き、矢印の元になっているノードを「条件」として右側に書けばいいんですね。
さて、もしこのモデルでノードBが「観測」された場合はどうなるのでしょうか。「観測」とは、確率変数に具体的な数値が与えられるという意味です(条件付けられる、の方がより正確です)。グラフィカルモデルでは観測されたノードは黒丸で表現されます。
はい、こんな感じです。このとき、AやCの確率分布はどうなるのでしょうか。Bは黒丸なのでもはや分布を持たず、白丸だけの分布を考えればOKですね。
\[p(A,C|B)\]
ということで、これを式(1)と、確率の加法定理と乗法定理を使ってちょこっと計算してみましょう。
\[p(A,C|B) = \frac{p(A,B,C)}{p(B)} = \frac{p(A)p(B|A)p(C|B)}{p(B)} = p(A|B)(C|B) \]
というわけで、ノードAとCは、Bが観測された状態では「独立になる」ことがわかりました。これは条件付き独立って呼ばれています。あるいは「BはAとCをブロックする」という言い方もします。
モデル1におけるこの結果はとても重要です。一度Bが観測されてしまえばAとCの値は相関を持たなくなるんですね。
モデル2) tail to tail
さて、AB間の矢印の向きが先ほどと違い、今度はノードBがA,Cの親になっているような状態です。式で書くとこんな感じです。
\[ p(A,B,C) = p(B)p(A|B)p(C|B) \tag{2} \]
先ほどと同様、Bを観測してみることにしましょう。
この事後分布が先ほどの例のように条件付き独立になるかどうか計算してみましょう。
\[ p(A,C|B) = \frac{p(A,B,C)}{p(B)} = \frac{p(B)p(A|B)p(C|B)}{p(B)} =p(A|B)p(C|B) \]
はい、というわけで今度もまたAとCはBが与えられたとき独立になるようです。ノードBはAとCをブロックする、と言うんでしたね。
モデル3) head to head
最後ですが、このhead to headと呼ばれる3つ目のモデルが一番のやっかいものです。これを説明したいがために前の2つのモデルを紹介したと言っても過言ではありません。
対応する式は次のように書けます。
\[ p(A,B,C) = p(A)p(C)p(B|A,C) \tag{3} \]
今までのモデルと違い、2つの変数が条件付けられているような項$p(B|A,C)$が出てきましたね。ちなみにこのとき、グラフから読み取っても直感的かと思いますが、AとCは独立です。念のため加法定理を使って調べてみまし\ょう。
\[ p(A,C) = \sum_B p(A,B,C) =\sum_B p(A)p(C)p(B|A,C) = p(A)p(C) \]
$\sum_B p(B|A,C)=1$を使ったのは大丈夫でしょうか。Bの確率分布なので足し合わせれば絶対に1ですね。というわけで、AとCは独立です。これは観測されていないノードBがAとCをブロックしている、とも言えます。
さて、次にBを条件付けしてみましょう。
今までどおり、対応する事後分布が条件付き独立になるか調べてみましょう。
\[ p(A,C|B) = \frac{p(A,B,C)}{p(B)} = \frac{p(A)p(C)p(B|A,C)}{p(B)} \]
これは他の2例と違って一般的に$p(A|C)p(C|B)$に分解することは出来ません。これ以上どんなに式をコネくり回してもダメです。もともとは独立だったAとCが、Bが観測されることによって互いに依存するようになってしまいました。
このように、モデル3ではBを観測することによって、AとCの分布がより複雑なものになってしまいました。実はこの現象が、ベイズ学習において近似推論手法(変分近似*2やMCMC*3)が必要とされる理由なんですね。
さて、今回はグラフィカルモデルの導入と、簡単なモデルにおける事後分布の推論を見てみました。次回は有向分離と呼ばれる、もっともっと複雑なグラフィカルモデルに対するノードの独立性の判定アルゴリズムを紹介します。さらに、具体的ないくつかの例(教師なし学習、回帰・識別、半教師あり学習、共変量シフト、転移学習、など)をグラフィカルモデルで表現し、それらに対して有向分離を適用してみたいと思います。
*1:ちなみに矢印の根元にあるノードは先にあるノードに対して親であると言います。逆は子です。この場合は例えばAがBの親であるとか、CがBの子であるとかって言ったりします。祖先や子孫も直感どおり定義されます。
*2:変分近似の基礎
http://machine-learning.hatenablog.com/entry/2016/01/23/123033
http://machine-learning.hatenablog.com/entry/2016/02/04/201945