:: DEVELOPER ::
ベイジアンネットワークを用いたHugin 知識ベースの構築
ベイジアンネットワーク (BN) は、不確実性を含むドメインをモデルするために、いくつかの方法で用いられる。過去には、因果確率ネットワークという語が用いられてきた。BNは、各ノードが確率変数を表す非循環有向グラフ(directed
acyclic graph: DAG)である。各ノードは、それが表す確率変数の状態(ステート)と条件付き確率表(conditional
probability table :CPT)またはより一般的用語では条件付き確率関数(conditional
probability function :CPF)を持つ。ノードのCPTは、その親の状態が与えられたときに、そのノードが特定の状態にある確率を持つ。以下の事例は、これが意味するすべてを実演する。
リンゴの木の例
この事例では、ドメインはJack Fletcher(彼をアップル・ジャックと呼ぼう)が持つ小さなリンゴ農園である。ある日、アップル・ジャックは、彼の最高のリンゴの木が葉を失くしていることに気づいた。さて、彼はなぜこんなことが起きているのかを知りたく思った。彼は、(日照りによって)もし木が乾いているのなら、それは不思議ではないということを知っている。一方、葉が失くすことは、病気を示しているかもしれない。
このシチュエーション(状況)は、図1のようなBNでモデルされる。このBNは3つのノードからなる:Sick(病気)、Dry(乾燥)、Loses(落葉)。これらはすべて2つの状態のうちの1つの状態をとる:Sick
は "sick" または "not"のどちらか - Dry は"dry"
または "not" のどちらか- Loses は "yes" または"no"のどちらか。ノードSickは、状態"sick"にあることによってリンゴの木が病気であることを知らせる。それ以外は、状態"not"である。ノードDry
とLoses は、同様に、木が乾燥しているか、木が葉を失くしているかをそれぞれ知らせる。
 | | 図 1: アップル・ジャック問題のドメインを表現するBN |
図1のBNは、SickからLosesへと Dry からLosesへの因果依存性があることをモデルしている。これは2つの矢印で表現されている。
あるノードA から別のノードBへ因果依存性がある場合、 Aがある確かな状態にあるとき、これはBの状態に影響を持つことが期待される。BNで因果依存性をモデルするとき注意深くなければならない。ときどき、どの方向の矢印を持つべきなのかがはっきりしない。たとえば、我々の事例では、木が病気であるとき、その葉が落ちるということが木に起きるであろうから、我々は
SickからLosesへの因果の矢印があると言う。しかし、木がその葉を失くすとき、それは病気かも知れないので、矢印は向きを変えるだろうか?
いや、それはできない!葉を失くす原因が病気であって、葉を失くすことが病気の原因ではない。
図1で、我々はBNのグラフィカル表現を見た。しかしながら、これは我々がBNの質的表現と呼ぶことだけである。我々がこれをBNと呼ぶには、量的表現を指定する必要がある。
BNの質的表現は、ノードのCPTの集合である。表1、表2、表3 はm図1のBNの3つのノードのCPTを示す。
| Sick="sick" |
Sick="not" |
| 0.1 |
0.9 |
|
| 表 1: P(Sick). |
| Dry="dry" |
Dry="not" |
| 0.1 |
0.9 |
|
| 表 2: P(Dry). |
| |
Dry="dry" |
Dry="not" |
| Sick="sick" |
Sick="not" |
Sick="sick" |
Sick="not" |
| Loses="yes" |
0.95 |
0.85 |
0.90 |
0.02 |
| Loses="no" |
0.05 |
0.15 |
0.10 |
0.98 |
|
| 表 3: P(Loses | Sick, Dry). |
3つの表はすべて、ノードがその親ノードの状態によって、特定の状態にある確率を示すが、Sick
と Dryは親ノードを持たないので、表1と表2はどのようにも条件付けされないことに留意せよ。
この事例で我々が示したことは、とても単純なBNがどのように構築されるかの説明である。Huginの開発環境は、このようなネットワークを構築するためのツールを提供する。すでに構築されたネットワークがある場合、状態がわかっているいくつかのノードにエビデンスを入れて、このエビデンスに対応する他のノードの新しい確率を計算するために、それを用いることができる。リンゴの木の事例では、木の葉が失われていることをあなたが知っていると仮定しています。あなたはLosesノードで状態"yes"を選択して、このエビデンスを入力します。それから、ノードSickの状態
"sick"の確率によって木が病気である確率を読むことができ、 ノードDryの状態
"dry"の確率によって木が乾燥している確率を読むことができる。
Hugin開発環境について、さらに学習したい場合は、Hugin GUIのイントロダクションの最初のチュートリアルに進むことをお薦めします。Hugin
GUIを用いてリンゴの木のBNが構築されています。効用ノードや決定ノードによってBNを拡張したインフルエンスダイアグラムのイントロダクションにも進むことができます。
|