Huginの製品・サービスはマインドウエア総研により翻訳・提供されています。pict

テーブル・ジェネレータの使用

このチュートリアルは、離散確率ノードの表を設定する方法を簡素化するために、テーブル・ジェネレータ機能がどのように使用されるかを示します。

1から5回までサイコロを振るゲームをしているとイメージしてください。より多く6を出した方がいいとしたら、あなたはどれだけ6を出すことを期待できるかにとても興味があります。

このシチュエーションについて、とても単純なベイジアンネットワークがモデルできます。図 1は、振られたサイコロの数(nDice)が、6の出た回数(nSixes)に影響を持つベイジアン・ネットワークを示します。

dice_bn

図 1: サイコロ問題のBNモデリング 

nDiceはステート 1, 2, 3, 4, 5(あなたが振ることのできるサイコロの目の数)を持ちます。 nSixesはステート 0, 1, 2, 3, 4, 5(6が出ない場合があるので nDiceよりも1つ多い)を持ちます。

さて、ノードのステートを数値で表現したいので、それらのタイプを "番号付き"に変えます。 nDiceを番号付きノードに変える方法は、次のとおりです。

  • マウス・カーソルでnDiceを選択する
  • "編集t" メニューの"ノード・プロパティ"項目を選択する
  • "ノード" タブ (それがまだ選択されていないなら)を選択する
  • "タイプ" のドロップ・ダウン・ボックスから"番号付き"を選択する
  • "OK"をクリックする

そして、nSixesも番号付きに変更します!

ノード編集パネルの一番左の列のステートの番号とステート値を編集 (最初のチュートリアルでたぶんやったように)できます。ただし、ノード・プロパティ・ダイアログでもやれます。

  • マウス・カーソルでnDiceを選択する
  • "編集" メニューの"ノード・プロパティ"項目を選択する
  • "ステート" タブを選択する
  • ステート一覧で最初のステート(もしどのようなステートも追加っしていなければ、そのステートのみ)をクリックする
  • "1"のタイピングを開始 - これはステート・リストの下の編集ボックスにフォーカスを移動する
  • 右側のボタン・リストの"名前変更"ボタンを押す
  • 編集ボックス内をクリックして"2"をタイプする
  • "後に追加"ボタンを押す
  • ステート値を入力し続ける(そして、ステート値をタイプしてから実行キーを押すと、ボタン・リストの最後のボタンが有効になるので、自動的に"後に追加"ボタンを使用することになる)
  • すべてのステートをタイプしてから、 "OK"を押す

そして、nSixesについても同様に行ないます(ステート"0"で始まることを忘れないように)。

図 2 は、nDiceのステート値を入力した後のノード・プロパティ・ダイアログを示します。

dice_states

図 2: nDiceのステート値の入力 

ノード編集パネルのnSixesの条件付き確率表は、図 3に示すようになります。

sixes_table

図 3: nSixesの条件付き確率表 

この表はかなり大きく、手作業で入力すると結構たいへんです。特定の数が出る確率は、あなたが振るサイコロの数に依存する2項分布なので、2項分布を計算するツールも使うことでしょう。

:しかしながら、Hugin GUIは、あなたが指定した数式から自動的に表を生成することができます。

  • 現在の選択ノードとしてnSixesを選択する(それがノード編集パネルに現れるように)
  • "表"メニューから"数式"を選択 (表の様相はドラマティックに変化することに注意 - 今1つのセルだけが表示されている)
  • nSixesの表の単一のフィールド内をクリックする
  • "表"メニューから"数式を作成"を選択する。これは "数式ビルダー"ダイアログを開く。
  • "関数カテゴリ"リストで"離散分布"を選択し、 "関数名"リストで"2項"を選び, そして"OK"を押す。これは数式ビルダーの最初のダイアログを閉じて、2項分布の引数を準備する別のダイアログを開く
  • 引数 "n"の編集ボックスの内側をクリックする
  • 下部の "親"リストで nDiceを選択し、"挿入"を押す
  • 引数 "p"の編集ボックスで "1/6"をタイプする
  • "OK"を押す

すると、nSixes 表の単一のフィールドに数式"Binomial (nDice, 1/6)"を得るはずである。これを図 4に示す。

sixes_expr

図 4: nDiceに基づく2項分布を指定したあとのnSixesの数式表

テーブル・ジェネレータを用いた小さなベイジアンネットワークの構築のチュートリアルをこれで終わります。これをコンパイルして実行してみてください(nDiceノードとpropagate の値を変えてみてください)。ネットワークをコンパイルしてから、編集モードに戻って、生成された表を見ることもできます: nSixesノードを選択して、"表"メニューから"手動"を選択します。数式が破損しているという警告が出ますが、ここではそれは問題になりません。それらは望むとおりに再構築できます。