1. 概要

毎日、1つまたはいくつかの理由で多数のイベントが発生します。 ある出来事を観察した後、好奇心旺盛な人間として、その特定の形で何かが起こった理由を理解したいと思います。 そのためには、まず、イベント、その原因、およびその結果をモデル化できる必要があります。 このモデルを使用して、観測されたイベントの前に発生したイベントを予測または推測することができます。

このようなイベントの世界をモデル化して予測する1つの方法は、ベイジアンネットワーク(BN)です。 単純ベイズ分類器はBNの簡単な例です。

このチュートリアルでは、BNを定義する方法、特定の関心のある世界をモデル化する方法、およびBNを使用して推論を行う方法について説明します。

2. 動機

私たちの世界でイベントがあると想像してみましょう。 これらのイベントは世界の変数になります。 次に、各イベントが値を取ることができると仮定しましょう。 たとえば、コイントスを考えると、結果はバイナリ(表または裏)になりますが、イベントがサイコロを投げる場合、結果は値を取ることができます。

このような世界をモデル化する1つの方法は、これらのイベントのさまざまな組み合わせすべてのリストを含むテーブルを作成することです。 ただし、このモデルには2つの大きな問題があります。 1つ目は、変数がそれぞれ値を持つ場合、テーブルに行が含まれることです。 これはいくつかの変数で管理できるかもしれませんが、変数が多数ある場合は維持するのが非常に困難になります。

2番目の問題は、この巨大なテーブルからいくつかの情報を抽出する(予測または推論を実行する)場合に発生します。 不可能ではないにしても、変数間の関係を見つけて、それらについて何かを尋ねるのは簡単ではありません。

ベイジアンネットワーク(BN)を使用すると、関心のある世界のコンパクトなモデルを構築できます。次に、確率の法則とベイズの法則を使用して、特に世界について質問します。そこからいくつかの知識を抽出します。 上記の表の実際の例と、BNを使用して世界をモデル化する方法を見てみましょう。

3. 例

地震(e)強盗(b)アラーム(a)の3つのイベントがある世界をモデル化するとします。 この世界をモデル化することにより、イベントが発生した場合、質問をしたり、この世界の他のイベントについての真実を推測したりできます。 数学的には、世界をモデル化することは、世界のすべてのイベントにわたる同時分布を意味します。

この世界についていくつかの予備知識があると仮定しましょう。 つまり、は他の両方のイベントに依存します。つまり、強盗や地震の場合、アラームが鳴ります。

この例の同時分布をモデル化する簡単な方法は、考えられるすべての状況を表にリストすることです。

次に、この表に基づいて、「アラームが聞こえた場合の強盗の確率はどれくらいですか?」などの質問をすることができます。 または「強盗の周辺確率はどれくらいですか?」

ただし、ベイジアンネットを使用して、この世界をコンパクトにモデル化できます。

ベイジアンネットでは、ノードはイベントであり、エッジは依存関係を表します。 この例では、アラームは強盗と地震に依存しているため、これら2つのイベントからアラームへの矢印があります。 このような図とこれらのイベントの同時確率の定義(次のセクション)を使用して、上記のような質問に答えることができます。

4. ベイジアンネットワーク

このセクションでは、ベイジアンネットワークを正式に定義し、サブネットワークの一貫性、説明するプロパティ、マルコフブランケットなどのいくつかの特性について説明します。

4.1. 意味

ベイジアンネットワークは確率的グラフィカルモデルの一種です。イベントがあるとしましょう。 それらを確率変数、、、…、で表すことができます。 次に、ベイジアンネットを有向非巡回グラフ(DAG)として定義します。ノードはイベントを表し、エッジはイベント間の依存関係を表します。 各イベントにはローカル条件付き分布があり、グラフ全体がすべての変数の同時分布を表します。 この同時分布は、ネットワーク内のすべてのローカル条件付き分布の積であると定義します。

   

4.2. サブベイジアンネットワークの一貫性

BNの興味深い特性は、ノードのすべての親の出現が子の出現を保証することです。 数学的に:

   

これにより、BNのサブネットワークの一貫性が保たれます。つまり、ベイジアンネットワークでもあります。上記の例の alarm イベントをマージナル化し、計算することで、これを示すことができます。 強盗地震の同時分布:

   

以来

   

我々が持っています

   

これは、2つのイベントのBNの定義であり、グラフィック表現は次のとおりです。

4.3. 説明する

上記の例では、イベント( alarm )の2つの原因(burglaryearthquake)があります。 アラームがあるかどうかを知らなくても、2つの原因は互いに独立しています。つまり、一方を知っていても、もう一方に影響を与えることはありません。 ただし、アラームが鳴ったことがわかっている場合は、原因の1つを知っていると、他の原因の可能性が低くなります。 この現象は、BNの特性を説明するものです。

たとえば、上記の例が。であると仮定します。 したがって、があります。 さて、アラームを聞いた場合、強盗がそれを引き起こす確率はどれくらいですか? つまり、を計算したいのです。 条件付き確率の規則によると:

   

を計算するために、それが発生する状況を考慮することができます。 警報は、強盗が発生して地震が発生しない場合()、またはその逆の場合()、あるいはその両方が発生した場合()にオフになります。 その結果、次のようになります。

   

その結果、

   

ただし、地震が発生したことがわかっている場合は、次のようになります。

   

   

   

したがって:

   

結果として:

   

これは、原因の1つを知ることで、他の原因の確率が低下することを示しています。

4.4. マルコフブランケット

ノードが与えられると、マルコフブランケットはその親、子、およびその子の親のセットです。 言い換えると、マルコフブランケットはノードをネットワークの他の部分から分離します。 その結果、すべてのノードは、そのマルコフブランケットが与えられた他のすべてのノードから独立します。 たとえば、次のグラフでは、のセットはノードDのマルコフブランケットです。

5. ベイジアンネットワークの推論アルゴリズム

推論は、モデルまたはネットワークに関する質問(クエリ)を行うことです。 そのために、使用できるアルゴリズムがいくつかあります。 ここでは、これらのアルゴリズムの3つについて説明します。

5.1. フォワードバックワードアルゴリズム

隠れマルコフモデル(HMM)は、オブジェクト追跡などのシーケンシャルイベントのモデリングに適したベイジアンネットワークの特殊なケースです。 HMMでは、非表示と監視の2種類の状態を設定できます。 矢印は、遷移確率で1つの状態から次の状態への遷移を示します。 また、放出確率を使用して、非表示状態を観測状態に接続することもできます。 観察された状態を考慮して、HMMの隠れた状態について調べたいと思います。

HMMの確率的推論は、観測されたデータを前提として、隠れた状態の割り当てを見つけることです。 そのために、動的計画法を使用して最初から最後までのパスの重みを計算する前後アルゴリズムを使用できます。重みが目的であることに注意してください。最適化するのが好きです。 さらに、セクション4で説明したBNの同時分布の定義と同様に、局所的な重みまたは確率の積として定義します。 パスの重みを計算するには、ラティス表現を使用できます。

上記のラティスでは、3つの隠れた状態があり、各状態が2つの値を取ることができると想定しています。 次に、すべての状態について、次の式を使用して前方重みと後方重みを計算できます。

フォワードウェイト:

   

後方重量:

   

最終的に、状態を通過するパスフォームの開始から終了までの重みは次のようになります。

   

5.2. 粒子フィルタリングアルゴリズム

前後方向アルゴリズムは、確率的推論を行うための正確なアルゴリズムでした。 ただし、各状態がとることができる値の数が増えると、これは問題になる可能性があります。 結果として、近似アルゴリズムに頼らなければなりません。

粒子フィルタリングは、拡張とプルーニングの同様のステップがあるという点でビームサーチに似た近似アルゴリズムです。また、低速で貪欲であるなど、ビームサーチの問題のいくつかを解決しようとします。

粒子フィルタリングは、提案重み、およびリサンプルの3つのステップで構成されます。 上記のHMMの例があり、すでに2つの隠れ状態またはパーティクルを選択していると仮定します。 ここで、もう1つのパーティクルの値を選択します。 提案されたステップでは、最小の粒子から新しい粒子への遷移確率に基づいて、既存の粒子を拡張します。

新しく選択された候補者は、観察された状態になります。 次に、重みステップで、新しい証拠を引き起こすさまざまな提案を持つ3つの状態の重みを計算します。 これらは、候補を剪定するためのリサンプリングステップで使用する重みです。 リサンプリングステップでは、各粒子の重量に基づいて、その分布とは無関係にK回サンプリングします。 ビームサーチでは、上位K個の粒子を選択することに注意してください。 ただし、粒子フィルタリングでは、分布からK回独立してサンプリングします。 リサンプリングは、重みの大きいパーティクルに高い確率を与えますが、ウェイトの小さいパーティクルもドローに表示される可能性があります。

粒子フィルタリングのアルゴリズムは次のとおりです。

5.3. ギブスサンプリング

ギブスサンプリングは、確率分布からサンプルを抽出するもう1つの方法です。 ギブスサンプリングでは、最初にランダムな値を非表示の状態に割り当てます(つまり、ランダムな完全な割り当て)。次に、すべての変数を1つずつ調べ、現在の変数を除いてすべての変数を同じに保ちます。 。 次に、その変数に対して、変数の積を最大化する値を選択します。 収束するまでこれを繰り返します。

確率的推論の設定でのギブスサンプリングのアルゴリズムは次のとおりです。

6. ベイジアンネットワークでの学習

質問をしたり、BNを使って推論したりするには、ローカルの条件付き分布を知る必要があります。 したがって、これらの分布は私たちのネットワークのパラメータであると言え、それらを学習する方法を見つける必要があります。 結果として、以前の分布を計算するためのトレーニングデータを取得または収集する必要があります。 次に、データからパラメータを学習するためのいくつかのアルゴリズムを考えることができます。 このセクションでは、いくつかのアルゴリズムについて説明します。

6.1. 教師あり学習

イベントが発生した回数を数え、その数を正規化するだけで、BNのパラメーターを学習できます。これを行うアルゴリズムは次のとおりです。

上記のアルゴリズムは、変数の積を最大化するため、ベイジアンネットワークの最尤法に対応します。

6.2. ラプラススムージング

私たちのアルゴリズムはイベントの発生回数に基づいて機能するため、トレーニングデータにいくつかのイベントがない場合、問題が発生する可能性があります。それらの確率はゼロに設定され、モデルは過剰適合します。 たとえば、コイントスでは、コインを5回投げた後、頭を5回見ると、最尤法によって尾の確率がゼロに設定されます。 その結果、次のフリップの予測は常に向かっています。

この問題を解決するために、ネットワーク内で発生する可能性のあるすべてのイベントに事前カウント(ラムダ)を与えることができます。 それは彼らの確率が決してゼロにならないことを確実にするでしょう。 この方法の名前はラプラス平滑化であり、追加のカウントは問題によって異なる場合があります。 ただし、通常は1に設定できます。

6.3. 期待値最大化を伴う教師なし学習

これまでのパラメータの学習では、変数の割り当てが完了していることを前提としています。 ただし、一部の値が欠落していることがよくあり、部分的な割り当てしかありません。 この場合、最初に、欠落している値を推定する必要があります。 次に、完了した割り当てから学ぶことができます。

期待値最大化(EM)アルゴリズムを使用すると、欠落している値を見つけてネットワークパラメーターを学習できます。 EMアルゴリズムは、EステップとMステップの2つのステップで構成されています。 Eステップでは、前のセクションで説明した推論アルゴリズムの1つを使用して、隠れた変数を推論します。 その後、Mステップで、最尤推定と必要に応じてラプラス平滑化を使用してパラメーターを見つけます。

EMアルゴリズムは、局所最適をもたらします。 ただし、グローバル最適化に至る可能性を高めるために、ランダム初期化を使用できます。

7. 結論

この記事では、ベイジアンネットワーク(BN)について詳しく説明しました。 まず、実際の例で、BNの使用を動機付けました。 次に、それらを数学的に定義し、観察される可能性のあるイベントの背後にある隠れた理由を理解するために、これらのモデルをどのように使用できるかを学びました。 さらに、BNでのパラメータ学習の方法についても説明しました。 最後に、正確で近似的なアルゴリズムを使用して推論を行う方法を学びました。