インフルエンス・ダイアグラムの構築方法

このチュートリアルは,Huginグラフィカル・ユーザー・インタフェースで小規模なインフルエンス・ダイアグラムを実装する方法を示します.これは, すでにベイジアンネットワークの構築方法からベイジアンネットワークを構築している必要があります.実装しようとしているインフルエンス・ダイアグラムは,インフルエンス・ダイアグラムのチュートリアルでモデルされたものです.これは,農園主Apple Jackが,葉が落ちている彼のリンゴの木に,処置を施すかどうかの決定をすることを支援します.このインフルエンス・ダイアグラムの質的表現を図1に示します.

図 1: Apple Jacks 農園の意思決定に使用されるインフルエンス・ダイアグラムの質的表現.

編集するネットワークを開く

まず,BNの構築方法のチュートリアルで構築してネットワークを,もしそれが開かれていなければ,開く必要があります.その方法は,次のとおりです:

2では,ネットワークが開かれて,Huginグラフィカル・ユーザー・インタフェースが現在,編集モードで動作しています.もじネットワーク・ウィンドウが,実行モードでネットワークを表示しているなら,ネットワークを編集するために編集モードにする必要があります.編集モードでこれえを開いた場合は,何もする必要はありません.

図 2: BNの構築方法のチュートリアルのネットワークを表示する編集モードのネットワーク・ウィンドウ.

ノードをコピー

図1のインフルエンス・ダイアグラムでは,我々が既に持っているものととてもよく似た3つのノードがあります.この場合,Huginグラフィカル・ユーザー・インタフェースは,ノードのグループをコピーして,それらをネットワーク・パネルの他の領域に貼り付けることができます. その方法は,以下のとおりです:

Huginグラフィカル・ユーザー・インタフェースは,新しいノードの名前とラベルを生成します.名前を保持して,ラベルをSick', Dry', Loses' に変更できます("Sick'" は,名前で禁じられているダッシュ記号を含むので名前としては使えません.):

3つのすべてのノードについて上記のステップを実行します.ネットワークは,図3のようになるはずです.

図 3: Sick', Dry', Loses'で拡張されたネットワーク

次のステップは, Sick から Sick' へ,そして Dry から Dry'へ,因果リンクを追加することです:

SHIFT キーを押したままにすると,リンク・ツールを起動せずに,連続的にさらに因果リンクを作成できます.

効用ノードを追加

今のところ,我々が構築したネットワークは,まだベイジアンネットワークです.ここで,これをインフルエンス・ダイアグラムにする最初の変更を行います.その変更は,効用ノードの追加です.我々は追加しようとする効用ノードは,収穫から得られる効用を表現する Harv ノード(図1)です.追加の方法は,次のとおりです:

収穫は,Sick' のステートに依存するので,Sick' から Harvにリンクがあります.このリンクを追加します:

収穫の効用は,表1のように指定されます.

Sick'="sick" Sick'="not"
3000 20000
表 1: U(Harv).

以下のようにして,表1の値をHarv の効用表に入力します:

1つの決定ノードと複数の効用ノード

ここで,決定ノードTreat (図1)を追加します.それは,確率ノードや効用ノードを追加するのと同様な方法で行います:

確率ノードにステートを追加するのと同じ方法で,決定ノードにアクションを追加します:

Treat 決定ノードは,Sick' ノードに影響を持つので:

新しい決定ノードは,木に処置を施すかどうかの決定を表現します. 農園主 (Apple Jack)が処置を施すことを選んだ場合, Cost 効用ノードでモデルされるコストがかかります. Cost ノードは,図2に示す効用表を持ちます.

Treat="treat" Treat="not"
-8000 0
表 2: U(Cost).

ここで,インフルエンス・ダイアグラムに Cost 効用ノードを追加します:

CPTの記入

ノード Sick' と Dry' をコピーしたとき,それらは,Sick と DryのCPTを継承しています.しかしながら,これらのノードは,他のノードの子になるので,それらのCPTはもはや正しくありません.それらの新しいCPTは,表3および表4のように指定されました.

  Treat="treat" Treat="not"
Sick="sick" Sick="not" Sick="sick" Sick="not"
Sick'="sick" 0.20 0.01 0.99 0.02
Sick'="not" 0.80 0.99 0.01 0.98

表 3: P(Sick' | Sick, Treat).

  Dry="dry" Dry="not"
Dry'="dry" 0.60 0.05
Dry'="not" 0.40 0.95

表 4: P(Dry' | Dry).

ここで,このインフルエンス・ダイアグラムは完了し,それは図4のようになります.この時点で,インフルエンス・ダイアグラムを保存しておくとよいでしょう.

図e 4: 完成したインフルエンス・ダイアグラム.

インフルエンス・ダイアグラムのコンパイル

これでインフルエンス・ダイアグラムを試すことができます.まず,インフルエンス・ダイアグラムをコンパイルします:

BNの構築方法のチュートリアルで説明されたエラーに加えて,インフルエンス・ダイアグラムの場合,コンパイラーは,すべての決定ノードで有向パスがあるかどうかを確認します. - もしなければ,エラー・メッセージを返します.インフルエンス・ダイアグラムがコンパイルされない場合,ユーザーはたぶんいくつかの小さな間違いをしています.まず,因果リンクが正しいことを確認するべきです.そして,各ノードのCPT/効用表を見直します.

Apple Jack は何をするべきか?

インフルエンス・ダイアグラムがコンパイルできたら,まず,葉をなくしているJackの木について彼が知ることのみを想像します.そして,彼は何をするのが最も良いのか? これを知るために,次のステップに従います:

図5のようになるはずです.

図 5: Loses="yes"のエビデンスを伝播したインフルエンス・ダイアグラム

処置を行う場合の期待効用は 10234 で,処置を行わない場合の期待効用は 11514 のはずです.これは, Apple Jack が木に処置を行わないのが最善であることを示唆しています.

これでこのチュートリアルを終わります.独自の(制限記憶)インフルエンス・ダイアグラムを構築するために,Hugin グラフィカル・ユーザー・インタフェースを使用できるようになったことでしょう.ただし,大規模で複雑なモデルを再生したい場合は,このチュートリアルよりも他のところを勉強しなければなりません.

LIMIDの詳細については、LIMIDの意味 を参照してください.


Back

翻訳者:多田くにひろ(マインドウェア総研