機械学習の定番モデル:グラフィカルモデル!
動機
今回はグラフィカルモデルについて勉強しました。 結構楽しかったので、学んだことをまとめていきたいと思います。 忘れた時に思い出すために、流れを意識して、言葉で整理して見ました。
グラフィカルモデルとは?
確率変数間の依存関係をグラフを用いて表現したものです。 グラフ表現による利点は * 視覚化によりモデルの理解が容易になり、新規モデルの設計方針にもなる * グラフの構造を調べることで、確率変数間の関係を把握し、条件付き独立性などのモデルに関する性質を得ることができる。 * 推論や学習におけるモデルの計算を、暗に数学的な表現を伴うグラフ操作により表現できる。
ざっくりというと、わかりやすく、計算しやすくなるということです。
具体的にどういうもの?
大きく分けて二つのクラス(種類)があります
- ベイジアンネットワーク(有向グラフによって表現されたモデル)
- マルコフ確率場(無向グラフによって表現されたモデル)
グラフィカルモデルにおいては、条件付き独立性というのが重要です。なぜなら、確率変数間に独立または条件付き独立が成立すると、同時分布を個々の確率変数の周辺分布に因数分解できて、組み合わせの数が減ることで計算量が減少するためです。 モデルを考える上でも、計算効率と表現力のバランスを考えると、条件付き独立という関係が非常に重要になります。
条件付き独立性
ここで、条件付き独立性が重要らしいので、グラフから読み取ることを考えます。 まずは有向グラフについて考えます。 条件付き独立をグラフから読み取る上で、知っておくべき3つの基本的なグラフ構造(有向グラフ)があります。 それが以下の3つです。
- tail-to-tail
- head-to-tail
- head-to-head
条件付き独立は3つ以上の確率変数において初めて定義されるので、これらの基本的なグラフ構造は3つの確率変数を対象に考えています。
次に無向グラフにおいて条件付き独立性を読み取ることを考えます。無向グラフは有向グラフよりも簡単に、グラフから条件付き独立性を読み取ることができます。リンク(またはエッジ)に向きがないため、tail-to-tailなどは考えなくてよく、3つの確率変数の真ん中の確率変数が観測されているかで、残りの2つの確率変数の条件付き独立が成り立つか決まります。
無向において条件付き独立性をグラフから読み取るのは簡単なので良いので、話が有向グラフに戻りますが、より大きなグラフにおいてあるノードがどのノードと条件付き独立になるか調べるにはどのようにすれば良いでしょうか?
実は、マルコフブランケット(マルコフ境界)と呼ばれる、着目ノードの親、子、共同親のノードの集合のみを考えば良いです。大きな確率モデル(グラフの中から)着目している確率変数のノードに対して、親か子か共同親の確率変数のノードのみを考えれば良いということです。これらに対してリンク(エッジ)に注目し上記のtail-to-tailなどの関係を用いて、そのノードと着目しているノードの条件付き独立性を考えることができます。
ちなみに無向グラフにおいては、マルコフブランケットを考えるまでもなく、上記のように隣接しているノードを考えれば良いです。こちらのスライドでは無向グラフにおいてもマルコフブランケットを定義していますが、PRMLではマルコフブランケットは、「着目ノードに対する親、子、共同親からなるノードの集合」と定義されているので、有向グラフについてのみ考えているように思います。 (嘘です。下巻p.97で無向グラフにおいては着目ノードの隣接ノード集合がマルコフブランケットとされていました)
有向分離
ここまでは3変数間での条件付き独立性をグラフから読み取ることについて考えてきました。次はそれを一般化し、ノード集合間での条件付き独立性をグラフから読み取ることを考えます。 グラフから条件付き独立性を見出す方法が有向分離です(有向グラフの有向分離性を考えること)。
ある有向グラフにおいて、ノード集合Aとノード集合Bが条件付き独立か調べたい時は、AとBをつなぐ全ての経路上のノードに対して、tail-to-tail、head-to-tail、head-to-headかどうか、またそのノードの確率変数が観測されているかどうかを見て、経路が遮断されるか(条件付き独立か)どうかを判断します。
無向グラフにおいては、経路上のノードの確率変数が観測されているかどうかだけで判定できます。(経路上のノードのいずれかが観測されていれば、ノード集合AとBは条件付き独立でないし、観測されていなければ、条件付き独立です。)
因子グラフ
さてここまで有向グラフと無向グラフで分けて考えていましたが、ここからはこれらを統一的に扱うことを考えます。具体的には、因子グラフという、無向グラフのより詳細な表現を用います。 ある無向グラフに対する因子グラフは一意ではなく、どの因子グラフにするかはモデル設計者に委ねられています。
モラル化
ちなみに因子グラフにする前に、有向グラフは無向グラフにする必要があります。(これをモラル化と呼びます)。モラル化は、親が1人なら、リンクの矢印をとり、親が複数なら、親同士を無向リンクでつなぐ(結婚させる)ことで行えます。
無向グラフは条件付き独立性について扱いやすくなっており、モラル化することで、リンク(エッジ)の向きという情報を落とす一方で、条件付き独立性のグラフからの読み取りが容易になるという恩恵を得られます。
推論アルゴリズム
続いて、推論アルゴリズムについてです。といきたいところですが、自分の理解がまだ浅い部分もあるので一旦今日はここまでにしておきます。
以下下書き 自分が作ったモデルにおいて、(ある確率変数が観測された状態で)、未観測の確率変数の分布について推測する時の話です(?)。 因子グラフにすると良いことは、head-to-headを扱いやすくなり、統一的にアルゴリズムを適用できることにあります。 もともと木構造だったものをモラルかでループありに変換して、因子グラフに変換して木構造に戻すということを行います。
連鎖は矢印を取るだけで良い 加算と乗算の順序をうまく変形する。メッセージという概念を考える メッセージパッシング
木構造の例 潜在変数が離散確率変数の時隠れマルコフモデルという
潜在変数が 離散変数 積和アルゴリズム 連続変数 積積分アルゴリズム
ループありの場合は厳密解ではなく近似解
まとめ
PRML8章の流れは?
MAP推定値 周辺分布
参考
このスライドは非常にわかりやすいです。 グラフィカルモデル入門 PRML 第8章
徐々に追記していきます。
todo
グラフって?数学とグラフ、どういう分野があるか。どこで学べるか。 そもそもモデルとは? なぜマルコフブランケットだけを考えれば良いのか?p.95 マルコフ確率場の定式化 計算量