- @ThothChildren
- 2018.12.8
- PV 222
ベイジアンネットワークとは
ー 概要 ー
ベイジアンネットワークとは、事象の状態や確率などから未知の事象の確率を推定するような確率推定ができる有向非循環なグラフィカルモデルで表現されるネットワーク.各事象が条件付き確率を伴って因果関係で結ばれる形でグラフ表現されている.各事象は原因となっている親ノード以外とは独立であるとされる.離散的な確率が用いられることが多いが連続的な確率も適用可能.
この章を学ぶ前に必要な知識
条件
- 各ノード(事象)は親ノード(事象)以外からは独立
- 推論前に条件付き確率表(CPT)を埋めておく
効果
- 観測できる事象や確率、事前確率とネットワーク構造から未知の確率を推定
- 原因の事象から結果を、結果の事象から原因を推測することが可能
ポイント
- 離散的な確率でなく連続的な確率も扱える
- ベイズの定理や周辺化によって未知の確率を求める
- ベイジアンネットワークの構造推定を行う場合と構造は与えておく場合がある
- 一つの子ノードに複数の親ノードはいて良いが、非循環であること
- 因果関係は非循環であるが、推定時に情報の流れは双方向
- 一部のみの推定や不完全な情報の中での推定も可能
解 説
ベイジアンネットワークとは、事象の状態や確率などから未知の事象の確率を推定するような確率推定ができる有向非循環なグラフィカルモデルで表現されるネットワーク.
各事象が条件付き確率を伴って因果関係で結ばれる形でグラフ表現されている.各事象は原因となっている親ノード以外とは独立であるとされる.離散的な確率が用いられることが多いが連続的な確率も適用可能. | ベイジアンネットワークとは |
概念図 | |
ベイジアンネットワークは上記の図のように各ノードと有向エッジによって結ばれて構成されているネットワークです.
これらのエッジにはそれぞれ条件付き確率表(CPT)を持っていて、親ノードの状態に子ノードの状態が依存しています.逆に言えば親ノード以外の状態には独立.
ベイジアンネットワークの学習の流れ
ベイジアンネットワークの学習の流れについてです.
①一番初めに、ベイジアンネットワークの構造を決定する必要があります.上記のようなネットワークを準備する方法は大きく二つあります.
・データを与えられて構造学習によって構造を決定
・あらかじめ人間で依存関係を推定し構造を決定
各ノードには一つの確率変数を対応させます.
②次に求まった構造において各有向エッジのCPTを求めなくてはいけません.
十分なケースがデータとして揃っていて不足がない場合(これを完全データと呼ぶ)、各エッジの確率は、親ノードをAとして状態A1にP回、状態A2にQ回、子ノードをBとして状態B1にS回(A1のときS1回, A2のときS2回)、状態B2にT回(B1のときT1回, B2のときT2回)なったときに、以下のようにCPTが求まる.
$$P(B1|A1) = \frac{S1}{S}$$
$$P(B2|A1) = \frac{S2}{S}$$
$$P(B1|A2) = \frac{T1}{T}$$
$$P(B2|A2) = \frac{T2}{T}$$
十分なデータがある場合、最尤推定によって解$$\theta = \frac{n}{N}$$(nはその事象の発生回数、Nは全体の試行回数)と求まるため、上記のような計算で計算ができます.
データが少ない不完全データの場合は上記の近似が適切でない可能性があります.その場合は事前確率分布を作りそれに伴った確率分布を推定します. | ベイジアンネットワークの学習全体の流れ |
学習によって条件付き確率表CPTが求まっています.
推定時には、その条件付き確率表を元に未知の確率変数を求めます.
条件付き確率表CPTとベイズの定理によって求めていきます.
既知となったノードはその確率または状態を入力とし、最も上流のノードは事前確率分布を設定したりします.
全ての計算を愚直に行うと、計算量が爆発しメモリが不足になくなったり時間が足りなくなったりするため、通常以下のような方法を用いて、
簡易的に計算が行えるようにする.
確率伝播法 : 上記で示した一番素直な計算方法.上流または下流から周辺化や同時確率などを用いて算出していく.複数の親ノードがあるときは計算ができない.
Junction Tree法:親ノードとのエッジを統合してsingle connectedな無向木構造にしてしまう.ノード数が増えると計算量が増加.
Loopy belief propagation:強引に局所的確率伝播法を適用する手法.多くのケースで問題なく動くことを確認している. | ベイジアンネットワークの推定時の流れ |
ベイジアンネットワークの構造学習にも複数の種類があります.
構造学習によってデータからネットワーク構造を推定します.
・MWSTアルゴリズム
・K2アルゴリズム
などが挙げられます. | ベイジアンネットワークの構造学習 |
この章を学んで新たに学べる
Comments