ベイジアンネットワーク

トップページ研究分野と周辺記号論理非古典論理

複数のp→q等の相互に関連する因果関係はグラフを構成する。ベイジアンネットワークは非循環有向グラフ(→を辿っても、元のノード(円)に戻らないグラフ)を扱う。
原因から結果が起きる確率をデータとして持ち、起きた結果からその原因が何であったかの確率を計算出来る。

条件付確率とベイズの定理

事象aが起きる確率を一般的にP(a)と書く(aを命題とすると真となる確率とも考えられる)。
事象aと事象bが同時に起きる同時(結合)確率をP(a,b)と表記し(又はP(a∩b))、aが起きた場合にbが起きる条件付確率をP(b|a)と表記(又はPa(b))する(aが真のときのa→bの確率となる)。
aとbが互いに独立(其々の発生確率が、相手の状況に関係しない)の場合、P(a,b)=P(a)P(b)と積の形で記述出来る。
P(a,b)=P(b|a)P(a)は、実際にa→bの因果関係があるか否かに係らず自明である。また、P(a,b)=P(b,a)=P(a|b)P(b)となる。
また、P(c|b,a)=P(c,b,a)÷P(b,a)の関係も成り立つ(条件付確率は、後件も含めた同時確率を前件だけの同時確率で割ったもの)。
上記のP(b|a)P(a)=P(a|b)P(b)から、以下の関係が導かれる(ベイズの定理)。

この定理を用いると、b(原因)→a(結果)の確率とaとbの発生確率が分かっているとき、aという結果が発生した時にbが原因である確率を求める事が出来る。
aを引き起こす原因がb以外にc,d...と多数ある場合は、最も確率が高い原因を推定する事が可能となる。

CPT(条件付確率の表)

ベイジアンネットワークの計算では、事前にCPT(条件付確率の表)が与えられる(これが無いと計算出来ない)。
CPTでは、独立して起きる事象(他から→が入っていない事象。ここではBとE)についての発生確率を定義する。
→が入っている事象は、要因が一つの場合は、要因の真偽による発生確率、要因が複数の場合は、各要因の真偽の全組合せについての発生確率を決める(ここでは、P(A|B,E))。
図はベイジアンネットワークの説明で頻出するBurglar-Alarmの例となる。
因果関係はB(泥棒(Burglar)の侵入)→A(警報装置(Alarm)の作動)、E(地震(Earthquake)の発生)→A、E→R(ラジオで報道される)、A→M(マリー(Mary)が電話して来る)の4つとする。

これに対し、以下のCPTが与えられているものとする。

例えば泥棒が入って、同時に地震も来た時に警報が起動する確率は99%となる(残りの1%は、警報装置が壊れている等の場合)。

条件がある場合の同時確率の計算方法

上記の表のように、P(M)はA=1(真)の場合、A=0(偽)の其々の場合について確率が与えられている。
この場合、P(M=1)=P(M=1|A=1)P(A=1)+P(M=1|A=0)P(A=0)となる(Aの真偽双方について計算して和を求める必要がある)。
ここで、P(A=1)とは通常P(A)と書いているところを、A=1である事を明示した表記となる(A=0の場合はP(A)と省略出来ず、P(A=0)と書かなければならない)。
また、ここでP(A)のように、BとEの真偽で値が定義されている場合は、双方の真偽の全ての組合せについての和となる。
P(A=1)=P(A=1|B=1,E=1)P(B=1)P(E=1)+P(A=1|B=1,E=0)P(B=1)P(E=0)+P(A=1|B=0,E=1)P(B=0)P(E=1)+P(A=1|B=0,E=0)P(B=0)P(E=0)となる。
例えば同時確率P(B=1,M=1)は、MはAを経由してBから独立ではないので、P(B=1,M=1)=P(B=1)P(M=1)とはならない。
図のように例えばB、E、A間に何らかの因果関係がある場合、同時確率P(B,E,A)は関係の在り方によってCPTに与えられる数字は異なり、計算するべき式が異なる。

左の場合は、P(B,E,A)=P(A|B,E)P(B|E)P(E)となる。右の場合は、P(B,E,A)=P(A|B,E)P(B)P(E)となる。
B,E,Aの其々について、→が入っていないところは単独の発生確率、→が入っているところは→の元を全て右に並べた条件付確率となる。
P(M=1,A=1,B=1,E=1)は、この場合の因果関係はBとE→A、A→Mの二つなので、以下のような式になる。
P(B=1,M=1,B=1,E=1)=P(M=1|A=1)P(A=1|B=1,E=1)P(B=1)P(E=1)・・・(各命題の真偽値が違う場合は、対応する数字を0にすればよい)。

マリーが電話して来た場合(計算例)

この場合に、泥棒が侵入している確率P(B|M)を求めてみる。CPTには直接の値は無い。
P(a,b)=P(b|a)P(a)が成り立つので、P(B=1|M=1)=P(B=1,M=1)÷P(M=1)となる。
従って、P(M)とP(B,M)の値が分かればよい(マリーが電話をした場合を考えているが、ここでのP(M)は1ではなく、P(B)とP(E)から始まる一般的なP(M)となる)。
P(M)はP(A)が決まらないと求められない。ここではP(A)は、上記の方法でCPTから具体的な値を代入して求める事が出来る。
P(A=1|B=1,E=1)P(B=1)P(E=1)=0.99×0.001×0.002=0.00000198
P(A=1|B=1,E=0)P(B=1)P(E=0)=0.96×0.001×(1-0.002)=0.00095808
P(A=1|B=0,E=1)P(B=0)P(E=1)=0.28×(1-0.001)×0.002=0.00055944
P(A=1|B=0,E=0)P(B=0)P(E=0)=0.01×(1-0.001)×(1-0.002)=0.00997002
結局、P(A=1)=0.00000198+0.00095808+0.00055944+0.00997002=0.01148952と求まる。
これで、P(A=0)=1-P(A=1)も決まる。CPTによってP(M=1)も求まる。P(M=1)=P(M=1|A=1)P(A=1)+P(M=1|A=0)P(A=0)となる。
P(M=1|A=1)P(A=1)=0.88×0.01148952=0.0101107776
P(M=1|A=0)P(A=0)=0.32×(1-0.01148952)=0.3163233536
従って、P(M=1)=0.0101107776+0.3163233536=0.3264341312となる。
P(B=1,M=1)は、B、E、A、Mの各真偽値の組合せ毎の同時確率のうち、B=1、M=1に該当するものの総和を求めればよい。
P(M=1|A=1)P(A=1|B=1,E=1)P(B=1)P(E=1)=0.88×0.99×0.001×0.002=0.0000017424
P(M=1|A=1)P(A=1|B=1,E=0)P(B=1)P(E=0)=0.88×0.96×0.001×(1-0.002)=0.0008431104
P(M=1|A=0)P(A=0|B=1,E=1)P(B=1)P(E=1)=0.32×(1-0.99)×0.001×0.002=0.0000000064
P(M=1|A=0)P(A=0|B=1,E=0)P(B=1)P(E=0)=0.32×(1-0.96)×0.001×(1-0.002)=0.0000127744
従って、P(B,M)=0.0000017424+0.0008431104+0.0000000064+0.0000127744=0.0008576336となる。
これでP(B,M)=0.0008576336、P(M)=0.3264341312と分かったので、P(B|M)=P(B,M)÷P(M)≒0.002627と求まる。
「マリーが電話して来た場合に、泥棒が入った確率は約0.26%」となった。

原因の推定結果が変化する例(ラジオを聞いたら)

上記のCPTを用いて、警報が鳴ったときに、泥棒が入った確率P(B|A)を求める。
P(B=1|A=1)=P(A=1,B=1)÷P(A=1)となる。上記の計算でP(A=1)=0.01148952は分かっている。
P(A=1,B=1)は、P(B,E,A)=P(A|B,E)P(B)P(E)に於いてA=1、B=1の場合の確率の総和となる。
P(A=1,B=1)=P(A=1|B=1,E=1)P(B=1)P(E=1)+P(A=1|B=1,E=0)P(B=1)P(E=0)なので、具体的な値を代入して以下のようになる。
P(A=1,B=1)=0.99×0.001×0.002+0.96×0.001×(1-0.002)=0.00000198+0.00095808=0.00096006
従って、P(B|A)=0.00096006÷0.01148952≒0.08356。「警報が鳴った時に泥棒が入っている確率は約8.4%」となる(少ないように思えるが、泥棒や地震よりも5~10倍発生確率のある「何もない時の警報誤動作」が効いている)。
次に「警報が鳴った後、ラジオの地震速報を聞いた」という現象が加わった場合を計算する。
P(R|E)のCPTは以下のようであったとする(地震速報の誤報確率は0としている)。

この場合の「泥棒が入っている確率」を計算し直してみる。
今度はP(B=1|A=1,R=1)を求める事になる。P(B=1|A=1,R=1)=P(B=1,A=1,R=1)÷P(A=1,R=1)を利用する。
因果関係から、P(A=1,R=1)は、P(A|B,E)P(B)P(E)P(R|E)について、A=1、R=1と固定して、BとEの真偽の組合せについての総和を求めればよい。
P(A=1|B=1,E=1)P(B=1)P(E=1)P(R=1|E=1)=0.99×0.001×0.002×1.00=0.00000198
P(A=1|B=1,E=0)P(B=1)P(E=0)P(R=1|E=0)=0.96×0.001×(1-0.002)×0.00=0.00
P(A=1|B=0,E=1)P(B=0)P(E=1)P(R=1|E=1)=0.28×(1-0.001)×0.002×1.00=0.00055944
P(A=1|B=0,E=0)P(B=0)P(E=0)P(R=1|E=0)=0.01×(1-0.001)×(1-0.002)×0.00=0.00
P(A=1,R=1)=0.00000198+0.00+0.00055944+0.00=0.00056142となる。
P(B=1,A=1,R=1)は、P(A|B,E)P(B)P(E)P(R|E)について、A=1、R=1、B=1と固定してEの真偽についての総和を求めればよい。上記の計算の結果を用いる。
P(A=1|B=1,E=1)P(B=1)P(E=1)P(R=1|E=1)=0.99×0.001×0.002×1.00=0.00000198
P(A=1|B=1,E=0)P(B=1)P(E=0)P(R=1|E=0)=0.96×0.001×(1-0.002)×0.00=0.00
P(B=1,A=1,R=1)=0.00000198+0.00=0.00000198となる。
従って、P(B=1|A=1,R=1)=0.00000198÷0.00056142≒0.0035268となり、「警報が鳴った後、ラジオの地震速報を聞いた時に、泥棒が入っている確率」は0.35%になった。
地震速報が在っても、同時に泥棒が入っている確率は0ではないが、「地震速報」という新たな事象の観測によって、泥棒が原因となる確率は大幅に減った。